日期:2014-05-18  浏览次数:20756 次

jsp页面跳转相对路径问题
环境用的myEclipse 想由1.jsp跳转到2.jsp,其中使用到了相对路径的知识。问题如下:
1.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 '1.jsp' starting page</title>
    
  </head>
  
  <body>
    <h4>用户登录</h4>
    <%out.print(path); %><br>
    <%out.print(basePath); %>
<form action="<%=path %>/2.jsp" method="post">
<p><input type="submit" value="提交"></p>
</form>
  </body>
</html>
注意:测试中path的值是/test,basePath的值是http://localhost:8080/test/ 
但现在问题是跳转不到2.jsp,点击“提交后的网址是”:http://localhost:8080/test/2.jsp,正确情况应该是http://localhost:8080/test/test/2.jsp ,
2.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 '1.jsp' starting page</title>
    </head>
  
  <body>
     <%
     out.print(path);
     %><br>
     <%out.print(basePath); %><br>
     <%
    
if("admin".equals(name) && "admin".equals(pwd)) {
session.setAttribute("user", name);
out.print(session.getAttribute("user"));

}
// response.sendRedirect("index.jsp");
%>
  </body>
</html>
在线求解,谢谢各位~~

------解决方案--------------------
因为已经有<base href="<%=basePath%>" />
所以本页面中的链接均相对于http://localhost:8080/test/  而言的。
如果想提交到http://localhost:8080/test/test/2.jsp ,
那么表单的action设置为  test/2.jsp就可以了
------解决方案--------------------
你这种写法叫绝对路径。。
------解决方案--------------------
你的写法不对。推荐使用这样写,这样写绝对是正确的。
<form action="<%=basePath%>/2.jsp" method="post">