一.主要内容
1.Servlet
1.概念
2.步骤
3.执行原理
4.生命周期
5.Servlet 3.0 注解配置
6.Servlet的体系结构
Servlet -- 接口
丨
GenericServlet 抽象类
丨
HttpServlet -- 抽象类
- GenericServlet:将Servlet 接口中其他的方法做了空实现,只将service()方法作为抽象。
将来定义Servlet类时,可以继承GennericServlet,实现service()方法 - HttpServlet:传统意义上service 的判断请求方式
-
String method=req.getMethod();
-
if("GET".equals(method)){
-
//get 方式获取数据
-
}`else if ("POST".equals(method)){
-
//post 方式获取数据
-
}` 实现步骤:1.定义类继承HttpServlet 2.复写doGet,doPost方法
2.HTTP协议
概念:超文本传输协议
传输协议:定义了,客户端和服务器端通信时,发送数据的格式
特点:1.基于TCP/IP的高级协议
2.默认端口号80
3.基于请求/响应模型的:一次请求对应一次响应
4.无状态的:每次请求之间都是相互独立的,不能交互数据
3.Request
*请求消息数据格式:
1.请求行
请求方式:HTTP协议中有七种请求方式,常用的有两种:POST,GET
GET:1.请求参数在请求行中,在url后
2.请求的url长度有限制
3.不太安全
POST:1.请求参数在请求体中
2.请求的url长度没有限制
3.相对安全
2.请求头
请求头名称:请求头值(键值对格式)
3.请求空行
空行
4.请求体(正文)
*响应消息数据格式
request功能
1.获取请求消息数据。
1.获取请求行数据
方法:
1.获取请求方式:get
String getMethod()
(*重点) 2.获取虚拟目录:/xxx
String getContextPath()
3.获取Servlet路径:/xxx
String getServletPath()
4.获取get方式请求参数:name=zhangsan
String getQueryString()
(*重点)5.获取请求url:/xxx/xxx
String getRequestURI() 返回的是/xxx/xxx
String getRequestURL() 返回的是http://localhost/xxx/xxx
6.获取协议及版本:HTTP/1.1
String getProtocol()
2.获取请求头数据
方法:(*重点掌握)String getHeader(String name),返回字符串
Enumeration<String>getHeaderNames():获取所有的请求头名称
3.获取请求体数据
请求体:只有post请求方式,才有请求体,在请求体中封装了post请求的请求参数
步骤:
1.获取流对象
1.1BufferedReader getReader(),获取字符输入流,只能操作字符数据 // 高效的,带有缓冲区,带有ReadLine方法
2.2 ServletInputStream getInputStream():获取字节输入流,可以操作所有类型的
2.再从流对象中拿数据
4.其他功能
1.获取请求参数通用方式
1.1 String getParameter(String name):根据参数名称获取值 username=zhangsan & password=123
1.2 String [] getParameter(String name):根据参数名称获取参数值的数组 hobby=xx & hobby=game,多用于复选框
1.3 Enumeration<String> getParameterNames():获取所有请求的参数名称
1.4 Map<Sting,String> getParameterMap(): 获取所有参数的map集合 键值对
2.请求转发:
2.1 步骤:
1.通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2.使用RequestDispatcher对象来进行转发:forward(ServletRequest request,ServletResponse response)
2.2 特点:
1.浏览器地址栏路径没有发生变化
2.只能访问当前服务器内部项目,只能转发到当前服务器内部资源中
3.转发是一次请求
3.共享数据
*域对象:一个有作用范围的对象,可以在范围内共享数据
*request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
方法:1.void setAttribute(String name,Object obj):存储数据
2.Object getAttribute(String name):通过键获取值
3.void removeAttribute(String name):通过键来移除键值对
4.获取ServletContext
*ServletContext getServletContext()
4.Servlet的相关配置
1.urlpartten:Servlet访问路径
1.一个Servlet可以定义多个访问路径:@WebServlet({"/d4","/dd4","/ddd4"})
2.路径定义规则:
1./xxx
2./xxx/xxx:多层路径,目录结构
3.*.do
5.快速入门
1.创建javaEE项目
2.定义一个类,实现Servlet接口
public class ServletDemo1 implements Servlet
3.实现接口中的抽象方法
4.配置Servlet
执行原理:
1.当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
2.查找web,xml文件 是否有对应的标签体内容与资源路径一致。
3.如果有,则找到对应的对应的全类名
4.tomcat会将字节码文件加载进内存,并且创建其对象
5.调用其方法
Servlet的方法:
1.init方法,初始化方法,在Servlet被创建时,执行,只会执行一次
2.service()方法,提供服务的方法,每次Servlet被访问时执行此方法,可以执行多次
3.destory方法,销毁方法,在Servlet正常关闭时 执行,执行一次
Servlet 3.0注解配置
1.创建JAVAEE项目时,选择Servlet的版本3.0以上,可以不用创建WEB.XML
2.定义一个类,实现Servlet接口
3.复写方法
4.在类上使用@WebServlet注解,进行配置
- @WebServlet(“资源路径”)