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)优先级问题

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

  • 相关阅读:
    推荐几款Vue后台管理系统的框架,以便备用
    vue常用开发ui框架(app,后台管理系统,移动端)及插件
    CSS的flex布局看完这篇你就懂了
    network中的js和xhr
    使用better-scroll插件 点击事件失效
    javaScript -- touch事件详解(touchstart、touchmove和touchend)
    BetterScroll在vue中v-for渲染数据后滚动失效
    布局总结四:利用行高来撑开高度
    git中Please enter a commit message to explain why this merge is necessary.
    Vue中使用Ajax与后台交互
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14596156.html
Copyright © 2011-2022 走看看