使用Servlet Controller的转发页面

时间:2011-04-27 06:14:24

标签: jsp servlets

servlet就像:

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); 

在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>

现在使用servlet控制器调用

<a href="/page/common/Welcome.jsp">click here</a>

请建议方便的方式来打电话..

2 个答案:

答案 0 :(得分:0)

我建议:

<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>

用于您的映射,

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(req.getPathInfo());

    dispatcher.forward(req,resp);
}

然后创建文件夹common并将Welcome.jsp放入其中。

问题不是最清楚的:这样做你想要的吗?

编辑:此外,你应该对req.getPathInfo()进行一些路径验证,以避免人们尝试使用..字符跳转目录,尽管我知道新的Java应用服务器会遇到这种不良情况自动。

答案 1 :(得分:0)

基于你的servlet正在做什么:

<a href="/page/common/Welcome.jsp">click here</a>

应该是

<a href="/page?pageName=common/Welcome.jsp">click here</a>

将在WEB-INF/jsp/common文件夹中查找Welcome.jsp。