request.getContextPath获取绝对路径
项目需求:所有jsp页必须通过Action转发,不能直接在地址栏链接jsp或<a href="aaa.jsp"></a>
我的应用如下:
1.LoginFilter
- public class LoginFilter implements Filter {
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- HttpServletRequest hRequest = (HttpServletRequest)request;
- HttpServletResponse hResponse = (HttpServletResponse)response;
- String uri = hRequest.getRequestURI();
- System.out.println("uri======"+uri);
- TBussinessInfo info = (TBussinessInfo) hRequest.getSession().getAttribute("user");
- if( "/b2cPlatform/jsp/phone/login/login.jsp".equals(uri) || "/b2cPlatform/".equals(uri)
- || "/b2cPlatform/jsp/phone/login/trunToLogin.jsp".equals(uri) )
- {
- chain.doFilter(request, response);
- }
- else
- {
- hResponse.sendRedirect(hRequest.getContextPath());//不允许直接访问jsp页,除非login.jsp等页
- }
- }
- public void destroy() {}
- public void init(FilterConfig arg0) throws ServletException {}
- }
2.web.xml
- <!-- 登录Filter -->
- <filter>
- <filter-name>LoginFilter</filter-name>
- <filter-class>com.hanpeng.b2c.phone.priv.LoginFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>LoginFilter</filter-name>
- <url-pattern>*.jsp</url-pattern>
- </filter-mapping>
二、网上其他资料
<%=request.getContextPath()%>是解决相对路径的问题,可返回站点的根路径。
<a href="<%=request.getContextPath()%>/XXX.jsp"> //这样获得的是绝对路径
<a href="XXX.jsp"> //这样获得的是相对路径
<a href="<%=request.getContextPath()%>/XXXX.jsp"> 能够更有效的防治连接的失效。
request.getContextPath()得到的是项目的名字,如果项目为根目录,则得到一个"",即空的字条串,
如果项目为dzjc, <%=request.getContextPath()% >/ 将得到dzjc/,服务器端的路径则会自动加上,
<a href="XXX.jsp"> 应该就是指当前路径下的这个xxx.jsp页面,有时候也可以在head里设置html:base
来解决路径的问题,不过用的最多的还是request.getContextPath。
用EL来表示相同功能的EL为:${pageContext.request.getContextPath()}
request.getScheme();
返回的协议名称,默认是http
request.getServerName()
返回的是你浏览器中显示的主机名
getServerPort()
获取服务器端口号
如果想得到工程文件的实际物理路径,可通过:<%=request.getRealPath("/")%>,这样页面就会输出:d:/web
现在request.getRealPath("") 这个方法已经不推荐使用了
可以使用
ServletContext.getRealPath(java.lang.String) instead.
request.getSession().getServletContext().getRealPath()
得到工程文件的实际物理路径,也就是绝对地址
简便用法:
String path=request.getContextPath();//path = /oa
request.setAttribute("path", path);
在页面中应用(EL) ${path}/images/xx.jpg(绝对定位:oa/images/xx.jpg)
可以解决复杂的相对路径定位失败的问题。
request.getContextPath获取绝对路径的更多相关文章
- JSP之项目路径问题(${pageContext.request.contextPath},<%=request.getContextPath()%>以及绝对路径获取)
本随笔这是作为一个记录使用,以备后查.项目完成之后本地部署OK,本地Linux部署OK,都可以正常的访问,可是当我把它部署到服务器上面的时候,首页可以正常访问,可是当发出请求的时候却报错误了,说找不到 ...
- jsp中【<%=request.getContextPath()%>】项目路径
1 2 "request.getContextPath()的值是 "<%=request.getContextPath()%><br/> &q ...
- request 获取各种路径
从request获取各种路径总结 request.getRealPath("url"); // 虚拟目录映射为实际目录 request.getRealPath("./&q ...
- request获取各种路径
equest.getRealPath() 这个方法已经不推荐使用了,代替方法是: request.getSession().getServletContext().getRealPath() 在ser ...
- 从request获取各种路径总结
一.获得都是当前运行文件在服务器上的绝对路径 在servlet里用: this.getServletContext().getRealPath() 在struts用: this.getServlet( ...
- 从request获取各种路径总结 request.getRealPath("url")
转载:http://blog.csdn.net/piaoxuan1987/article/details/8541839 equest.getRealPath() 这个方法已经不推荐使用了,代替方法是 ...
- request.getContextPath是为了解决相对路径的问题,可返回站点的根路径
假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果 ...
- request获取各种路径总结、页面跳转总结。
页面跳转总结 JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使 ...
- request.getcontextPath() 详解
request.getcontextPath() 详解 文章分类:Java编程 <%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径. 但 ...
随机推荐
- HDU --- 4006
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- 【转】unity3d input输入
Input 输入 按键 Input.GetKey(“up”) = Input.GetKey(KeyCode.UpArrow) 按住键盘上键 Input.GetKeyDown (“up”) 按下键盘上键 ...
- CMD打开远程并使用空白密码远程登录
记录一下,在单位管理局域网机器时 写出的小程序: 应用场景:比如异地A的局域网内主机需要远程登录进入系统调试,而A电脑的Radmin之类的远程控制软件无效,就只能使用操作系统自带的远程桌面功能,而,异 ...
- poj 2960 S-Nim(SG函数)
S-Nim Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3694 Accepted: 1936 Description ...
- LaTeX中参考文献管理以及注意事项
注意:版权所有,转载请注明出处 使用LaTeX写作,很重要的一个部分就是参考文献的制作,LaTeX使用bibtex管理文章的参考文献,bibtex即是一种工具,又是一种格式的代表,它要求使用*.bib ...
- javascript的几个问题
基础 1. 可选的分号 只有在缺少了分号就无法正确解析代码的时候,javascript,才会在一行的最后自动添加; a = 3 //自动填充 b = 4; var a a = 3 console.lo ...
- java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem异常
今天一不小心就碰到了这样的问题,以前从来没有碰到过,在网上搜了很多办法,思路正确,但是还是要根据自己的程序改变. 一开始写的是hql语句进行统计每个月的数据,但是试了很久,程序一直提醒hql语句异常, ...
- 查询,创建,扩充表空间&&impdp--------表空间大全
周六晚上还在办公室导入数据. 按schemas导入成功的关键是:导入的环境和源数据环境里面的表空间大小,表空间名字,需要一模一样 (当然,表空间大小创建到和源数据环境里面ues_size大小就可以了) ...
- linux内核学习-建议路线
三大经典书: LDD: Linux Device Driver 容易上手 LKD: Linux Kernel Development 通俗易懂 UDK: Understand Linux Kernel ...
- Android内存优化之——static使用篇(使用MAT工具进行分析)
这篇文章主要配套与Android内存优化之——static使用篇向大家介绍MAT工具的使用,我们分析的内存泄漏程序是上一篇文章中static的使用内存泄漏的比较不容易发现泄漏的第二情况和第三种情况—— ...