JavaWeb的Servlet的两种配置

Servlet接口

要成为一个Servlet,需要实现Servlet接口(为了方便,可以继承HttpServlet,HttpServlet实现了Servlet接口)

Servlet生命周期

在Tomcat中Servlet是单例的,Servlet实例的创建由Tomcat完成

Servlet实例首次使用时才会被创建,先执行无参构造器,然后执行init()方法,再执行service()方法,以后每次请求只会执行service()方法,Servlet容器关闭时,执行destroy()方法。

Servlet的初始化参数信息,会封装到init()方法中的ServeletConfig对象

请求信息会封装到service()方法中的ServletRequest对象,响应信息封装到ServletResponse对象

public interface Servlet {

    public void init(ServletConfig config) throws ServletException;

    public ServletConfig getServletConfig();

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;

    public String getServletInfo();

    public void destroy();
	
}

 

一、xml配置

1.web.xml

在web.xml中配置Servlet,<servlet>指定对应的Servlet类,<servlet-mapping>指定映射,<init-param>设置初始化参数,通过映射关系找到处理请求的Servlet类,在页面请求/hello(页面请求路径使用绝对路径,代表从当前项目路径下开始),就跳转到HelloServlet类处理请求

  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.example.servlet.HelloServlet</servlet-class>
    <init-param>
      <param-name>user</param-name>
      <param-value>root</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

2.Servlet类

处理请求的HelloServlet继承HttpServlet,调用getServletConfig()方法获得ServletConfig对象,用ServletConfig对象获得Servlet中初始化参数

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();
        String user = servletConfig.getInitParameter("user");
        System.out.println(user);

        response.getWriter().write("success");
    }

}

二、@WebServlet注解配置

1.@WebServlet

name等同于<servlet-name>,urlPatterns等同于<url-pattern>,initParams 等同于<init-param>

@WebServlet(
        name = "HelloServlet", 
        urlPatterns = "/hello", 
        initParams = {
            @WebInitParam(name = "user", value = "root") })

2.Servlet类

@WebServlet(
        name = "HelloServlet",
        urlPatterns = "/hello",
        initParams = {
            @WebInitParam(name = "user", value = "root") })
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();
        String user = servletConfig.getInitParameter("user");
        System.out.println(user);

        response.getWriter().write("success");
    }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值