Java基础入门day51

day51

Servlet

servlet的配置方式

自servlet2.5后,servlet有两种配置方式

  1. 注解方式配置

    1. 在Servlet类上添加@WebServlet注解

    2. 在里面配置value属性或者urlPattern属性,来设置url

    3. 用户访问该url则自动查找当前servlet容器中唯一的servlet来进行访问

package com.saas.day51;
​
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
​
/**
 * value或者url-pattern属性可以用大括号来放置多个url,代表多个url指向同一个servlet
 * 当前servlet能够处理hello-servlet、hello-servlet02、hello-servlet03三个不同的请求
 * 意思是这三个请求都将交给这同一个HelloSevlet来处理
 */
@WebServlet(name = "helloServlet", value = {"/hello-servlet", "/hello-servlet02", "/hello-servlet03"})
public class HelloServlet extends HttpServlet {
    private String message;
​
    public void init() {
        message = "Hello World!";
    }
​
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
​
        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }
​
    public void destroy() {
    }
}
  1. xml方式配置

    1. 在项目的webapp目录下的WEB-INF目录的web.xml文件中配置servlet

    2. 配置servlet-mapping节点,里面分别设置urlPattern和servletname

    3. 配置servlet节点,根据servletmapping节点中得到的servlet查找servlet-class

<?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>xxx</servlet-name>
        <servlet-class>com.saas.day51.HelloServlet02</servlet-class>
    </servlet>
​
    <servlet>
        <servlet-name>yyy</servlet-name>
        <servlet-class>com.saas.day51.HelloServlet03</servlet-class>
    </servlet>
​
    <servlet-mapping>
        <servlet-name>xxx</servlet-name>
        <url-pattern>/xyz</url-pattern>
    </servlet-mapping>
​
    <servlet-mapping>
        <servlet-name>yyy</servlet-name>
        <url-pattern>/zzz</url-pattern>
    </servlet-mapping>
​
    <servlet-mapping>
        <servlet-name>yyy</servlet-name>
        <url-pattern>/zzz02</url-pattern>
    </servlet-mapping>
​
    <!--
        三个url-patternzzz, zzz02, zzz03, 都映射到yyy这个servlet
    -->
    <servlet-mapping>
        <servlet-name>yyy</servlet-name>
        <url-pattern>/zzz03</url-pattern>
    </servlet-mapping>
​
    <servlet-mapping>
        <servlet-name>yyy</servlet-name>
        <url-pattern>/hello-servlet</url-pattern>
    </servlet-mapping>
​
​
</web-app>

servlet2.5之前,servlet只有xml方式的配置

servlet的两种配置方式中:

@WebServlet注解相对灵活,便于团队开发

在整个项目中都属于同一个web容器tomcat

整个项目中url-pattern要保证唯一

在整个tomcat容器中注解和xml也要保证url-pattern唯一

在整个项目中可以让多个不同的url-pattern指向同一个servlet

servlet的生命周期

人从出生,幼儿,儿童,青年,壮年,老年,都是“自动生长”

package com.saas.day51;
​
import javax.servlet.http.HttpServlet;
​
public class LifeCycleServlet extends HttpServlet {
​
 public LifeCycleServlet()
 {
     System.out.println("Constructor()");
 }
​
 public void init()
 {
     System.out.println("init()");
 }
​
 public void destroy()
 {
     System.out.println("destroy()");
 }
​
 public void service(javax.servlet.ServletRequest req, javax.servlet.ServletResponse res) throws javax.servlet.ServletException, java.io.IOException
 {
     System.out.println("service()");
 }
}

Servlet的生命周期是指多个生命周期方法不需要程序员手动调用,web容器tomcat会根据servlet的生命周期自动调用各个生命周期方法

整个声明周期方法是1 +3

1代表构造器,web容器启动后调用当前servlet会自动初始化该对象,在web容器中每个servlet默认都是单例的

3代表init,service和destroy方法

  • init代表初始化,每个servlet在web容器中只初始化一次

  • service服务方法,每请求一次,会自动执行一次该方法

  • destroy销毁方法,web容器关闭会自动执行该方法

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值