欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

四、JavaWeb之servlet详解

程序员文章站 2022-03-11 21:57:05
...

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("释放资源!");    }
}

四、JavaWeb之servlet详解
3.servlet常用的类和接口
Servlet接口(init(),service(),destroy())
|
genericServlet(抽象类,里面包含抽象方法service())
|
httpservlet(重写service方法,用于接收用户请求的方式,返回用哪种方式进行处理数据)
|
myservlet关键是对doGet(),doPost方法进行重写,以实现客户端请求的响应
最后在myservlet中只需要重写doget()和dopost()方法。
servlet相关接口图:
四、JavaWeb之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
四、JavaWeb之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类所在的目录。

相关标签: servlet