tomcat8使用jsp,servlet时的路径跳转问题
jsp页面路径
使用相对路径访问
index.jsp中的代码部分
<body> <h1>第一个servlet小例子</h1> <a href="hello/servlet">使用get请求访问</a> </body>
href中的链接“hello/servlet”指的是相对于index.jsp路径下的相对路径,若在前面加上/之后表示访问服务器的根目录下的hello/servlet。
web.xml中的servlet配置部分
<servlet> <servlet-name>servlet</servlet-name> <servlet-class>hello.servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet</servlet-name> <url-pattern>/hello/servlet</url-pattern> </servlet-mapping>
url-pattern必须以“/”开头,标签中的路径"/"表示项目根目录,后面的路径与<a>标签的路径相同。
使用绝对路径访问
index.jsp中的代码部分
<% String path = request.getContextPath();%>
path(即上下文的目录,项目的根目录)
<a href="<%=path%>/hello/HelloServlet">绝对路径访问helloservlet</a>
url-pattern配置同。
servlet路径跳转
同样分绝对路径和相对路径,以及重定向访问和服务器内部跳转。区别是是否是同一个url地址以及网页信息是否跟随。
重定向访问:
//请求重定向方式跳转到test.jsp,直接写是不对的,因为此时的路径是servletPathDirection/hello路径 // response.sendRedirect("test.jsp"); //可以使用绝对路径来写 response.sendRedirect(request.getContextPath()+"/test.jsp");
服务器内部跳转:
//使用服务器内部跳转方式访问页面,第一种是绝对路径,“/”表示项目根目录,第二种是相对路径方式,两种均可。 //request.getRequestDispatcher("/test.jsp").forward(request,response); request.getRequestDispatcher("../test.jsp").forward(request,response);