Servlet快速学习笔记

一、概述

Servlet 是运行在 Web 服务器或应用服务器上的程序,负责与客户端进行通信:

  • 收集来自网页表单的用户输入,创建动态网页
  • 呈现来自数据库或者其他源的记录

二、使用

Servlet为接口,需要创建类实现Servlet接口

public class Servlet implements javax.servlet.Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

注意:由于网页无法直接访问Servlet文件,所以需要通过配置映射访问
方法一:配置xml文件

	<servlet>
        <servlet-name>myservletservlet-name>
        <servlet-class>com.lin.servlet.Servletservlet-class>
    servlet>
    
    <servlet-mapping>
        <servlet-name>myservletservlet-name>
        <url-pattern>/servleturl-pattern>
    servlet-mapping>

方法二:使用注解

@WebServlet("/servlet")
public class Servlet implements javax.servlet.Servlet {
......
}

laingzhongf

三、生命周期

  1. 当浏览器访问Servlet时,Tomcat会判断对象是否存在,若不存在则根据反射创建,若存在则执行第三步
  2. 调用 init 方法初始化
  3. 调用 service 方法进行逻辑操作
  4. 关闭Tomcat时调用 destory 方法释放资源

(1)init方法


    <context-param>
        <param-name>nameparam-name>
        <param-value>adminparam-value>
    context-param>

    <servlet>
        <servlet-name>myservletservlet-name>
        <servlet-class>com.lin.servlet.Servletservlet-class>

        <init-param>
            <param-name>nameparam-name>
            <param-value>usernameparam-value>
        init-param>
    servlet>

    <servlet-mapping>
        <servlet-name>myservletservlet-name>
        <url-pattern>/servleturl-pattern>
    servlet-mapping>

@Override
    public void init(ServletConfig servletConfig) throws ServletException {
        // 单个Servlet的初始值
        System.out.println(servletConfig.getInitParameter("name"));
        System.out.println("--------------------------");

        // Servlet上下文
        ServletContext servletContext = servletConfig.getServletContext();
        // Tomcat版本号
        System.out.println(servletContext.getServerInfo());
        // 全局Servlet初始值
        System.out.println(servletContext.getInitParameter("name"));
    }

这里容易混淆ServletConfig和ServletContext。其中ServletContext为上下文,一个web应用对应一个,用于针对全局进行操作;一个web应用可以有很多个servlet,而ServletConfig则针对具体的进行操作

(2)service方法

用于接收客户端的请求并做出响应

@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    String id = servletRequest.getParameter("id");
    System.out.println("已收到客户端的请求,id为"+id);
    // 解决中文编码
    servletResponse.setContentType("text/html;charset=UTF-8");
    servletResponse.getWriter().write("Hello Client!你的id为:"+id);
    }

Servlet快速学习笔记_第1张图片
Servlet快速学习笔记_第2张图片

四、Servlet层次结构

Servlet——》GenericServlet——》HttpServlet
在我们一般使用时,不直接使用实现Servlet接口的GenericServlet(为他的子类屏蔽了不常用的方法,只需重写service方法即可),而是使用其子类HttpServlet(根据请求类型分发处理,GET请求分发给doGet方法以此类推),我们只需要继承HttpServlet(重写doGet和doPost方法)

一般HTTP请求有四种:

  • GET 读取
  • POST 保存
  • PUT 修改
  • DELETE 删除
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

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

你可能感兴趣的:(java,web)