`
zpl3001
  • 浏览: 93406 次
  • 性别: Icon_minigender_1
  • 来自: baga
社区版块
存档分类
最新评论

getContextPath、getServletPath、getRequestURI的区别

阅读更多
工程图见附件:
假定你的web application 名称为news,你在浏览器中输入请求路径:
http://localhost:8080/news/main/list.jsp
则执行下面向行代码后打印出如下结果:
1、 System.out.println(request.getContextPath()); //可返回站点的根路径。也就是项目的名字
打印结果:/news
   2、System.out.println(request.getServletPath());
打印结果:/main/list.jsp
3、 System.out.println(request.getRequestURI());
打印结果:/news/main/list.jsp
4、 System.out.println(request.getRealPath("/"));
打印结果:F:\Tomcat 6.0\webapps\news\test

随便说下Javaeye的插入图片功能有必要改进。
  • 大小: 20.3 KB
分享到:
评论
3 楼 nicegege 2014-02-19  
       
2 楼 ydsakycl 2008-10-28  
哈哈,很好,应该再给个例子如何统计页面访问量,呵呵

public class LogFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;

// Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}

// Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {

HttpServletRequest httpRequest = (HttpServletRequest) request;
String uriStr = httpRequest.getServletPath();

if (uriStr != null && !uriStr.trim().equals("")) {


UserInfo user = (UserInfo) httpRequest.getSession()
.getAttribute(Constant.USERINFO_IN_SESSION);
String userId = "anonymous", userName = "anonymous";
if (user != null) {
userId = user.getUserid();
userName = user.getUserName();
}

DhccPortalLog dpl = new DhccPortalLog();
dpl.setUrl(uriStr);
dpl.setUserid(userId);
dpl.setUsename(userName);
java.sql.Date pubTime = new java.sql.Date( new java.util.Date().getTime() );
dpl.setAccessdate(pubTime);
dpl.setIp(httpRequest.getRemoteAddr());

DhccPortalLogDAO dplDao = new DhccPortalLogDAO();
Transaction tx = dplDao.getSession().beginTransaction();
try {
dplDao.save(dpl);
tx.commit();
} catch (Exception e) {
tx.rollback();

} finally {
dplDao.getSession().close();
}
}

} catch (Exception sx) {
filterConfig.getServletContext().log(sx.getMessage());
} finally {
try {
filterChain.doFilter(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}

// Clean up resources
public void destroy() {
}
}

public class LogFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;

// Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}

// Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {

HttpServletRequest httpRequest = (HttpServletRequest) request;
String uriStr = httpRequest.getServletPath();

if (uriStr != null && !uriStr.trim().equals("")) {


UserInfo user = (UserInfo) httpRequest.getSession()
.getAttribute(Constant.USERINFO_IN_SESSION);
String userId = "anonymous", userName = "anonymous";
if (user != null) {
userId = user.getUserid();
userName = user.getUserName();
}

DhccPortalLog dpl = new DhccPortalLog();
dpl.setUrl(uriStr);
dpl.setUserid(userId);
dpl.setUsename(userName);
java.sql.Date pubTime = new java.sql.Date( new java.util.Date().getTime() );
dpl.setAccessdate(pubTime);
dpl.setIp(httpRequest.getRemoteAddr());

DhccPortalLogDAO dplDao = new DhccPortalLogDAO();
Transaction tx = dplDao.getSession().beginTransaction();
try {
dplDao.save(dpl);
tx.commit();
} catch (Exception e) {
tx.rollback();

} finally {
dplDao.getSession().close();
}
}

} catch (Exception sx) {
filterConfig.getServletContext().log(sx.getMessage());
} finally {
try {
filterChain.doFilter(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}

// Clean up resources
public void destroy() {
}
}
1 楼 qiufang1314 2008-10-08  
[img]:wink: [/img]

相关推荐

    Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的区别.doc

    ### Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的区别 #### 一、概述 在Java Web开发中,对于HTTP请求处理时经常需要用到`HttpServletRequest`对象的方法来获取客户端请求的...

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

    - 根目录的绝对路径:`request.getServletPath()` - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - Web应用的绝对路径:`servletConfig....

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

    正确地使用`request.getContextPath()`、`request.getServletPath()`、`request.getServletContext().getRealPath("/")`等方法可以帮助我们更好地管理Web应用中的文件路径问题。希望本文能对你有所帮助,在实际工作...

    从HttpServletRequest获取各种路径总结

    out.println("getServletPath: " + request.getServletPath()); out.println(" "); %> ``` #### 四、其他获取路径的方法 除了上述通过`HttpServletRequest`获取路径的方式外,还可以在类中或Servlet中获取...

    servetpath

    `getContextPath()` 方法返回的是Web应用程序的上下文路径,也就是从URL中标识Web应用的部分。在这个例子中,当用户访问 `http://localhost:8080/news/main/list.jsp` 时,`/news` 就是Web应用的上下文路径。这意味...

    得到文件真实路径

    - 根目录的绝对路径:`request.getServletPath()` - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - 当前Web应用的绝对路径:`servletConfig....

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

    - 根目录的绝对路径:`request.getServletPath()`。 - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())`。 - 当前Web应用的绝对路径:`servletConfig....

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

    可以使用 request.getServletPath() 获取当前应用的相对路径,使用 request.getSession().getServletContext().getRealPath(request.getRequestURI()) 获取当前文件的绝对路径,使用 servletConfig....

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

    - 请求的根目录绝对路径:`request.getServletPath()` - 文件的绝对路径:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - 当前Web应用的绝对路径:`servletConfig....

    jsp中获取地址的写法

    5. **`getRequestURI()`** 和 **`getServletPath()`**:这两个方法可以分别获取请求的 URI 和请求的 Servlet 路径。 ```java String requestURI = request.getRequestURI(); String servletPath = request....

    Java相对路径绝对路径总结

    例如,提交到a.jsp的action属性为`"/webapp/user/a.jsp"`或者使用`<%=request.getContextPath()%>`来动态获取Web应用的路径,即`"<%=request.getContextPath()%>/user/a.jsp"`。 - **JavaScript中的相对路径**: ...

    JAVA文件路径详细讲解[文].pdf

    - 在引用CSS、JavaScript、Action等资源时,推荐使用`request.getContextPath()`以确保引用的是Web应用内的文件。 - 使用绝对路径可以提高代码的可移植性和可维护性,减少因路径问题导致的错误。 理解并正确使用...

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

    2. **利用`request.getContextPath()`获取项目的上下文路径:** - 示例:如果项目名为“TEST”,则调用此方法返回的路径为`/TEST`。 3. **利用`request.getServletPath()`获取当前页面的目录全名:** - 示例:...

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

    - **根目录所对应的绝对路径**:`request.getServletPath()` - **文件的绝对路径**:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - **当前web应用的绝对路径**:`...

    Java相对路径与肯定路径的问题_.docx

    3. **`getContextPath()`**: `HttpServletRequest`的`getContextPath()`方法返回Web应用的上下文路径,如`/tree`,这是Web应用在服务器上的唯一标识。 **相对路径**则相对于当前工作目录或者某个已知的基路径。在...

    jsp_servlet路径问题

    - **根目录的绝对路径**:`request.getServletPath()` - **文件的绝对路径**:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - **当前Web应用的绝对路径**:`servletConfig....

    httpservletRequest的学习笔记

    5. `getContextPath()`:返回请求URL所属的Web应用程序路径,以“/”开头,表示相对于整个Web站点的根目录。 6. `getPathInfo()`:提供额外的路径信息,位于Servlet路径之后,查询参数之前,以“/”开头。 7. `...

    HttpServletRequest对象

    - `getContextPath()`:获取请求URL中属于Web应用程序的路径,通常是相对于Web应用根目录的路径。 - `getServletPath()`:获取请求映射到的Servlet路径,可以是Servlet的名称或者映射路径。 2. **获取请求头的...

    JSP中得到几种得到路径的方法

    `request.getServletPath()`方法可以获取当前请求的Servlet的路径,它不包含上下文路径,仅返回从Web应用根目录开始的Servlet路径。例如,如果页面位于`jsp`目录下,那么结果将是`/jsp/test.jsp`。这对于在页面内部...

Global site tag (gtag.js) - Google Analytics