urlPattern配置和request

urlPattern配置

Servlet类编写好后,想要被访问到,就需要配置其访问路径(urlPattern)

一个Servlet可以配置多个urlPattern

@WebServlet(urlPatterns={"/demo","/demo2"})

urlPattern配置规则:

精准匹配

配置路径:@WebServlet("/user/select")

访问路径:localhost:8080/web/user/select

目录匹配

配置路径:@WebServlet("/user/ * ")

访问路径:localhost:8080/web/user/aaa

                  localhost:8080/web/user/bbb

扩展名匹配

配置路径:@WebServlet(" * . do ")

访问路径:localhost:8080/web-demo/a.do

                  localhost:8080/web-demo/b.do

如果路径配置的不是扩展名,那么在路径的前面就必须要加 / 否则会报错
如果路径配置的是 *.do ,那么在*.do的前面不能加 / ,否则会报错

任意匹配

配置路径:@WebServlet("/")

                  @WebServlet("/ * ")

访问路径:localhost:8080/web-demo/hehe

                  localhost:8080/web-demo/haha

/ 和 /* 的区别:

当我们的项⽬中的Servlet配置了 "/",会覆盖掉tomcat中的DefaultServlet,当其他的url-pattern都匹配不上时都会⾛这个Servlet
当我们的项⽬中配置了"/*",意味着匹配任意访问路径
DefaultServlet是⽤来处理静态资源,如果配置了"/"会把默认的覆盖掉,就会引发请求静态资源的时候没有⾛默认的⽽是⾛了⾃定义的Servlet类,最终导致静态资源不能被访问

Request&Response 

请求对象和响应对象。

使用Servlet时见过的:

request:获取请求数据

response:设置响应数据

Request对象;

当我们的Servlet类实现的是Servlet接⼝的时候,service⽅法中的参数是ServletRequest和ServletResponse
当我们的Servlet类继承的是HttpServlet类的时候,doGet和doPost⽅法中的参数就变成HttpServletRequest和HttpServletReponse
ServletRequest 和 HttpServletRequest是继承关系,并且两个都是接口,无法创建对象,那么service和doGet这些方法参数中的对象是由谁创建的呢?——>RequestFacade:这个类实现了HttpServletRequest接口,也间接实现了ServletRequest接口。
Servlet类中的service方法、doGet方法或是doPost方法最终都是由Web服务器【Tomcat】来调用的, 是Tomcat提供了方法参数接口的具体实现类,并完成了对象的创建

中文乱码问题:

GET请求在Tomcat8.0以后的版本就不会出现了

POST请求的解决方案是:设置输入流的编码

request.setCharacterEncoding("UTF-8");

通用方式(GET / POST):需要先解码,再编码

new String(username.getBytes("ISO-8859-1"),"UTF-8");

Request请求转发:

请求转发(forward):一种再服务器内部的资源跳转方式

请求转发的实现⽅式:
req.getRequestDispatcher("资源B路径").forward(req,resp);
@WebServlet("/req5")
public class RequestDemo5 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
        System.out.println("demo5...");
        //在RequestDemo5的doGet方法中进行请求转发
        request.getRequestDispatcher("/req6").forward(request,response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
        this.doGet(request, response);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE5 Android下载zip文件并解压缩到指定位置

一、下载是使用市场的免费插件 二、解压缩是使用市场的免费插件 三、Android路径问题 windows平台下使用该插件没有问题,只是在Android平台下,只有使用绝对路径才能进行解压缩,所以如何获得Android下的绝对路径?增加C文件获得And…

Linux中的Shell编程

Linux中的Shell编程 shell编程快速入门 为什么要学习Shell编程? 1.Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。 2.对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本…

金蝶云星空自定义校验器和使用

文章目录 金蝶云星空自定义校验器和使用 金蝶云星空自定义校验器和使用 1、创建类,并继承抽象接口 using Kingdee.BOS.Core; using Kingdee.BOS.Core.Validation; using System;namespace mm.K3.SCM.App.Service.PlugIn.SC.Validator {public class AfterOrderChe…

服务器数据恢复-VSAN环境下ESXI虚拟机无法访问的数据恢复方案

一、用户信息: 广东某单位 二、数据恢复环境: 主机操作系统:ESXI 分区类型:VSAN 存储介质清单 :一共8台服务器节点,每节点2个磁盘组,其中1个磁盘组配置1块SSD固态硬盘,4块1.2T机…

Redis--苍穹

一、Redis入门 1.1、Redis简介 1.2 、redis启动 redis-server redis.windows.conf 1.3、redis连接 -h 指定IP-p 指定端口-a 密码 redis-cli.exe -h localhost -p 6379 -a 731206 二、redis数据类型 2.1、redis的五种数据类型 2.2、redis的各种数据类型的特点 三、Redis的…

计算机毕业设计选题推荐-跑腿平台微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

OSPF高级特性

OSPF高级特性(1) 一、OSPF不规则区域类型 产生原因:区域划分不合理,导致的问题 1、非骨干区域无法和骨干区域保持连通 2、骨干区域被分割 造成后果:非骨干区域没和骨干区域相连,导致ABR将不会帮忙转发区域间的路由信息。非骨干区…

前聚美优品运维负责人谈CMDB

导读CMDB大家并不陌生,在运维的工作中几乎都会用到CMDB,在聚美内部我们也称它为资产系统,管理整个服务器的资产,当然也包括一些配置上的变更。 讲师介绍 张川,前聚美优品运维负责人。任职聚美优品四年间,负…

我的云栖大会之旅:见证云计算创新的15年

云栖大会,曾经是一次不可思议的科技之旅,却如今已见证了我对云计算世界的15年关注和发展。第一次踏上云栖大会之旅,我记得是在2009年。那时的云计算还是一个新生事物,而云栖大会正是其中的奠基石。 我清楚地记得那个炎热的夏天&am…

leetcode做题笔记206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入&am…

使用VS2017打包安装程序如何修改默认安装路径

步骤如下: 首先找到安装项目 打开文件系统 点击鼠标右键,view-文件系统。这时打开文件系统 找到Application Folder的属性窗口 修改DefaultLocation的属性 如果想改变默认的安装路径,修改DefaultLocation的属性。 去掉计算机的名称。 完…

改进YOLOv3!IA-YOLO:恶劣天气下的目标检测

恶劣天气条件下从低质量图像中定位目标还是极具挑战性的任务。现有的方法要么难以平衡图像增强和目标检测任务,要么往往忽略有利于检测的潜在信息。本文提出了一种新的图像自适应YOLO (IA-YOLO)框架,可以对每张图像进行自适应增强,以提高检测…

基于PyTorch的中文情绪分析器设计与开发

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、相关基础理论2.1 主流深度学习框架2.2 神经网络2.2.1 神经网络基础 二、中文情感分类模型构建3.1 开发环境3.2 数据部分3.3 文本特征提取3.3.1、过滤标点符号3.3.2 中文分词、单词过滤 三 运行结果与分析五 结…

JAVA基础(JAVA SE)学习笔记(十)多线程

前言 1. 学习视频: 尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第三阶段:Java高级应用 9.异常处理 10.多线程 11.常用类和基础API 12.集合框架 13.泛型 14…

Android任务栈和启动模式

Andrcid中的任务栈是一种用来存放Activity实倒的容器。任务最大的特点就是先进后出,它主要有两个基本操作,分别是压栈和出栈。通常Andaid应用程序都有一个任务栈,每打开一个Activity时,该Activity就会被压入任务栈。每销毁一个Act…

day02 矩阵 2023.10.26

1.矩阵 2.矩阵乘法 3.特殊矩阵 4.逆矩阵 5.正交矩阵 6.几何意义 7.齐次坐标 8.平移矩阵 9.旋转矩阵 10.缩放矩阵 11.复合运算

linux杀毒软件下载、安装(在线安装、离线安装)

下载 ClamAVNet 离线安装 # 离线安装 rpm -ivh --prefix/usr/local/clamav clamav*linux.x86_64.rpm # 添加用户组和组成员 groupadd clamav useradd -g clamav clamav # 创建日志目录、病毒库目录和套接字目录 mkdir -p /usr/local/clamav/logs mkdir -p /usr/local/clamav/…

Flask Run运行机制剖析

一、前言 已经玩了一段时间Flask ,每次调用app.run(或flask run)就可以启动应用,今天我们就来了解一下run背后究竟做了些什么事情。 注:通过上面几行代码就可以启动一个Flask服务器,打开浏览器输入http://127.0.0.1:5000, 页面上…

【广州华锐互动】飞机诊断AR远程指导系统为工程师提供更多支持

随着科技的发展,飞机的维护工作也在不断进步。其中,AR(增强现实)技术的应用使得远程运维成为可能。本文将探讨AR在飞机诊断远程指导系统中的应用,以及它对未来航空维护模式的影响。 AR远程指导系统是一种使用增强现实技…

taro全局配置页面路由和tabBar页面跳转

有能力可以看官方文档:Taro 文档 页面路由配置,配置在app.config.ts里面的pages里: window用于设置小程序的状态栏、导航条、标题、窗口背景色,其配置项如下: tabBar配置:如果小程序是一个多 tab 应用&…