JavaWeb——关于servlet种mapping地址映射的一些问题

news2024/11/20 2:22:29

6、Servlet

6.4、Mapping问题

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

    <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
  2. 一个Servlet可以指定多个映射路径

    <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello01</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello02</url-pattern>
    </servlet-mapping>
    
  3. 一个Servlet可以指定通用映射路径(即使用通配符==*==)

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

    注意:如果什么都不写直接写==/,则会直接把index页面给挤掉,servlet优先级更高,因此请考虑好再使用/==的写法

  4. 指定一些后缀或者前缀等等

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

    此处用了后缀即,我们可以通过localhost:8080/javaweb-02-servlet/xxxxxx.do进入servlet页面(xxxxxx可以随便写)

    注意:*前面不能加映射的路径(如:/hello)

  5. 优先级问题:

    指定了固有的映射路径优先级最高,如果找不到就会走/*处理比如:

    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
      <!--注册Servlet-->
      <servlet>
        <servlet-name>hello</servlet-name>
        <!--全限定类名-->
        <servlet-class>com.xu.servlet.HelloServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>error</servlet-name>
        <servlet-class>com.xu.servlet.ErrorServlet</servlet-class>
      </servlet>
        
      <!--Servlet的注册(请求)路径-->
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
     <servlet-name>error</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>
    </web-app>
    

    此处定义了两个servket,一个路径为/hello,一个路径为/ *。按理来说,/ *包含了/hello,但由于优先级问题,我们在网址栏输入/hello时,它会优先找/hello,如果找不到,再找/ *。

    注意:根据多次试错发现:servlet标签必须放一起,写完servlet之后再将对应的servlet-mapping写完,这样才能不报错。(一开始笔者写一个servlet,就写其对应的servlet-mapping,结果web-app报错了)

  6. 自己写一个404页面:

    • 创建一个ErrorServlet.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 ErrorServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              // resp.setContentType("test/html");
              // resp.setCharacterEncoding("utf-8");
      
              resp.getWriter().writer.print("<h1>404</h1>");
          }
      
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              doGet(req, resp);
          }
      }
      
      

      这里为什么注释掉

          // resp.setContentType("test/html");
          // resp.setCharacterEncoding("utf-8");
      

      因为根据狂神说的视频,需要写上这两句来调整页面的字体布局,但是笔者在经历多次打不开页面而出现以下情况后:

      在这里插入图片描述

      便开始排查问题,一开始是以为web.xml配置问题,但是经过几次调整后都没有解决,后来排查java文件是否出现问题,一开始以为自己少引入了包,后来修改doget后才恢复正常

    • 在web.xml配置多个servlet映射路径(这里有两个servlet,一个是hello,一个是404)

      <!--注册Servlet-->
      <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.xu.servlet.HelloServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>error</servlet-name>
        <servlet-class>com.xu.servlet.ErrorServlet</servlet-class>
      </servlet>
      
      <!--Servlet的注册(请求)路径-->
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>error</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1137969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis和Memcached网络模型详解

1. Redis单线程单Reactor网络模型 1.1 redis单线程里不能执行十分耗时的流程&#xff0c;不然会客户端响应不及时 解决方法一&#xff1a; beforesleep里删除过期键操作若存在大量过期键时&#xff0c;会耗费大量时间&#xff0c;redis采用的策略之一就是采用timelimit方案超过…

2011-2021年“第四期”数字普惠金融与上市公司匹配(根据城市匹配)/上市公司数字普惠金融指数匹配数据

2011-2021年“第四期”数字普惠金融与上市公司匹配&#xff08;根据城市匹配&#xff09;/上市公司数字普惠金融指数匹配数据 1、时间&#xff1a;2011-2021年 指标&#xff1a;指标&#xff1a;股票代码、年份、行政区划代码、行业名称、行业代码、所属省份、所属城市、数字…

澳大利亚专线的清关时效

随着全球贸易的不断发展&#xff0c;越来越多的企业和个人开始选择通过海运、空运等物流方式将货物运送到世界各地。而在这些运输方式中&#xff0c;澳大利亚专线以其快速、高效的特性受到了广大客户的青睐。本文将为您详细介绍澳大利亚专线的清关时效。 一、澳大利亚专线的定义…

Vben开源添加本地路由(不用显示在菜单的路由)

1.在src\router\routes\modules下创建一个article.ts import type { AppRouteModule } from //router/types;import { LAYOUT } from //router/constant; import { t } from //hooks/web/useI18n;export const article: AppRouteModule {path: /article,name: Article,compon…

疫情集中隔离

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

数字人成品牌营销流量密码?看数字人花样赋能品牌

在第十二届李曼中国养猪大会暨世界猪业博览会上&#xff0c;嘉吉动物营养推出了首个数字人产品星推官&#xff0c;在现场数字人结合动捕设备&#xff0c;向观众实时介绍品牌的全明星产品&#xff0c;同时与观众进行实时互动&#xff0c;吸引了众多参展观众的驻足&#xff0c;为…

K8s安装部署-----二进制安装部署

目录 前言 一、操作系统初始化配置 二、部署 etcd 集群 1、在master01节点操作 2、在 node01 节点上操作 3、在 node02 节点上操作 4、查看集群状态 二、部署docker引擎 三、部署 Master 组件 1、准备证书 2、准备二进制文件、token 3、启动kube-apiserver服务 4、…

0基础学习PyFlink——用户自定义函数之UDTF

大纲 表值函数完整代码 在《0基础学习PyFlink——用户自定义函数之UDF》中&#xff0c;我们讲解了UDF。本节我们将讲解表值函数——UDTF 表值函数 我们对比下UDF和UDTF def udf(f: Union[Callable, ScalarFunction, Type] None,input_types: Union[List[DataType], DataTy…

macOS Sonoma 14.1正式版发布 改善Apple Music界面 新增保修状态显示

10月26日消息&#xff0c;苹果今天为 macOS Sonoma 推出了 14.1 版本更新&#xff0c;本更新主要改善了 Apple Music 界面&#xff0c;设置中新增保修状态&#xff0c;并修复了多项错误内容。 经过几周的用户测试&#xff0c;Apple 正式向所有 Mac 用户发布了 macOS Sonoma 14.…

【代码随想录01】数组总结

抄去吧&#xff0c;保存去吧&#xff01;

p5.js 3D图形-立方体

本文简介 带尬猴&#xff0c;我嗨德育处主任 前面写了几篇 p5.js 文章 都还没涉及到3D图形&#xff0c;但其实 p5.js 是提供了基础的3D图形的。 本文就从最简单的立方体讲起&#xff0c;并做几个小demo和各位工友一起掌握立方体的用法。 立方体的基础用法 在 p5.js 里使用 b…

智慧矿山AI算法助力煤矿安全:人员越界识别精准迅速

煤矿作为一种危险性较高的工业领域&#xff0c;安全管理一直是煤矿企业的重要任务。传统煤矿安全管理主要依靠人工巡逻及视频监控等手段&#xff0c;但这些方法往往存在人力不足、盲区多等问题&#xff0c;无法实时监控和预警&#xff0c;难以有效避免事故的发生。随着人工智能…

如何在linux服务器上安装Anaconda与pytorch,以及pytorch卸载

如何在linux服务器上安装Anaconda与pytorch&#xff0c;以及pytorch卸载 1&#xff0c;安装anaconda1.1 下载anaconda安装包1.2 安装anaconda1.3 设计环境变量1.4 安装完成验证 2 Anaconda安装pytorch2.1 创建虚拟环境2.2 查看现存环境2.3 激活环境2.4 选择合适的pytorch版本下…

FL Studio水果2023体验版如何破解?

FL Studio是一款非常专业的水果工具&#xff0c;软件功能齐全&#xff0c;拥有编曲、剪辑、录音、混音等功能&#xff0c;可以满足用户的各种音乐制作需求。软件已经成功破解&#xff0c;全中文的软件界面&#xff0c;去除了试用时间限制&#xff0c;有需要的快来下载吧&#x…

《动手学深度学习 Pytorch版》 10.6 自注意力和位置编码

在注意力机制中&#xff0c;每个查询都会关注所有的键&#xff0d;值对并生成一个注意力输出。由于查询、键和值来自同一组输入&#xff0c;因此被称为 自注意力&#xff08;self-attention&#xff09;&#xff0c;也被称为内部注意力&#xff08;intra-attention&#xff09;…

react-typescript-demo

1.使用 Context 来存储数据

rabbitMQ入门指南:管理页面全面指南及实战操作

文章目录 1. 引言2. RabbitMQ 管理页面的概览3. 探索 RabbitMQ 管理页面的主要功能3.1 连接3.2 通道3.3 交换机3.4 队列3.5 生产者3.6 消费者 4. RabbitMQ 的实战例子4.1 创建虚拟机4.2 连接和通道4.3 建立交换机4.3.1 交换机类型4.3.2 创建一个交换机 4.4 创建队列4.4.1 队列类…

海外广告投放保姆级教程,如何使用Quora广告开拓新流量市场?

虽然在Quora 上学习广告相对容易&#xff0c;但需要大量的试验和错误才能找出最有效的方法。一些广告技巧可以让您的工作更有效率。这篇文章将介绍如何有效进行quora广告投放与有价值的 Quora 广告要点&#xff0c;这将为您节省数万美元的广告支出和工作时间&#xff01;往下看…

五大绩效指标,为企业新媒体矩阵管理注入新动力

⭐关注矩阵通服务号&#xff0c;探索企业新媒体矩阵搭建与营销策略 新媒体矩阵的建设运营是为了能实现企业确定的业务目标。 那如何才能让推动最后业务目标的实现&#xff1f; 对于企业来说&#xff0c;可以将业务目标拆解为短期绩效目标&#xff0c;通过适当调整短期指标来保证…

【Java 进阶篇】Java HTTP 请求消息详解

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于传输超文本的应用层协议&#xff0c;广泛用于构建互联网应用。在Java中&#xff0c;我们经常需要发送HTTP请求来与远程服务器进行通信。本文将详细介绍Java中HTTP请求消息的各个部分&#xff0c;包括请求行、…