Servlet
1.1什么是Servlet
(Server Applet)服务器端小程序。
为什么使用Servlet ?因为客户端(html或者jsp无法直接访问java文件,而我们需要客户端请求java文件。所以,需要特殊的java文件,即Servlet。
特点:①可以被页面直接请求,即是URL特性(页面可以直接访问、浏览器也可以直接访问)。②全类名(让Servlet容器、JSP容器、Web容器、Web服务器创建Servlet对象)。
1.2tomcat和servlet的关系
Tomcat是web应用服务器,是一个Servlet/JSP容器。Tomcat作为Servlet容器。负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户。而Servlet是一种运行在支持Java语言的服务器上的组件。Servlet最常见的用途是扩展Java Web服务器功能,提供非常安全的,可移植的,易于使用的CGI替代品。
1.3创建Servlet步骤
- 声明javax.servlet.Servlet接口的实现类
- 在web.xml中注册这个实现类
1.4Servlet的生命周期
Servlet生命周期:Servlet从被创建到销毁(消亡)的过程,称之为Servlet生命周期。
-
构造器
执行时机:第一次接收请求时执行。
执行次数:在整个生命周期中执行一次。
-
init()
执行时机:第一次接收请求时执行(在构造器之后执行)。
执行次数:在整个生命周期中执行一次。
-
service()
执行时机:每次接收请求时执行。
执行次数:在整个生命周期中执行多次。
-
destroy()
执行时机:关闭服务器时执行。
执行次数:在整个生命周期中执行一次。
版本二
第一次请求Servlet时,服务器(Web服务器、Servlet容器)创建Servlet对象,之后会调用init()方法进行初始化操作(为形参赋值操作),最后调用service()方法处理请求并做出响应。以后再次请求时,只会调用service()方法处理请求(不会调用构造器&init())。处理完所有请求后,关闭服务器时,调用destroy()方法销毁Servlet。
1.5Servlet中的ServletConfig与ServletContext
1.5.1ServletConfig
代表了Servlet的配置信息,主要作用为:
- 获取当前的Servlet名称
- 获取当前Servlet初始化参数(初始化参数配置在web.xml的Servlet标签中)
- 获取ServletContext对象
1.5.2ServletContext
代表当前Servlet上下文(当前Web应用),别名为:application。主要作用为:
- 获取当前上下文的初始化参数
- 获取真实路径
- 域对象
1.6创建Servlet的方式:继承HttpServlet
loginServlet:继承了HttpServlet:GenericServlet:Servlet
1.7request和response
1.7.1request
- 类型为:HttpServletRequest
- 定义:相当于客户端向服务器端发送的请求报文,该对象由浏览器创建,并以参数的形式传递给都Get()或doPost()
- 作用:
-
获取请求参数:request.getParameter()
-
获取项目的虚拟路径:request.getContextPath()
-
转发路径(跳转路径):request.getRequestDispatcher().forward(request,response);
-
域对象
-
获取请求报文中请求头中的信息:request.getHeader()
-
获取请求协议
request.getScheme():获取请求协议
request.getServerName():获取请求服务器名称
request.getServerPort():获取请求服务器端口号
1.7.2response
- 类型为:HttpServletResponse
- 定义:相当于服务器向客户端做出的响应报文,该对象由服务器创建,并以参数的形式传递给doGet()
- 作用:
-
响应函数(数据:文本|html)
response.getWriter().write();
-
重定向(跳转路径)
response.sendRedirect();
1.7.3转发与重定向的区别
-
转发地址栏不变,重定向地址栏改变
-
转发可以携带request对象,重定向不能
-
转发客户端只请求一次,重定向向客户端请求两次
-
转发可以访问WEB-INF下资源,重定向 不能
WEB-INF:web应用的私密目录,只能由服务器访问,客户端不能直接访问