jsp页面跳转相对路径问题

das521 2011-06-28 08:36:24
环境用的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>
在线求解,谢谢各位~~
...全文
614 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
u011081007 2013-11-08
  • 打赏
  • 举报
回复
可是有了好多文件夹后,跳来跳去就乱了。。。
das521 2011-06-28
  • 打赏
  • 举报
回复
在说明下,1.jsp和2.jsp都放在同一文件夹下WebRoot下[Quote=引用楼主 das521 的回复:]
环境用的myEclipse 想由1.jsp跳转到2.jsp,其中使用到了相对路径的知识。问题如下:
1.jsp主要代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = requ……
[/Quote]
das521 2011-06-28
  • 打赏
  • 举报
回复
也是不正确的,用你的方法提交后的网址是http://localhost:8080/test/2.jsp,正确的网址应该是http://localhost:8080/test/test/2.jsp
[Quote=引用 7 楼 javaalpha 的回复:]
你的写法不对。推荐使用这样写,这样写绝对是正确的。

Java code
<form action="<%=basePath%>/2.jsp" method="post">
[/Quote]
das521 2011-06-28
  • 打赏
  • 举报
回复
应该是action="<%=path%>/2.jsp"
JavaAlpha 2011-06-28
  • 打赏
  • 举报
回复
你的写法不对。推荐使用这样写,这样写绝对是正确的。
<form action="<%=basePath%>/2.jsp" method="post">
das521 2011-06-28
  • 打赏
  • 举报
回复
能否说清楚点,新手,谢谢
[Quote=引用 4 楼 amos1989 的回复:]
你这种写法叫绝对路径。。
[/Quote]
das521 2011-06-28
  • 打赏
  • 举报
回复
但我感觉用action=<%=path%>"/2.jsp",因为现在path的值是"/test"
[Quote=引用 3 楼 feg545 的回复:]
因为已经有<base href="<%=basePath%>" />
所以本页面中的链接均相对于http://localhost:8080/test/ 而言的。
如果想提交到http://localhost:8080/test/test/2.jsp ,
那么表单的action设置为 test/2.jsp就可以了
[/Quote]
amos1989 2011-06-28
  • 打赏
  • 举报
回复
你这种写法叫绝对路径。。
福来哥 2011-06-28
  • 打赏
  • 举报
回复
因为已经有<base href="<%=basePath%>" />
所以本页面中的链接均相对于http://localhost:8080/test/ 而言的。
如果想提交到http://localhost:8080/test/test/2.jsp ,
那么表单的action设置为 test/2.jsp就可以了
das521 2011-06-28
  • 打赏
  • 举报
回复
自己先顶个
das521 2011-06-28
  • 打赏
  • 举报
回复
补充下:现在就是如何在<form action=""> 引号中如何写吧,我直接用action="test/2.jsp",这样是没问题的。

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧