`

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)

可以解决复杂的相对路径定位失败的问题。

 

 

分享到:
评论

相关推荐

    java中相对路径,绝对路径问题总结.doc

    - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` 总的来说,正确理解和使用...

    web开发中获得绝对路径的方法

    为了获取绝对路径,还需要结合其他方法,如`request.getScheme()`和`request.getServerName()`等。 ```java String requestUri = request.getRequestURI(); String absolutePath = scheme + "://" + serverName + ...

    获取项目的相对路径和绝对路径

    ### 三、获取绝对路径 #### 3.1 使用`request.getRealPath("/")` `request.getRealPath("/")`方法可以获取Web应用在服务器上的物理路径。这在处理文件系统中的文件路径时非常有用,比如读取或写入服务器上的文件。...

    从HttpServletRequest获取各种路径总结

    - **类的绝对路径**:`Class.class.getClass().getResource("/").getPath()` - **获取工程的路径**:`System.getProperty("user.dir")` ##### 在Servlet中获取路径 - **获取工程目录**:`request.getSession()....

    jsp中获得路径的两种方法和获得url路径的方法(推荐).docx

    2. **绝对路径**:为了确保链接的稳定性和正确性,开发者通常使用绝对路径。在JSP中,我们可以使用`request.getContextPath()`方法来获取当前应用的上下文路径,即项目的根路径。例如,`&lt;a href="&lt;%=request....

    JAVA获取项目路径.doc

    5. **获取页面所在服务器的绝对路径**: ```java absPath = new java.io.File(application.getRealPath(request.getRequestURI())).getParent(); ``` 输出如 `D:\resin\webapps\TEST`。 ### 类文件中的路径...

    Java相对路径绝对路径总结

    - **根目录所对应的绝对路径**: 可以通过`request.getRequestURI()`获取。 - **文件的绝对路径**: 使用`application.getRealPath(request.getRequestURI())`。 - **当前Web应用的绝对路径**: 使用`application....

    Java开发绝对和相对路径问题

    可以使用 request.getRequestURI() 获取当前应用的相对路径,使用 application.getRealPath(request.getRequestURI()) 获取当前文件的绝对路径,使用 application.getRealPath("/") 获取当前 Web 应用的绝对路径。...

    JAVA中获取各种路径

    #### (2) 获取上下文路径:`request.getContextPath()` 这将返回当前Web应用程序的上下文路径,即`http://example.com/TEST/`中的`/TEST`部分。这对于构建相对路径或在不同的应用之间共享资源时非常有用。 #### (3...

    得到文件真实路径

    - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - 当前Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` ServletContext对象...

    java(Web)中相对路径,绝对路径问题总结

    - **文件的绝对路径**:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - **当前web应用的绝对路径**:`servletConfig.getServletContext().getRealPath("/")` 通过以上介绍...

    JAVA开发中相对路径汇编.pdf

    - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())`。 - 当前Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")`。 **最佳实践** 在...

    JAVA类,JSP,Servlet获取工程路径.txt

    在Java Web开发过程中,经常需要获取项目的根目录或某个特定资源文件的绝对路径。这些路径信息对于加载资源文件、处理文件上传下载等功能至关重要。本文将详细介绍在Eclipse环境中通过JSP、Servlet以及Java类获取...

    java Web 中相对路径绝对路径问题总结

    为了动态获取当前Web应用的上下文路径,可以利用`&lt;%=request.getContextPath()%&gt;`表达式。 JavaScript代码同样需要考虑上下文路径,特别是在处理表单提交或AJAX请求时,确保路径正确无误是必要的。 ### 三、JSP/...

    学习JAVA开发中相对路径.pdf

    - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - 当前Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` `ServletContext`对象...

    java获取路径

    1. **类的绝对路径**:通过`Class.class.getClass().getResource("/")`,然后调用`getPath()`来获取类文件所在的绝对路径。例如,返回`/D:/TEST/WebRoot/WEB-INF/classes/pack/`。 2. **得到工程的路径**:使用`...

    jsp中获得路径的两种方法和获得url路径的方法(推荐)

    &lt;a&gt;/XXX.jsp”&gt; //这样获得的是绝对路径 &lt;a&gt; //这样获得的是相对路径 &lt;a&gt;/XXXX.jsp”&gt; 能够更有效的防治连接的失效。 request.getContextPath()得到的是项目的名字,如果项目为根目录,则得到一个””,即空的字条串...

    基于从request获取各种路径的方法介绍

    - `request.getSession().getServletContext().getRealPath("/")` 可以获取到Web应用的根目录的绝对路径。 - `this.getServletContext().getRealPath("")` 在servlet中使用,与上述方法类似,需要传入具体的包名...

    Servlet中的相对路径和绝对路径归纳

    需要注意的是,如果要使用绝对路径,可以使用 `getContextPath()` 方法来获取应用的根路径。 2. web.xml 中的路径 在 web.xml 文件中,`&lt;servlet-mapping&gt;` 中的 `&lt;url-pattern&gt;` 标记中只能使用绝对路径,必须以 ...

Global site tag (gtag.js) - Google Analytics