项目需求:所有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.getSession().getServletContext().getRealPath(request.getRequestURI())` - Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` 总的来说,正确理解和使用...
为了获取绝对路径,还需要结合其他方法,如`request.getScheme()`和`request.getServerName()`等。 ```java String requestUri = request.getRequestURI(); String absolutePath = scheme + "://" + serverName + ...
### 三、获取绝对路径 #### 3.1 使用`request.getRealPath("/")` `request.getRealPath("/")`方法可以获取Web应用在服务器上的物理路径。这在处理文件系统中的文件路径时非常有用,比如读取或写入服务器上的文件。...
- **类的绝对路径**:`Class.class.getClass().getResource("/").getPath()` - **获取工程的路径**:`System.getProperty("user.dir")` ##### 在Servlet中获取路径 - **获取工程目录**:`request.getSession()....
2. **绝对路径**:为了确保链接的稳定性和正确性,开发者通常使用绝对路径。在JSP中,我们可以使用`request.getContextPath()`方法来获取当前应用的上下文路径,即项目的根路径。例如,`<a href="<%=request....
5. **获取页面所在服务器的绝对路径**: ```java absPath = new java.io.File(application.getRealPath(request.getRequestURI())).getParent(); ``` 输出如 `D:\resin\webapps\TEST`。 ### 类文件中的路径...
- **根目录所对应的绝对路径**: 可以通过`request.getRequestURI()`获取。 - **文件的绝对路径**: 使用`application.getRealPath(request.getRequestURI())`。 - **当前Web应用的绝对路径**: 使用`application....
可以使用 request.getRequestURI() 获取当前应用的相对路径,使用 application.getRealPath(request.getRequestURI()) 获取当前文件的绝对路径,使用 application.getRealPath("/") 获取当前 Web 应用的绝对路径。...
#### (2) 获取上下文路径:`request.getContextPath()` 这将返回当前Web应用程序的上下文路径,即`http://example.com/TEST/`中的`/TEST`部分。这对于构建相对路径或在不同的应用之间共享资源时非常有用。 #### (3...
- 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - 当前Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` ServletContext对象...
- **文件的绝对路径**:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - **当前web应用的绝对路径**:`servletConfig.getServletContext().getRealPath("/")` 通过以上介绍...
- 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())`。 - 当前Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")`。 **最佳实践** 在...
在Java Web开发过程中,经常需要获取项目的根目录或某个特定资源文件的绝对路径。这些路径信息对于加载资源文件、处理文件上传下载等功能至关重要。本文将详细介绍在Eclipse环境中通过JSP、Servlet以及Java类获取...
为了动态获取当前Web应用的上下文路径,可以利用`<%=request.getContextPath()%>`表达式。 JavaScript代码同样需要考虑上下文路径,特别是在处理表单提交或AJAX请求时,确保路径正确无误是必要的。 ### 三、JSP/...
- 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - 当前Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` `ServletContext`对象...
1. **类的绝对路径**:通过`Class.class.getClass().getResource("/")`,然后调用`getPath()`来获取类文件所在的绝对路径。例如,返回`/D:/TEST/WebRoot/WEB-INF/classes/pack/`。 2. **得到工程的路径**:使用`...
<a>/XXX.jsp”> //这样获得的是绝对路径 <a> //这样获得的是相对路径 <a>/XXXX.jsp”> 能够更有效的防治连接的失效。 request.getContextPath()得到的是项目的名字,如果项目为根目录,则得到一个””,即空的字条串...
- `request.getSession().getServletContext().getRealPath("/")` 可以获取到Web应用的根目录的绝对路径。 - `this.getServletContext().getRealPath("")` 在servlet中使用,与上述方法类似,需要传入具体的包名...
需要注意的是,如果要使用绝对路径,可以使用 `getContextPath()` 方法来获取应用的根路径。 2. web.xml 中的路径 在 web.xml 文件中,`<servlet-mapping>` 中的 `<url-pattern>` 标记中只能使用绝对路径,必须以 ...