《JSP/Servlet学习笔记》html
《JSP&Servlet学习笔记》第2版java
Chapter1 Web应用程序简介web
学习目标:数据库
1.1 Web应用程序基础知识浏览器
HTML,HTTP,URL和文字编码。安全
HTML服务器
HTML基础知识:架构
http://www.w3schools.com/html/default.aspapp
HTTP两个基本和极其重要的属性:框架
1.基于请求和相应模型
2.无状态通讯协议(不会维护有关客户端的状态)
浏览器使用HTTP的几种请求方法:
GET,POST,HEAD,PUT,DELETE
使用GET方式发送请求,浏览器的地址栏会出现请求参数信息。
GET请求能够发送的请求参数长度有限,太大量的数据使用POST方式。
POST方式
地址栏不会出现请求参数。
你的请求若是会改变服务器的状态,则应该使用POST请求的方式。
java.net.URLEncoder
Web容器的做用:剖析和转换通讯协议,转换成JSP/Servlet中可用的Java对象。
在容器的世界里,真正负责请求、相应的是Servlet。
Web容器为每一个请求分配一个线程。启动多个线程负责处理多个请求。
线程安全问题。
深刻理解Web容器的行为。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
HttpJspBase -> HttpServlet
控制器知道哪一个视图操做对应哪一个模型。
Chapter2 编写与设置Servlet
2.1 第一个Servlet
javax.servlet.http.HttpServlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType(“text/html;charset=UTF-8”);
PrintWriter out = response.getWriter();
String name = request.getParameter(“name”);
}
容器收到HTTP请求后,收集HTTP请求中的信息,并分别建立表明请求与响应的Java对象。
http://localhost:8081/FirstServlet/lisuxuan
2.2 在HelloServlet以后
Servlet接口,GenericServlet类,HttpServlet类定义有关HTTP的相关方法。
将HTTP相关服务流程定义在HttpServlet的service()方法中。
使用@WebServlet
Servlet3.0中:
@WebServlet{
Name=”hello”,
urlPatterns={“/hello.view”},
loadOnStartup = 1
}
当应用程序启动后,事实上并无建立全部的Servlet实例。容器在首次请求须要某个Servlet服务时,才将对应的Servlet类实例化、进行初始化操做。
使用web.xml
Web.xml中的设置会覆盖Servlet中的标注设置,可使用标注做为默认值,而Web.xml来做往后更改设置值之用。
请求时的URL只是个逻辑名称,好比/Hello.view,并非服务器上真的有个实体文件。而是会由Web容器对应到实际处理请求的文件或者程序实体名称。
文件组织与部署
关于WAR文件:容器若是发现webapps目录中有WAR文件会将其解压缩,并载入Web应用程序。
2.3 进阶部署设置
Servlet3.0新增的部署设置功能。
HttpServletRequest.getRequestURI()
contextPath环境路径:容器挑选Web应用程序的依据。
HttpServletRequest.getContextPath()取得环境路径。
有关请求的相关信息,均可以使用这个对象来获取。
Servlet路径
getServletPath()
2.3.2Web目录结构
Web应用程序存在一个特殊的/WEB-INF目录,此目录中存在的资源项目不会被列入应用程序根目录中可直接访问的项。
2.3.3使用web-fragment.xml
Servlet3.0中,JAR文件可用来做为Web应用程序的部分模块。
web-fragment.xml必须放置在JAR文件中的META-INF目录中。
Chapter3 请求与响应
3.1 从容器到HttpServlet
Web容器是Servlet/JSP惟一认识的HTTP服务器。
了解Web容器如何生成、管理请求和响应对象,为什么设计出这样的API架构。
3.1.1 Web容器作了什么
建立Servlet实例,完成Servlet名称注册及URL模式的对应。
在请求来到时,Web容器会转发给正确的Servlet来处理请求。
Web容器提供的功能:有关请求/响应对象的生命周期管理(请求/响应对象的建立与销毁)
3.1.2 doXXX()方法
能够阅读Servlet标准API的源代码。
3.2 关于HttpServletRequest
String username = request.getParameter(“name”);
Integer.parseInt();
String[] values = request.getParameterValues(“param”);
Enumeration<String> e = getParameterNames();包括全部请求参数名称
While(e.hasMoreElements()){
String param = e.nextElement();
}
3.2.2请求参数编码处理
1.POST请求参数编码处理
HttpServlet.getCharacterEncoding()
ContextType:text/html;charset=UTF-8
POST和GET的参数编码处理方式不一样:
3.2.3 getReader()/getInputStream()读取Body内容
HttpServlet上的getReader()方法,取得一个BufferedReader对象。经过该对象,能够读取请求的Body数据。
java.io.BufferReader
HTTP“文件上传”机制解析:
3.2.4 getPart(),getParts()取得上传文件
3.2.5 使用RequestDispatcher调派请求
RequestDispatcher dispatcher = request.getRequestDispatcher(“some.do”);
或者经过ServletContext的getRequestDispatcher()或getNameDispatcher()
经过请求范围属性共享数据。
Forward方法 P82
3.3 关于HttpServletResponse
setContentType()
getWriter()
setHeader(),addHeader()
sendRedirect(),sendError();
getOutputStream()取得ServletOutputStream对象
设置响应标头、缓冲区
3.3.3 使用getOutputStream()输出二进制字符
getOutputStream()取得ServletOutputStream对象
3.3.4 使用sendRedirect(),sendError()
response.sendRedirect(“http://openhome.cc”)
3.4 综合练习 P93
3.5 重点复习 P100
Chapter4 会话管理 P105
4.2 HttpSession会话管理
Chapter5 Servlet进阶API、过滤器与监听器 P133
学习目标:
了解Servlet生命周期
使用ServletConfig与ServletContext
各类监听器的使用
实现Filter接口开发过滤器
5.1 Servlet进阶API
对于每一个Servlet的设置信息,Web容器会为其生成一个ServletConfig做为表明对象。从该对象能够取得Servlet初始参数,以及表明整个Web应用程序的ServletContext对象。
5.1.1 Servlet、ServletConfig与GenericServlet
5.1.2 使用ServletConfig
ServletConfig:个别Servlet的设置信息表明对象。
getInitParameter() - getInitParameterNames()方法,能够取得设置Servlet时的初始参数。
设置个别Servlet的初始参数P136
5.1.3 使用ServletContext
5.2 应用程序事件、监听器 P142
Chapter6 使用JSP
Chapter7 使用JSTL
Chapter8 自定义标签
Chapter9 整合数据库
Chapter10 Web容器安全管理
Chapter11 JavaMail入门
Chapter12 从模式到框架