我让我的Servlet响应所有“/”url-pattern。在内部我需要有时渲染html,所以我想。包含一个JSP页面,但我希望外部无法访问.jsp。另外,我如何将模型对象传递给它。
答案 0 :(得分:14)
我想。包含一个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.
也就是说,请注意,在/
上映射servlet会接管servletcontainer内置DefaultServlet
的工作以提供静态内容。您必须自己处理所有静态文件,如JS / CSS /图像。考虑为JSP视图选择更具体的url-pattern
/pages/*
或*.do
。如this answer中所述,最终在前面Filter
。
答案 1 :(得分:2)
很简单:
getServletContext().getRequestDispatcher("/WEB-INF/path/your.jsp").forward(request, response);