绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示:
图一 添加商品界面
系统的代码目录结构及add.jsp代码如图二所示:
图二 系统的代码目录结构及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配置如下:
- <span style="font-size:18px;"> <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></span>
当点击了页面提交表单的命令之后,一个请求发送到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。然后由动作类在进行一些后台操作。
图三 url-pattern--->servlet-name--->servlet-class
绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程的更多相关文章
- (转)绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示: 图一 添加商品界面 系统的代码目录结构及add.jsp代码如图二所示: 图二 系统的代码目录结构及add.js ...
- ${pageContext.request.contextPath} JSP取得绝对路径
一.问题 JSP中究竟采用绝对路径还是采用相对路径随着所采用技术的越来越复杂,这个问题也变得越来越难以解决. 1)采用相对路径遇到的问题 相对路径固然比较灵活,但如果想复制页面内的代 ...
- ${pageContext.request.contextPath}无效
发现在Tomcat7.0.58,在jsp页面使用${pageContext.request.contextPath}获取不到项目名称,网上找了很多答案试了都无效: 把Tomcat版本换成Tomcat7 ...
- pageContext.request.contextPath
jsp:<c:set var="ctxStatic" value="${pageContext.request.contextPath}"/>嵌套d ...
- pageContext.request.contextPath 和 request.getContextPath()
作用是取出部署的应用程序名,这样不管如何部署,所用路径都是正确的. El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.g ...
- JSP之项目路径问题(${pageContext.request.contextPath},<%=request.getContextPath()%>以及绝对路径获取)
本随笔这是作为一个记录使用,以备后查.项目完成之后本地部署OK,本地Linux部署OK,都可以正常的访问,可是当我把它部署到服务器上面的时候,首页可以正常访问,可是当发出请求的时候却报错误了,说找不到 ...
- ${pageContext.request.contextPath}的作用
刚开始不知道是怎么回事,在网上也查找了一些资料,看了还是晕. 看了另一个大侠的,终于有了点眉目. 那位大侠在博客中这样写道“然后在网上找,更让我郁闷的事,TMD!网上“抄袭”的真多啊!而且扯了一大堆! ...
- 获取当前路径 ${pageContext.request.contextPath}
${pageContext.request.contextPath}
- ${pageContext.request.contextPath}相关问题总结
(1)采用绝对路径,但为了解决不同部署方式的差别,在所有非struts标签的路径前加${pageContext.request.contextPath},如原路径为:”/images/title.gi ...
随机推荐
- Linux下通用打印系统CUPS使用教程
昨天研究了一下关于在Linux下实现打印操作的相关内容,整理记录如下: 1.什么是CUPS CUPS(Common UNIX Printing System,即通用Unix打印系统)是FedoraCo ...
- 《Cocos2d-JS开发之旅》重印在即,感谢大家的支持
3月第一次印刷的<Cocos2d-JS开发之旅>已经销售完毕,即将启动第二次印刷. 感谢各位读者的支持,最近<开发之旅>荣登京东cocos2d-x系列书籍的销售排行首位. 新版 ...
- Npoi导出excel整理(附源码)
前些日子做了一个简单的winform程序,需要导出的功能,刚开始省事直接使用微软的组件,但是导出之后发现效率极其低下,绝对像web那样使用npoi组件,因此简单的进行了整理,包括直接根据DataTab ...
- java中使用相对路径读取文件的写法总结 ,以及getResourceAsStream() (转)
https://blog.csdn.net/my__sun_/article/details/74450241 读取文件的写法,相对路径 在当前的目录结构中读取test.txt的有四种写法 简单粗暴的 ...
- SpringBoot bootstrap 配置文件没有生效
今天单独使用SpringBoot,发现其中的bootstrap.properties文件无法生效,改成yaml格式也无济于事. 最后调查发现原来是因为SpringBoot本身并不支持,需要和Sprin ...
- 对TCP连接被重置解决方案的探究
分类: 网络与安全 对TCP连接被重置解决方案的探究——跨过GFW通向自由网络的可行途径 2010年05月25日 星期二 上午 00:19 这个标题有点长——其实开始只想写破折号之前的部分,因为这种技 ...
- uml中活动图与流程图的区别
活动图定义: 活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流.活动图在本质上是一种流程图. 它是UML中用于对系统动态活动建模的图形,反映 ...
- Linux特殊的文件控制权限FACL
对文件设置特殊的权限,FACL(File Access Control List) ACL简介 基本ACL操作 getfacl 查看文件权限 setfacl 设定acl权限 设置file ...
- SQL之group by
转自:理解group by 先来看下表1,表名为test: 表1 执行如下SQL语句: 1 2 SELECT name FROM test GROUP BY name 你应该很容易知道运行的结果,没错 ...
- 【RS】Local Latent Space Models for Top- N Recommendation-利用局部隐含空间模型进行Top-N推荐
[论文标题]Local Latent Space Models for Top- N Recommendation (KDD-2018 ) [论文作者]—Evangelia Christakopou ...