测试环境:tomcat 和struts框架
jsp文件不需要加:
<%--<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
html和jsp的相对路径都为http://127.0.0.1:8080/dem/
以下两个文件的访问效果相同
html文件
<!DOCTYPE html>
<html>
<head>
<title>test.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
This is my HTML page. <br>
<a href="user.do?flags=urls" target="_blank">urls</a>
</body>
</html>
jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
--%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%--<base href="<%=basePath%>">
--%><title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
<a href="user.do?flags=urls" target="_blank">urls</a>
</body>
</html>
注意:在src下的文件,在发布之后会保存在:当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/")+WEB-INF\classes下面
JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径 :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
public ActionForward urls(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
System.out.println("*******urls***************");
System.out.println("URL:"+request.getRequestURL());
System.out.println("绝对路径:"+request.getRequestURI());
System.out.println("文件的绝对路径"+request.getSession().getServletContext().getRealPath(request.getRequestURI()));
System.out.println("web的绝对路径"+request.getSession().getServletContext().getRealPath("/"));
return mapping.findForward("sucess");
}
*******urls***************
URL:http://172.19.50.44:8080/dem/user.do
绝对路径:/dem/user.do
文件的绝对路径F:\program\workspace\.metadata\.me_tcat\webapps\dem\dem\user.do
web的绝对路径F:\program\workspace\.metadata\.me_tcat\webapps\dem\