Java——Servlet

一、概念:

  (1)把运行在服务器上的java类称为Servlet,是java的服务端编程技术;

  (2)主要功能在于交互式地浏览和修改数据,生成动态Web内容;

二、Servlet生命周期:

  (1)构造方法:在init之前;

  (2init:初始化,服务器启动执行一次;用于写初始化的方法;

  (3destroy:销毁;服务器关闭执行一次;

  (4service:服务方法,访问一次执行一次;不管get/post请求,直接调用service方法;

 

Servlet三种实现方式:

  (1)实现servlet接口;(爷爷)

  (2)继承GenericServlet类;(爸爸)

  (3)继承HttpServlet类;(儿子)

  1、实现servlet接口:

@WebServlet("/test")
public class Test implements Servlet {
    ...
}

  2、继承GenericServlet类:

    (1)GenericServlet类是Servlet的实现类,其中service方法为空实现;

    (2)继承此类创建Servlet只需重写service方法;

@WebServlet("/test")
public class Test extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service...");
    }
}

  3、继承HttpServlet类:

    //重点使用doGet/doPost方法,不推荐使用service方法;

@WebServlet("/test")
public class Test extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost...");
    }
}

四、Servlet访问路径的两种配置:

  1、在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>//配置servlet
        <servlet-name>命名,一般和类名一致</servlet-name>
        <servlet-class>包名.类名</servlet-class>
    </servlet>
    <servlet-mapping>//配置servlet映射
        <servlet-name>命名,和上面相同</servlet-name>
        <url-pattern>路径</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>RegisterServlet</servlet-name>
        <servlet-class>servlet.RegisterServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegisterServlet</servlet-name>
        <url-pattern>/register_do</url-pattern>
    </servlet-mapping>
</web-app>

  2、注解:

     (1)版本要求:jdk>=1.8;web.xml>=3.0;

    (2)格式:在Servlet类上一行添加注解@WebServlet("urlParrent");

      //@WebServlet("/servlet_do")

 五、Servlet初始化属性配置<init-param>/<context-param>

   

  1)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>
        <servlet-name>Test</servlet-name>
        <servlet-class>com.qf.controller.Test</servlet-class>
        <init-param>
            <param-name>initParam</param-name>
            <param-value>initParam</param-value>
        </init-param>
    </servlet>
    <context-param>
        <param-name>contextParam</param-name>
        <param-value>contextParam</param-value>
    </context-param>
    <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

  2)controller:

package com.qf.controller;

public class Test extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println(getServletConfig().getInitParameter("initParam"));
        System.out.println(getServletContext().getInitParameter("contextParam"));
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

 

posted @ 2019-07-28 20:26  开拖拉机的拉风少年  阅读(202)  评论(0编辑  收藏  举报