Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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中带有@WebServlet url模式注释的映射_Jsp_Servlets - Fatal编程技术网

JSP中带有@WebServlet url模式注释的映射

JSP中带有@WebServlet url模式注释的映射,jsp,servlets,Jsp,Servlets,当尝试制作一个简单的webservlet时,会遇到这样一个问题:如果我使用包含//的名称,它将找不到资源 这就是我的作品: Controller.java @WebServlet(urlPatterns = {"/Controller"}) public class Controller extends HttpServlet{ ... } 和JSP页面: <form action="Controller"> ... </form> JSP页面: <form a

当尝试制作一个简单的webservlet时,会遇到这样一个问题:如果我使用包含//的名称,它将找不到资源

这就是我的作品:

Controller.java

@WebServlet(urlPatterns = {"/Controller"})
public class Controller extends HttpServlet{ ... }
和JSP页面:

<form action="Controller">
...
</form>
JSP页面:

<form action="Controller">
...
</form>
<form action="/servletController/Controller">
...
</form>

...

我尝试了很多变化。所以我的问题是,如何正确地使用带有urlPatters注释的文件夹结构,还是不可能呢?

这是由您在
中指定的前导斜杠引起的。它使指定的URL域成为相对的。也就是说,它是相对于您在浏览器地址栏中看到的URL中的域根进行解析的,而不是相对于您在浏览器地址栏中看到的URL中当前请求的路径(文件夹)

假设您的JSP是由

http://localhost:8080/contextname/some.jsp 虽然servlet与您的映射一致,但实际上位于以下URL:

http://localhost:8080/contextname/servletController/Controller http://localhost:8080/contextname/servletController/Controller 相应地修复表单操作,使其与路径相对,而不是与域相对:

<form action="servletController/Controller">

或者,通过指定有效的域相对URL:

<form action="/contextpath/servletController/Controller">

或者,如果您担心上下文路径的动态性,而不想硬编码它:

<form action="${pageContext.request.contextPath}/servletController/Controller">

另见:

这是由您在
中指定的前导斜杠引起的。它使指定的URL域成为相对的。也就是说,它是相对于您在浏览器地址栏中看到的URL中的域根进行解析的,而不是相对于您在浏览器地址栏中看到的URL中当前请求的路径(文件夹)

假设您的JSP是由

http://localhost:8080/contextname/some.jsp 虽然servlet与您的映射一致,但实际上位于以下URL:

http://localhost:8080/contextname/servletController/Controller http://localhost:8080/contextname/servletController/Controller 相应地修复表单操作,使其与路径相对,而不是与域相对:

<form action="servletController/Controller">

或者,通过指定有效的域相对URL:

<form action="/contextpath/servletController/Controller">

或者,如果您担心上下文路径的动态性,而不想硬编码它:

<form action="${pageContext.request.contextPath}/servletController/Controller">

另见:

您好,我应该提到:我尝试了不使用前导斜杠,但仍然有相同的错误---HTTP Status 404-/WebApp Test/servletController/Confirm.jsp type Status report message/WebApp Test/servletController/Confirm.jsp description请求的资源不可用。Apache Tomcat/7.0.34---controller.java-code是否在特定的包中有关系
/WebApp Test/servletController/Confirm.jsp
似乎不是有效的servlet URL,不是。为什么要使用
而不是servlet中映射的
?或者,您可能做得太多,实际上没有运行您认为正在运行的代码,因此您需要清理/重建/重新部署/重新启动?噢!这是因为控制器将我的代码发送到新的JSP页面,如Confirm.JSP。因此,新问题进一步存在于我的代码中。但至少第一部分是通过使用不带前导斜杠的代码来解决的(如您所建议的)。谢谢!您好,我应该提到:我尝试了不带前导斜杠的方式,但仍然有相同的错误---HTTP Status 404-/WebApp Test/servletController/Confirm.jsp type Status report message/WebApp Test/servletController/Confirm.jsp description请求的资源不可用。Apache Tomcat/7.0.34---controller.java-code是否在特定的包中有关系
/WebApp Test/servletController/Confirm.jsp
似乎不是有效的servlet URL,不是。为什么要使用
而不是servlet中映射的
?或者,您可能做得太多,实际上没有运行您认为正在运行的代码,因此您需要清理/重建/重新部署/重新启动?噢!这是因为控制器将我的代码发送到新的JSP页面,如Confirm.JSP。因此,新问题进一步存在于我的代码中。但至少第一部分是通过使用不带前导斜杠的代码来解决的(如您所建议的)。谢谢!