Servlet原理 Servlet mapping

Servlet接口的子类需重写service方法来处理请求和响应。在web.xml中配置Servlet,如将helloServlet映射到/hello,使得通过http://localhost:8080/hello访问。Servlet映射可指定多个模式,包括多个URL、通用路径、默认请求及前缀或后缀匹配。映射优先级为固有路径最高,然后是通用路径。
摘要由CSDN通过智能技术生成

1.实现Servlet接口的子类

我们所写的子类,最重要的就是重写service这个方法。

void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

第一个参数ServletRequest代表的是浏览器向web容器(web服务器)发来的请求,然后我们所写的子类对该请求进行处理,再通过第二个参数ServletResponse再响应浏览器(例如输出文字,图片等)。

2. Servlet mapping

上一个博客,我们配置了web.xml文件

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.study.servlet.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

这段XML代码是一个Servlet的配置,首先定义了一个名为"hello"的Servlet,它的类是"com.study.servlet.HelloServlet"。

接着定义了一个Servlet映射,将Servlet "hello" 映射到URL模式"/hello"。这样,当用户在浏览器中输入"http://localhost:8080/hello"时,Web服务器就会将请求传递给名为"hello"的Servlet进行处理。

Servlet映射有多种模式:

1)一个Servlet可以指定多个映射模式

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.study.servlet.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello2</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello3</url-pattern>
</servlet-mapping>

2)一个Servlet可以指定通用映射路径

http://localhost:8080/net/ + 任何值 都会映射到hello这个Servlet

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.study.servlet.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/net/*</url-pattern>
</servlet-mapping>

3)一个Servlet可以指定默认请求路径,会覆盖掉主页

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.study.servlet.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

4)映射可以指定前缀或后缀

*前不能加映射路径:/*.do 会报错

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.study.servlet.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

因为一个Servlet可以指定多个映射模式,所以这些映射是有优先级的:

固有路径的映射优先级最高,找不到固有路径映射才会去找通用映射路径。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值