zoukankan      html  css  js  c++  java
  • 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)优先级问题

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

  • 相关阅读:
    PID控制算法原理(抛弃公式,从本质上真正理解PID控制)(转)
    用三张图片详解Asp.Net 全生命周期
    Maven 3 入门 核心概念
    Maven 3 入门 HelloWorld
    Spring 3.x MVC 入门3 使用内容协商来实现多视图
    Nosql之Mongodb 1 安装配置与基本操作
    Spring 3.x MVC 入门31 使用内容协商来实现多视图 示例
    Nosql之Mongodb 2 高级查询
    Maven 3 入门 如何创建一个web应用程序
    Spring 3.x MVC 入门4 @ResponseBody & @RequestBody
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14596156.html
Copyright © 2011-2022 走看看