包含Servlet中的私有JSP

我让我的Servlet响应所有“/”url-pattern。 在内部我需要有时候渲染html,所以我想。包含一个JSP页面,但我希望外部无法访问.jsp。 另外,我如何将模型对象传递给它。

我想。包含一个JSP页面,但我希望外部无法访问.jsp。

把它放在/WEB-INF文件夹中。 客户端无法访问它,但RequestDispatcher可以访问它。

 request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 

另外,我如何将模型对象传递给它。

将其设置为请求属性。

 request.setAttribute("bean", bean); // It'll be available as ${bean} in JSP. 

也可以看看:

  • Servlets标记信息页面 (包含Hello World示例和有用的链接)
  • JSP / Servlet的隐藏function
  • 设计模式基于Web的应用程序

也就是说,请注意将servlet映射到/接管servletcontainer的内置DefaultServlet以提供静态内容。 您必须自己处理所有静态文件,如JS / CSS /图像。 考虑为JSP视图选择更具体的url-pattern/pages/**.do 。 如本答案所述,最终在前面带来一个Filter

这很简单:

  1. 将您的JSP文件放在WEB-INF文件夹中。
  2. 在你的servlet中,执行getServletContext().getRequestDispatcher("/WEB-INF/path/your.jsp").forward(request, response);