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>myservlet</servlet-name>
        <servlet-class>com.lin.servlet.Servlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>myservlet</servlet-name>
        <url-pattern>/servlet</url-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>name</param-name>
        <param-value>admin</param-value>
    </context-param>

    <servlet>
        <servlet-name>myservlet</servlet-name>
        <servlet-class>com.lin.servlet.Servlet</servlet-class>
<!--        具体各个servlet初始值-->
        <init-param>
            <param-name>name</param-name>
            <param-value>username</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>myservlet</servlet-name>
        <url-pattern>/servlet</url-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层次结构

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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值