Forward page using Servlet Controller
servlet is like :
String rootJspPath = "/WEB-INF/jsp"
String page = request.getParameter("pageName")!=null?request.getParameter("pageName").toString();
String forwardPage = rootJspPath + "/" + page ;
request.getRequestDispatcher(forwardPage).开发者_开发问答forward(request, response);
in Web.xml
<servlet>
<servlet-name>ForwardServlet</servlet-name>
<display-name>ForwardServlet</display-name>
<servlet-class>common.ForwardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ForwardServlet</servlet-name>
<url-pattern>/page</url-pattern>
</servlet-mapping>
now call forward using servlet controller
<a href="/page/common/Welcome.jsp">click here</a>
please suggest convenient way to call this..
I'd suggest:
<servlet>
<servlet-name>ForwardServlet</servlet-name>
<display-name>ForwardServlet</display-name>
<servlet-class>common.ForwardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ForwardServlet</servlet-name>
<url-pattern>/page/*</url-pattern>
</servlet-mapping>
for your mapping, and
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(req.getPathInfo());
dispatcher.forward(req,resp);
}
and then create the folder common
and put Welcome.jsp
in it.
Question wasn't the clearest: does that do what you want?
EDIT: Also, you should probably do some path verification on req.getPathInfo() to avoid people trying to directory hop using ..
characters, though for all I know the newer Java app servers catch that sort of badness automatically.
Based om what your servlet is doing:
<a href="/page/common/Welcome.jsp">click here</a>
should be
<a href="/page?pageName=common/Welcome.jsp">click here</a>
Which will look for Welcome.jsp in WEB-INF/jsp/common
folder.
精彩评论