JavaWeb学习打卡07(Servlet原理详解、自定义404页面)

Servlet原理

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

我们自己编写的实现类,重写这些方法

  1. 接收并处理请求

  2. 给出响应的信息

  3. 一个Servlet 可以指定一个映射路径:
    1.

    XML 复制代码
     <!-- servlet 请求路径-->
        <!-- 请求路径:localhost:8080/hello  -->
        <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>
  4. 一个Servlet 可以指定多个映射路径:
    1.

    XML 复制代码
        <!-- servlet 请求路径-->
        <!-- 请求路径:localhost:8080/hello  -->
        <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>
        
        
  5. 一个Servlet 可以通用映射路径:
    1.

    XML 复制代码
     <!-- servlet 请求路径-->
        <!-- 请求路径:localhost:8080/hello  -->
        <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/hello/*</url-pattern>
        </servlet-mapping>
  6. 指定一些后缀或前缀等等.......
    1.

    XML 复制代码
     <!-- 可以自定义后缀实现请求映射
            注意点:<url-pattern> 中,* 前面不能加项目的映射路径
             如:/*.xiaoxu   会报错-->
        <!-- 请求路径:localhost:8080/hello.xiaoxu  -->
        <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>*.xiaoxu</url-pattern>
        </servlet-mapping>

重写404页面

  1. 先创建一个ErrorHttp普通类继承 HttpServlet 类,
  2. 随后**Override(重写)doGet()、doPost ()**方法,
  3. 再到 web.xml 文件中注册Servlet 、设置Servlet 请求路径
java 复制代码
package com.xu.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class ErrorHttp extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html"); //设置连接类型为html
        resp.setCharacterEncoding("utf-8"); //设置页面的编码格式为utf-8

        PrintWriter writer = resp.getWriter();//调用getWriter()方法
        writer.print("<h1>重写的 404 页面<h1>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
XML 复制代码
    <!--  404  -->
    <!--  注册Servlet  -->
    <servlet>
        <servlet-name>error</servlet-name>
        <servlet-class>com.xu.servlet.ErrorHttp</servlet-class>
    </servlet>

    <!--  设置Servlet 的请求路径 -->
    <!--  访问请求路径:http://localhost:8081/hello/ * -->
    <servlet-mapping>
        <servlet-name>error</servlet-name>
        <url-pattern>/hello/*</url-pattern>
    </servlet-mapping>

优先级问题

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

相关推荐
小黄蚁7 分钟前
LVGL学习笔记(六)
笔记·学习
CDN36021 分钟前
360CDN发布HTTP/3(QUIC)弱网加速方案:实测首屏提速40%,彻底终结移动端接口超时与频繁断连
网络·网络协议·http
zyf10441633 分钟前
暑期实践日志 Day33:整体复盘核查视频,完善剪辑成果
学习·计算机网络·剪辑·暑期实践·课题任务
01_ice38 分钟前
前端学习css
前端·css·学习
辻弋2011 小时前
一键优化电源计划、游戏模式、独显强制、禁用后台录制——DeltaForceBooster专治三角洲行动卡顿掉帧,所有改动可一键还原
服务器·数据库·windows·游戏·电脑·php
QQ_21696290961 小时前
【项目编号:project95315】SpringBoot公共自习室管理系统:座位预约、房间管理、签到核销、公告规则完整实战
java·spring boot·后端
xcLeigh1 小时前
Go入门:基本数据类型全览与选择指南
android·服务器·golang·教程·go热门
嵌入式阿蔡1 小时前
面试高频考点 01:volatile / 中断 / 堆栈 八股精讲
java·面试·职场和发展·嵌入式实时数据库
秋饼2 小时前
LangChain4j + Java 实现企业级 Text-to-SQL 智能问数系统:从自然语言到安全可控的数据洞察
java·ai·技术分享·后端开发
Escalating_xu2 小时前
【C++ STL简介】从六大组件到容器、迭代器与算法协作
java·c++·算法