Servlet的配置(xml和注解)以及方法的作用

Servlet的配置(xml和注解)以及方法的作用

配置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_3_1.xsd"
         version="3.1">
    
    <servlet>
        <servlet-name>demo1</servlet-name>
        <!--全类名-->
        <servlet-class>web.servlet.ServletDemo1</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <!--url访问的资源名-->
        <url-pattern>/index</url-pattern>
    </servlet-mapping>
</web-app>
servlet的5个方法:
import javax.servlet.*;
import java.io.IOException;

public class ServletDemo1 implements Servlet {
    /**
     * 初始化方法,在servlet被创建时执行,只会执行一次
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init");
    }

    /**
     * 获取ServletConfig对象(servlet的配置对象)
     * @return
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 提供服务的方法,每一次servlet被访问时执行
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet");
    }

    /**
     * 获取servlet的信息,版本 作者...一般不用
     * @return
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    /**
     * 销毁方法,在servlet被杀死时执行(服务器关闭的时候执行),只执行一次
     */
    @Override
    public void destroy() {
        System.out.println("destroy----------");
    }
}

servlet中的生命周期的方法:
  1. 被创建:执行init方法,只执行一次

    • servlet默认在第一次访问的时候创建,可以配置执行servlet的时机。

    在web.xml中配置load-on-startup

    <servlet>
            <servlet-name>demo1</servlet-name>
            <!--全类名-->
            <servlet-class>web.servlet.ServletDemo1</servlet-class>
            <!--只当servlet的创建时机 负数就是第一次访问时创建 ;0或正数就是在启动服务器时创建-->
            <load-on-startup>0</load-on-startup>
        </servlet>
    
    • servlet的init方法只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet时单例的
      • 多线程访问同一个Servlet时,可能出现安全问题,所以尽量不要在Servlet中定义成员变量(避免了共享),计师定义了成员变量,也不要对其进行修改
  2. 提供服务:执行service方法,执行多次

  3. 被销毁:执行destroy方法,只执行一次

    • servlet被销毁时执行,服务器关闭时,servlet被销毁
    • 只有服务器正常关闭时,才会执行destroy方法(在servlet被销毁之前执行)
Servlet_3.0注解配置;可以不使用web.xml配置
  1. 创建JavaEE项目。选择Servlet的3.0以上的版本,可以不创建web.xml
  2. 定义类实现Servlet接口
  3. 重写方法
  4. 在类上使用注解@WebServlet注解配置
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
//只需配置访问的资源路径即可(这里叫demo,访问的时候只需在8080端口后面加上/demo即可),如果只有一个属性,可以直接写"/demo"
@WebServlet(urlPatterns = "/demo")
public class ServletDemo1 implements 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 {
        System.out.println("servlet 3.0");
    }

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

    @Override
    public void destroy() {

    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值