Servlet原理和mapping分析

一---Servlet原理分析图

Servlet是由web服务器调用,web服务器在收到浏览器请求之后,会:

 

 

 

二---Mapping问题

1)一个servlet请求可以指定一个映射路径

<!--servlet的请求路径 -->
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>  <!-- 网址模式-->
  </servlet-mapping>

 

2)一个servlet请求可以指定多个映射路径

复制代码
<!--servlet的请求路径 -->
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>  <!-- 网址模式-->
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello1</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>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello4</url-pattern>  <!-- 网址模式-->
  </servlet-mapping>
复制代码

 

3)一个servlet请求可以指定通用映射路径(使用通配符*)

<!--servlet的请求路径 -->
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello/*</url-pattern>  <!-- 网址模式-->
  </servlet-mapping>

 

4)默认请求路径,虽然进的是s1模块,但这时访问的不再是index.jsp.而是HelloServlet

 

 

 

5)指定一些后缀或者前缀等等

<!--servlet的请求路径 
  注意点,*前面不能加项目映射的路径-->
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>*.do</url-pattern>  <!-- 网址模式-->
  </servlet-mapping>

 

6)修改默认的404页面

复制代码
public class ErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html"); // 设置响应的文本格式
        resp.setCharacterEncoding("utf-8"); // 设置字符集
        PrintWriter writer = resp.getWriter(); // 构造输出对象
        writer.print("<h1>哥!这次真的找不到了。</h1>"); // 输出内容

    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
复制代码

注册:

复制代码
<!-- 404页面 -->
  <!--注册servlet -->
  <servlet>
    <servlet-name>error</servlet-name>
    <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class>
  </servlet>

  <!--servlet的请求路径-->
  <servlet-mapping>
    <servlet-name>error</servlet-name>
    <url-pattern>/*</url-pattern>  <!-- 网址模式-->
  </servlet-mapping>
复制代码

测试:

 

 输入/hello试试

6)优先级问题

指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求。

 

posted on   Love&Share  阅读(692)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示