话不多说 先贴代码
a1.jsp
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!doctype html>
<html>
<head>
<meta content="text/html;charset=utf-8">
<title></title>
</head>
<body style="font-size: 24px;">
a1.jsp's content<br/>
相对路径写法:
<a href="../biz02/a2.jsp">a2.jsp</a>
绝对路径写法:
<a href="/servletjsp02demo/path/biz02/a2.jsp">a2.jsp</a>
变量路径写法:
<a href="<%=request.getContextPath()%>/path/biz02/a2.jsp">a2.jsp</a>
</body>
</html>
a2.jsp
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!doctype html>
<html>
<head>
<meta content="text/html;charset=utf-8">
<title></title>
</head>
<body style="font-size: 24px;">
a2.jsp's content<br/>
相对路径写法:
<a href="../biz01/a1.jsp">a1.jsp</a>
绝对路径写法:
<a href="/servletjsp02demo/path/biz01/a1.jsp">a1.jsp</a>
变量路径写法:
<a href="<%=request.getContextPath()%>/path/biz01/a1.jsp">a1.jsp</a>
</body>
</html>
SomeServlet.java
public class SomeServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
System.out.println("SomeServlet's service is running...");
//重定向到biz01/a1.jsp
request.getRequestDispatcher("/path/biz02/a2.jsp").forward(request, response);
}
}
form.jsp
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!doctype html>
<html>
<head>
<meta content="text/html;charset=utf-8">
<title></title>
</head>
<body style="font-size: 24px;">
<form action="<%=request.getContextPath()%>/some" method="post">
<input type="text" name="name" /><br> <input type="submit"
value="提交" />
</form>
</body>
</html>
web.xml中servlet的配置情况
<servlet>
<servlet-name>SomeServlet</servlet-name>
<servlet-class>servlet.eljstl.path.SomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SomeServlet</servlet-name>
<url-pattern>/some</url-pattern>
</servlet-mapping>
为了保证效果 所以代码贴的比较全 对不起各位大大了 以下是结构图
我碰到的问题是 在调试的时候 我能正常访问a1.jsp与a2.jsp之间的页面跳转,但是访问form.jsp时,经过servlet的重定向之后,可以正常访问到下一层页面(a1||a2),但是在这层页面通过相对路径访问(a1||a2)的时候,会告诉我找不到页面,然后这是浏览器地址栏信息:http://localhost:9101/biz01/a1.jsp。看到这个地址栏,我知道一定是路径出了问题,因为从(a1||a2)之间互相跳转的时候,路劲不是这样的。在chrome开发工具里面看超级链接也是一样的,但这个问题让我很困惑,所以希望看到的大大可以给我做出解答!