四、JavaWeb之servlet详解

1.servlet的简介
servlet运行在服务器端,由web服务器负责加载的,独立于平台各协议的Java应用程序。它使用最多的协议是HTTP协议,HTTP协议的特点是每次连接只能处理一个请求。处理过程为:建立连接,发送请求,提供服务,发送响应,关闭连接。
servlet具有跨平台、可移植等特点。
2.servlet的生命周期
servlet的生命周期主要包括四个过程:
(1)加载和实例化
加载和实例化由servlet容器来实现,加载servlet容器后,容器会通过Java的反射机制来创建相应的servlet实例。
(2)初始化
当servlet实例创建完毕后,会调用init()方法执行一些初始化操作,用来初始化该servlet对象。初始化的目的是为了先完成一些初始化操作。每个servlet实例只调用一次init方法。
(3)执行
当客户端请求到来后,servlet容器会针对该请求创建一个servletRequest对象和servletResponse对象,然后servlet容器会自动调用service()方法来响应客户端的请求。将servletRequest对象和servletResponse对象传给service方法。
(4)销毁
当servlet实例从web容器中移除时,需要调用destroy()方法,让该实例释放掉他使用的资源。
在servlet整个生命周期中,init和destroy只执行一次,service方法的执行次数取决于被客户端的请求数。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

//生命周期相关方法
public class HelloServlet extends HttpServlet {
           private  ServletConfig config;
           public ServletConfig getServletConfig(){
                 return config;
           }
           public void init(ServletConfig config)throws ServletException{
                  this.config=config;
        System.out.println("初始化!"); 
           }
           Public void service(ServletRequest req,ServletResponse res)
    throws ServletException,IOException{
        PrintWriter out = res.getWrite();
        out.println("Hello world");
        out.close();
           }
           public void destroy() {
    super.destroy();
    System.out.println("释放资源!");    }
}

这里写图片描述
3.servlet常用的类和接口
Servlet接口(init(),service(),destroy())
|
genericServlet(抽象类,里面包含抽象方法service())
|
httpservlet(重写service方法,用于接收用户请求的方式,返回用哪种方式进行处理数据)
|
myservlet关键是对doGet(),doPost方法进行重写,以实现客户端请求的响应
最后在myservlet中只需要重写doget()和dopost()方法。
servlet相关接口图:
这里写图片描述
(1)ServletConfig接口
在Servlet初始化过程中获取配置信息
一个Servlet只有一个ServletConfig对象
(2)ServletContext接口
获取Servlet上下文
JSP内置对象application即ServletContext实例
(3)GenericServlet抽象类
提供了Servlet与ServletConfig接口的默认实现方法
GenericServlet的常用方法
void init(),初始化Servlet
ServletContext getServletContext(),返回Servlet的上下文对象引用,实际上是调用ServletConfig接口的同名方法
(4)HttpServlet继承于GenericServlet
处理HTTP协议的请求和响应
HttpServlet的方法
void doGet(HttpServletRequest request,HttpServletRresponse response)以Get请求服务时调用
void doPost(HttpServletRequest request,HttpServletRresponse response)以Post请求服务时调用
(5)使用doXxx()接收用户请求
doGet():用户使用get方式提交请求时调用
doPost():用户使用post方式提交请求是调用
(6)HttpServletRequest类常用方法
String getParameter(String param)获取客户端请求数据
void setCharacterEncoding(String encoding)设置输入字符集
(7)HttpServletResponse类常用方法
void setContentType(String contType) 设置输出字符集
void sendRedirect(String url)让浏览器重定向到指定的资源
4.Tomcat中部署Servlet
这里写图片描述
5.servlet在web.xml中的配置

<!--配置servlet的信息-->
  <servlet>
    <servlet-name>LoginServlet</servlet-name>////servlet的名称
    <servlet-class>com.lwj.servlet.LoginServlet</servlet-class>//servlet类所在的路径
  </servlet>
  <!--配置servlet的访问路径-->
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>//servlet的名称
    <url-pattern>/LoginServlet</url-pattern>//指定servlet的访问路径
  </servlet-mapping>

当服务器运行时,首先加载web.xml这个全局配置文件。根据客户端发送的请求,web容器分配相应的servlet。根据servlet指定的访问路径在web.xml文件中找到相应的servlet名,进而找到servlet类所在的目录。

猜你喜欢

转载自blog.csdn.net/simplehappiness7/article/details/81605482
今日推荐