JSP中带有@WebServlet url模式注释的映射
当尝试制作一个简单的webservlet时,会遇到这样一个问题:如果我使用包含//的名称,它将找不到资源 这就是我的作品: Controller.javaJSP中带有@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(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">
另见:
/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。因此,新问题进一步存在于我的代码中。但至少第一部分是通过使用不带前导斜杠的代码来解决的(如您所建议的)。谢谢!