Servlet基础(4)

来源:互联网 发布:怎么淘宝开店 编辑:程序博客网 时间:2024/06/08 19:55

Servlet路径跳转
绝对路径:放之四海而皆准的路径
相对路径:相对于当前资源的路径

我们可以创建一个项目,并且创建一个Servlet,HelloServlet放在包servlet下。我们在index.jsp文件中可以都过超链接的方式来访问这个servlet。
如果使用相对路径来访问HelloServlet<a href="servlet/HelloServlet">访问HelloServlet</a>
这里要注意不能写为/servlet/HelloServlet,因为这里的第一个/表示服务器的根目录 。
如果想用绝对路径来访问HelloServlet的话,代码则为<a href="<"%=path%">/servlet/HelloServlet">访问HelloServlet</a>
这里边的path在上面有定义String path = request.getContextPath();它是表示项目的根目录。
这里是超链接的写法,如果是表单的话,里边的action的写法与这个超链接的写法也是完全一样的。

这时候又会想到在web.xml文件中也出现了/servlet/HelloServlet这种写法,即url-pattern标签处必须以/开头,这个/表示项目的根目录。

已经说了从index.jsp页面跳转到servlet的方法,那么如何反过来跳转呢?可以新建一个TestServlet,让index.jsp页面先可以跳转到TestServlet,然后在创建一个test.jsp页面让TestServlet可以跳转过来。
1.可以用请求重定向的方式来跳转
在doGet或者doPost方法中加上如下代码response.sendRedirect(request.getContextPath()+"/test.jsp");这里request.getContextPath()为项目的根目录,也就是用绝对路径来跳转。这里一定不可以写成response.sendRedirect("test.jsp");因为当前的路径是:项目名/包名/,这里包名是servlet,在这个路径下是找不到test.jsp文件的。
2.可以使用服务器内部跳转的方式
在doGet或者doPost方法中加上如下代码request.getRequestDispatcher("/test.jsp").forward(request,response);这里的/表示项目的根目录,如果去掉了/,则和前边出现的问题一样,目标地址是一个相对路径,在包名/servlet/ 这个路径下没有test.jsp文件。
除了写/test.jsp这种方式,还可以写为../test.jsp,因为这里的..表示回到上一层目录,所以是可以的。

原创粉丝点击