【发布时间】:2015-07-18 06:22:15
【问题描述】:
有没有办法通过仅从 servlet 向 JSP 分派,而不在 web.xml 中映射到 JspServlet (Tomcat 7) 的 <servlet-mapping> 来使用 JSP?
我想构建一个 webapp,它使用控制器 servlet 来处理输入并执行处理并最终移交给 JSP 进行渲染;即经典的 MVC 模式。
因此,servlet 包含(或转发到)JSP
request.getRequestDispatcher( "/view.jsp" ).include( request, response );
要完成这项工作,似乎除了在 web.xml 中有一个 <servlet-mapping> 之外别无他法,它将 "/view.jsp" 映射到 JspServlet。 (不管那个映射是什么。)
关键问题:有没有办法在不通过 servlet-mapping 暴露 JSP 的情况下使用它们? 如果 JSP 被映射,那么对它们的直接请求是可能的,这应该避免。 如果直接调用视图 JSP 将无法工作,缺少由 控制器 servlet。
没有使用任何框架。
【问题讨论】:
-
我不明白你的问题。您想直接访问 JSP 而不使用 servlet?
-
不,JSP 只能从 Controller servlet 调用。
-
哦,所以只有 servlet 可以调用它,外部用户看不到它们的内容,对吧?
-
将您的 JSP 放入
WEB-INF文件夹,即使使用 servlet 映射,它们也无法访问。我不认为没有 JSP servlet 就可以轻松使用 JSP -
是的。好的,内容,即源代码,无论如何都不应该被看到......这导致了另一个重要方面:如果 JSP 没有映射到 JspServlet,而是驻留在 webapp 的可访问文件夹中,那么它必须确保它们不是由 DefaultServlet 提供的,否则它们将在源中提供。