绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
来源:互联网 发布:linux怎么启动oracle 编辑:程序博客网 时间:2024/05/22 14:53
以系统的一个“添加商品”的功能为例加以说明,系统页面为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配置如下:
<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。然后由动作类在进行一些后台操作。
图三 url-pattern--->servlet-name--->servlet-class
- 绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
- 绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
- jsp中${pageContext.request.contextPath}的用法
- 绝对路径 ${pageContext.request.contextPath}
- pageContext.request.contextPath 绝对路径
- 相对路径与绝对路径 ${pageContext.request.contextPath}
- Jsp中使用绝对路径${pageContext.request.contextPath }
- ${pageContext.request.contextPath} jsp中绝对路径
- ${pageContext.request.contextPath} jsp中获取绝对路径
- ${pageContext.request.contextPath}取得绝对路径
- ${pageContext.request.contextPath}取得绝对路径
- Servlet学习一:web.xml中url-pattern匹配规则
- ${pageContext.request.contextPath }在jsp中取得绝对路径
- ${ctx}与${pageContext.request.contextPath}的区别
- Web.xml中设置Servlet和Filter时的url-pattern匹配规则
- ${pageContext.request.contextPath} JSP取得绝对路径
- ${pageContext.request.contextPath} JSP取得绝对路径
- ${pageContext.request.contextPath} JSP取得绝对路径
- 死锁及避免死锁的银行家算法
- Nginx配置Tomcat集群服务器的负载均衡
- GDOI2016酱油记(以前的文章补发)
- 二叉树的层次遍历、哈夫曼树及哈夫曼编码的建立
- php实现「浏览记录」按日期分组
- 绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
- 2654: tree
- Spark RDD API 参考示例(四)
- 微信开发之向用户群发文本消息
- 微信开发之获取用户详细列表
- Ajax与Pjax请求在服务端是如何识别的
- TPshop分销功能的使用与表设计
- 回归,分类与聚类:三个方向分析机器学习
- Tensorflow 学习笔记