cultural context_servlet访问路径

cultural context_servlet访问路径绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示:

cultural context_servlet访问路径

图一  添加商品界面

系统的代码目录结构及add.jsp代码如图二所示:

cultural context_servlet访问路径

图二   系统的代码目录结构及add.jsp代码

${pageContext.request.contextPath}用于解决使用相对路径时出现的问题,它的作用是取出所部署项目的名字。

对于图片文件,如图二所示${pageContext.request.contextPath}/bookcover/101.jpg”使用的是绝对路径,${pageContext.request.contextPath}返回的是”/test”【注意:很多地方写的返回值是test/”,这是不对的】,拼接之后路径就变成:“/test/bookcover/101.jpg”。如果使用相对路径则为:“../../bookcover/101.jpg”(相对于add.jsp页面)。其他的CSS文件、Js文件、Jsp文件与图片文件相似,使用方法一样。

JavaWeb项目中,Jsp页面的form表单的action属性也常常会使用${pageContext.request.contextPath}来表示请求路径。如图二中【没有使用框架】的form表单的action属性为:action=”${pageContext.request.contextPath }/servlet/addBookServlet”。要理解这个请求地址,必须先了解web.xml【注意:web.xml必须放在WEB-INF文件夹下,原因见博客:http://blog.csdn.net/sun9528/article/details/72423112】的写法:

①完全匹配:以“/”开头,以字母(非“*”)结束

   如:上面提到的本项目中:<url-pattern>/servlet/addBookServlet</url-pattern>

②目录匹配:以“/”开头且以“/*”结尾

   如:<url-pattern>/test/*</url-pattern>

   <url-pattern>/*</url-pattern>

③扩展名匹配:以“*.”开头,以扩展名结束

   如:<url-pattern>*.do</url-pattern>

④“/”用来表明对应的Servlet为应用默认的Servlet。在这种情况下Servlet路径是请求的URI去掉上下文路径并且路径信息为null

本项目中“商品添加”功能的web.xml配置如下:

 <servlet> <servlet-name>AddBookServlet</servlet-name> <servlet-class>com.itheima.web.servlet.AddBookServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AddBookServlet</servlet-name> <url-pattern>/servlet/addBookServlet</url-pattern> </servlet-mapping>


当点击了页面提交表单的命令之后,一个请求发送到servlet容器,servlet容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url。访问的是http://localhost:8080/test/servlet/addBookServlet,我的应用上下文是test,容器会将http://localhost:8080/test去掉,剩下的/servlet/addBookServlet部分拿来做servlet的映射匹配。很明显可以通过图三的形式在web.xml中找到请求的动作类(url-pattern—>servlet-name—>servlet-class)。动作类为:com.itheima.web.servlet.AddBookServlet。然后由动作类在进行一些后台操作。

cultural context_servlet访问路径

图三 url-pattern—>servlet-name—>servlet-class

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192588.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • javac使用「建议收藏」

    javac使用「建议收藏」javac使用

  • 数据结构之数组和链表的区别

    数据结构之数组和链表的区别第一题便是数据结构中的数组和链表的区别数组(Array)一、数组特点:所谓数组,就是相同数据类型的元素按一定顺序排列的集合;数组的存储区间是连续的,占用内存比较大,故空间复杂的很大。但数组的二分查找时间复杂度小,都是O(1);数组的特点是:查询简单,增加和删除困难;1.1在内存中,数组是一块连续的区域1.2数组需要预留空间在使用前需要提前申请所占内存的大小,…

  • 跨平台移动APP开发进阶(二):HTML5+、mui开发移动app教程[通俗易懂]

    跨平台移动APP开发进阶(二):HTML5+、mui开发移动app教程[通俗易懂]前端开发APP,从HBuilder开始~序通过HTML5开发移动App时,会发现HTML5很多能力不具备。为弥补HTML5能力的不足,在W3C中国的指导下成立了www.HTML5Plus.org组织,推出HTML5+规范。HTML5+扩展了JavaScript对象plus,使得js可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头

  • 数据库置疑什么原因_sql2008数据库置疑

    数据库置疑什么原因_sql2008数据库置疑在MSSQLSERVER中一直有这样的问题,SQLSERVER的状态”置疑”,我们先来分析一下SQLSERVER数据库”置疑”的原因:1.错误的删除日志;2.硬件(HD)损坏,造成日志和数据文件写错误;3.硬盘的空间不够,比如日志文件过大;解决办法:这是最简单的办法是有数据库的全备份,然后恢复即可.步骤:1.删除原始的数据库:USEMASTERGODROPDATABASEDB_SUEPE…

  • 表单提交原理_防止表单重复提交

    表单提交原理_防止表单重复提交1.HTTP是如何提交表单的标签的属性enctype设置以何种编码方式提交表单数据。可选的值有三个:  application/x-www-form-urlencoded:这是默认的编码方式。它只处理表单域里的value属性值,采用这种变法方式的表单会将表单域的值处理成URL方式。  multipart/form-data: 这种编码方式会以二进制流的方式来处理表单数据,这中

  • JMM概述_jmi名词解释

    JMM概述_jmi名词解释简介什么是JMM内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型,Java虚拟机是一个实现了跨平台的虚拟系统,因此它也有自己的内存模型,即Java内存模型(JavaMemoryModel,JMM)。因此它不是对物理内存的规范,而是在虚拟机基础上进行的规范从而实现平台一致性,以达到Java程序能够“一次编写,到处运行

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号