Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp,Servelet URL差异_Jsp_Url_Servlets - Fatal编程技术网

Jsp,Servelet URL差异

Jsp,Servelet URL差异,jsp,url,servlets,Jsp,Url,Servlets,JSP和servlet中的绝对路径有什么区别。 我的示例项目结构: 经过几次尝试,我发现了以下内容 Inside Test.jspunder网络内容: 链接到1.html, 在web-INF下的web.xml内部: 在我从1.html调用Serv servelt时提供确切的aboslute路径 /此处不包括路径测试 在Serv.java内部: 将sendRedirect方法使用到1.html: res.sendRedirect/PathTest/html/1.html 在Serv.java内部

JSP和servlet中的绝对路径有什么区别。 我的示例项目结构:

经过几次尝试,我发现了以下内容

Inside Test.jspunder网络内容: 链接到1.html,

在web-INF下的web.xml内部: 在我从1.html调用Serv servelt时提供确切的aboslute路径 /此处不包括路径测试

在Serv.java内部: 将sendRedirect方法使用到1.html: res.sendRedirect/PathTest/html/1.html

在Serv.java内部: 将getRequestDispatcher方法用于1.html: RequestDispatcher dispatch=req.getRequestDispatcher/html/1.html; /此处不包括路径测试

我的问题是:为什么在上述情况下需要不同的绝对路径,以及容器在这种情况下如何查找资源

我已经找到了一种避免这种混淆的方法,方法是将context root='/' 通过这种方式,我不必在任何场景中包含“/PathTest”。但是将上下文根作为“/”是否是一种好的做法?

/PathTest是Servlet/JSP术语中名为context path的概念的值,它是Servlet上下文的一个属性

您面临两个环境:浏览器和Servlet/JSP容器

浏览器只看到HTTP协议,以及通过它传输的任何内容:HTML、CSS和javascript。当您生成这些内容时,需要在任何需要的地方放置/PathTest,但这并非全部事实。现在,上下文路径仅在Servlet/JSP环境中有意义。你的浏览器不知道什么,它可能在处理一些完全无关的技术,甚至不是JSP容器,尽管它关心

在Servlet/JSP容器中,您也不需要指定值/PathTest,而且不应该!如果需要,请使用HttpServletRequest.getContextPath获取实际值

现在让我们分别来看看这些案例:

在JSP中:将输出HTML,这是浏览器看到的内容,但内容是由JSP容器生成的,因此需要输入上下文路径的值,以便链接能够正常工作

在web.xml内部,不需要放置上下文路径,它仅由服务器解释,并且服务器已经知道tcontext path的值已经在其他地方了

HttpServletResponse.sendRedirectString位置将向浏览器发送一个临时重定向响应HTTP status 3xx。因此,您需要手动包含上下文路径。在某些情况下,您可能希望在上下文路径之外重定向

HttpServletRequest.getRequestDispatcherString路径将仅用作在上下文路径中转发或包含资源的方法

Dynamic Project name:PathTest
1.html path:PathTest\WebContent\html\1.html
Context root of Project =PathTest