【JavaWeb】之Servlet

一、Servlet简介

 1.1 什么是Servlet(server applet): 是一种独立于平台和协议的服务器端Java应用程序,通过Servlet可以生成动态web页面。还可以在服务器端对客户端的请求进行处理,控制程序的执行。

  作用:交互式的浏览和更新数据,并生成动态的页面内容展示。

  Servlet处理web请求过程:

  

  1. 服务器接受从客户端发送的请求
  2. 服务器将请求信息发送至Servlet
  3. Servlet经处理后,生成响应的内容
  4. 服务器将响应的内容返回客户端

  jsp和Servlet关系:Jsp被web容器解析时,最终会编译成一个Servlet类  

1.2 Servlet API

名称 说明 包名
Servlet接口 Java Servlet的基础接口,定义类Servlet必须实现的方法 javax.srevlet
GenericServlet类 继承自Servlet接口,属于通用的、不依赖于协议的Servlet javax.srevlet
HttpServlet类 继承自GenericServlet类,是在其基础上拓展了HTTP协议的Servlet javax.srevlet.http
HttpServletRequest接口 继承自ServletRequest接口,用于获取请求数据的读取 javax.srevlet.http
HttpServletResponse接口 继承自ServletResponse接口,用于返回响应数据 javax.srevlet.http

1.3 Servlet生命周期

  Servlet生命周期:Servlet从创建到销毁的过程。

  Servlet容器:用来装载Servlet对象的一种容器,是负责管理Servlet的一类组件。

  包括一下几个环节:

  1.加载和实例化。         

    Servlet容器负责加载和实例化Servlet,当客户端发送一个请求时,容器查找是否存在对应的Servlet实例,没有则创建一个,有则取出该实例来响应请求

  2.初始化。         

     容器完成Servlet实例化后,容器将调用Servlet的init()方法进行初始化,初始化的目的是让Servlet对象在处理客户端请求前完成一些初始化工作,如设置数据库连接参数、建立JDBC连接,或者建立对其他资源的引用。init()方法在java.servlet.Servlet接口中定义。(对于每一个Servlet实例,init()方法只被调用一次)

  3.提供服务,请求处理。

         Servlet被初始化后,就处于能响应请求的就绪状态。当Servlet容器接收到客户端请求时,调用Servlet的service()方法处理客户端请求。Servlet实例通过ServletRequest对象获得客户端的请求。通过ServletResponse对象的方法设置响应信息。

  4.销毁。

    容器判断一个Servlet是否应当被释放时(容器关闭或需要回收资源),容器就会调用Servlet的destroy()方法。destroy()方法知名哪些资源可以被系统回收,而不是由destroy()方法直接进行回收。

二、Servlet应用

 2.1 创建Servlet三种方式

  • 实现Servlet接口
  • 继承GenericServlet类
  • 继承HttpServlet类
package myproject;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet{
    protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
        System.out.println("调用doGet方法");
    }
    
    protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
        System.out.println("调用doPost方法");
    }
    
    public void destroy(){
        System.out.println("Servlet 被销毁");
    }
    
    public void init(ServletConfig config)throws ServletException{
        System.out.println("Servlet 初始化");
        String initParam = config.getInitParameter("charSetConfig");
        System.out.println(initParam);
    }
}

2.2 Servlet的部署与运行

  部署Servlet需要配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>myproject</display-name>
  
  <servlet>
      <servlet-name>myServlet</servlet-name>
      <servlet-class>myproject.MyServlet</servlet-class>
      <init-param>
          <param-name>charSetContent</param-name>
          <param-value>utf-8</param-value>
      </init-param>
  </servlet>
  <servlet-mapping>
     <servlet-name>myServlet</servlet-name> 
     <url-pattern>/test</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
  
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
 

web.xml常用的<url-pattern>设置有3中形式

  • <url-pattern>/xxx</url-pattern>。精确匹配,例如:<url-pattern>/helloserlvet</url-pattern>
  • <url-pattern>/xxx/*</url-pattern>。匹配路径,如果没有精确匹配,对/xxx/路径的说有请求将由该Servlet处理,例如:<url-pattern> /helloservlet/*</url-pattern>
  • <url-pattern>*.do</url-pattern>。如果没哦有精确匹配和路径匹配,则对所有的.do扩展名的请求将由该Servlet处理

运行:浏览器输入http://localhost:8080/myproject/test

控制台:

   

原文地址:https://www.cnblogs.com/Y-S-X/p/8906493.html