玩命加载中 . . .

Servlet入门


Servlet入门-1

1.Servlet技术

  • 什么是Servlet

    1. Servlet 是 JavaEE 规范之一。规范就是接口
    2. Servlet 是 JavaWeb 三大组件之一。三大组件分别是:Servlet程序,Filter过滤器,Listener监听器
    3. Servlet 是运行在服务器上的一个java小程序,它可以接受客户端发送过来的

    请求,并响应给客户端

手动实现 Servlet 程序

public class HelloServlet implements Servlet { 
    /*** service 方法是专门用来处理请求和响应的
     * @param servletRequest 
     * @param servletResponse 
     * @throws ServletException 
     * @throws IOException */ 
    @Override 
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {                                 System.out.println("Hello Servlet 被访问了"); 
                                                                                } 
}

web.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                                                    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
             <!-- servlet 标签给 Tomcat 配置 Servlet 程序 --> 
             <servlet> 
             <!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) --> 
             <servlet-name>HelloServlet</servlet-name> 
             <!--servlet-class 是 Servlet 程序的全类名--> 
             <servlet-class>com.atguigu.servlet.HelloServlet</servlet-class> 
             </servlet> 
            <!--servlet-mapping 标签给 servlet 程序配置访问地址--> 
            <servlet-mapping> 
            <!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个 Servlet 程序使用--> 
            <servlet-name>HelloServlet</servlet-name> 
            <!--url-pattern 标签配置访问地址 <br/> / 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 <br/> /hello 表示地址为:http://ip:port/工程路径/hello <br/> --> 
             <url-pattern>/hello</url-pattern> 
    </servlet-mapping> 
</web-app>

常见的三种错误:

  1. url-pattern 中配置路径没有以“/“打头
  2. servlet-name 配置的值不存在
  3. servlet-class 标签的全类名配置错误
  • Servlet的生命周期

    1. 执行 Servlet 构造器方法

    2. 执行 init 初始化方法

第一,二步,是在第一次访问的时候创建 Servlet 程序会调用。

  1. 执行 Service 方法
    第三步,每次访问都会调用

  2. 执行 destroy 销毁方法
    第四步,在web工程停止的时候调用

  • GET和POST请求的分发处理
public class HelloServlet implements Servlet { 
    /*** service 方法是专门用来处理请求和响应的
     * @param servletRequest 
     * @param servletResponse 
     * @throws ServletException 
     * @throws IOException 
     */ 
    @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { 
        System.out.println("3 service === Hello Servlet 被访问了"); 
        // 类型转换(因为它有 getMethod()方法) 
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; 
        // 获取请求的方式 
        String method = httpServletRequest.getMethod(); 
        
        if ("GET".equals(method)) {
            doGet(); 
        } else if ("POST".equals(method)) {
            doPost(); 
        } 
    }
    /*** 做 get 请求的操作 */ 
    public void doGet(){
        System.out.println("get 请求"); 
        System.out.println("get 请求"); 
    }
    /*** 做 post 请求的操作 */ 
    public void doPost(){
        System.out.println("post 请求"); 
        System.out.println("post 请求"); 
    } 
}
  • 通过继承 HttpServlet 实现 Servlet程序

​ 一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。

  1. 编写一个类去继承 HttpServlet 类
  2. 根据业务需要重写 doGet 或 doPost 方法
  3. 到web.xml中配置 Servlet 程序的访问地址

Servlet 类的代码

<servlet>
    <servlet-name>类名</servlet-name>
    <servlet-class>到这个类的路径地址(**.**.**.类名)</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>类名</servlet-name>
    <url-pattern>自定义标签名(/类名的简写)</url-pattern>
</servlet-mapping>
  • Servlet类的继承体系

  • **ServletConfig 类 **

    ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。

    Servlet 程序和 SercletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
    Servlet 程序默认是第一次访问的时候创捷, ServletConfig 是每个 Servlet 程序创建时,>就创建一个对应的 ServletConfig 对象。

  • ServletConfig 类的三大作用


文章作者: 青逝痕
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 青逝痕 !
  目录