以系统的一个“添加商品”的功能为例加以说明,系统页面为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配置如下:

[html] view plain copy
  1. <span style="font-size:18px;">  <servlet>
  2. <servlet-name>AddBookServlet</servlet-name>
  3. <servlet-class>com.itheima.web.servlet.AddBookServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>AddBookServlet</servlet-name>
  7. <url-pattern>/servlet/addBookServlet</url-pattern>
  8. </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

转载于:https://www.cnblogs.com/iOS-mt/p/8473211.html

绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程...相关推荐

  1. ${pageContext.request.contextPath}用法

    原文地址:https://www.cnblogs.com/langtianya/archive/2013/03/04/2942515.html 一.问题      JSP中究竟采用绝对路径还是采用相对 ...

  2. ${pageContext.request.contextPath }的使用

    利用SSM框架实现一个登入页面的验证 进入登入页面: <%@ page language="java" contentType="text/html; charse ...

  3. ${pageContext.request.contextPath} JSP取得绝对路径

    在使用的时候可以使用${pageContext.request.contextPath},也同时可以使用<%=request.getContextPath()%>达到同样的效果,同时,也可 ...

  4. #js--js获取${pageContext.request.contextPath}得到项目的根路径

    我们知道,在js中直接获取jsp中的EL表达式是无法获取的,要想获取${pageContext.request.contextPath}的值,我们可以使用下面的两种方式: 1.在${pageConte ...

  5. ${pageContext.request.contextPath}无效

    发现在Tomcat7.0.58,在jsp页面使用${pageContext.request.contextPath}获取不到项目名称,网上找了很多答案试了都无效: 把Tomcat版本换成Tomcat7 ...

  6. jsp里面不能使用${pageContext.request.contextPath}解决方案

    问题:  在jsp中使用${pageContext.request.contextPath}获取相对路径,可是最后路径变为:http://localhost:8080/TMIS/$%7BpageCon ...

  7. ${pageContext.request.contextPath}

    为什么80%的码农都做不了架构师?>>>    ${pageContext.request.contextPath}等价于<%=request.getContextPath() ...

  8. 总结3:IDEA中使用${pageContext.request.contextPath}填写路径时出错

    问题描述: 之前一个项目在eclipse中开发的,其中有使用到 <jsp:include page="${pageContext.request.contextPath}/../hea ...

  9. html获取contextpath,JavaScript中${pageContext.request.contextPath}取值问题及解决方案

    在JSP里取${pageContext.request.contextPath},方式一是可以正常取到,但方式二却取到的是 字符"${pageContext.request.contextP ...

最新文章

  1. 温控自动烘焙系统的研究与实现
  2. 在Linux系统安装Node.js
  3. Swift2.0语言教程之类的嵌套与可选链接
  4. linux mysql 事务_linux下mysql Insert update delete 事务 用户管理
  5. 超实用!19条Android平台设计规范
  6. 数学--数论--逆元(拓展欧几里得)模板
  7. React开发(252):react项目理解 ant design spining加载中
  8. 从企业管理看报表软件的应用
  9. Lua 函数参数 默认实参
  10. quartz.net 时间表达式----- Cron表达式详解
  11. DPI-1047: Cannot locate a 64-bit Oracle Client library
  12. 临床数据库挖掘系列2-使用SEER.stat软件提取数据
  13. [网络安全自学篇] 八十二.WHUCTF之隐写和逆向类解题思路WP(文字解密、图片解密、佛语解码、冰蝎流量分析、逆向分析)
  14. 华兴数控g71外圆循环编程_数控车G71内外圆切削复合循环
  15. 数据结构----主席树
  16. matlab画光顺曲线,曲线曲面
  17. win8服务器防火墙配置文件,Win8自带防火墙吗,Win8防火墙在哪里(适用于Win8.1)?
  18. php源码 炸鸡网络验证系统源码/功能强大
  19. amr怎么转换成mp3?
  20. AVOS Cloud Hackathon - SegmentFault

热门文章

  1. 是时候详细探究webview了
  2. hiredis源码分析与简单封装
  3. live555 windows下编译以及修订
  4. python实现解析oui.txt并抽取MAC前缀及组织名称
  5. GBK转unicode码查询表的改进
  6. mysql用的sql标准_标准SQL语言的用法_MySQL
  7. 使用base标签后图片无法加载_Spring 源码学习(二)-默认标签解析
  8. 【flink】Flink源码编译:Flink1.11+版本编译及部署
  9. 95-872-055-源码-CEP-Pattern API
  10. 【es】Node与NodeEnvironment的实例化