从servlet转发到servlet

时间:2014-04-12 21:32:53

标签: java servlets weblogic

使用基于servlet的应用程序的Front Controller,但无法找到如何从前控制器转发到常规控制器。

这是我的web.xml:

<servlet>
    <servlet-name>FrontServlet</servlet-name>
    <servlet-class>FrontServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>IndexServlet</servlet-name>
    <servlet-class>application.controllers.IndexServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>FrontServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

FrontServlet

public class FrontServlet extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext context= getServletContext();
        RequestDispatcher rd = context.getRequestDispatcher("IndexServlet");
        rd.forward(request, response);
    }
}

此代码返回:java.lang.NullPointerException。我正在使用WebLogic服务器。

2 个答案:

答案 0 :(得分:1)

  1. 你有一个IndexServlet的servlet映射
  2. 要发送到servlet,你需要像“/IndexServlet.do”这样的路径

    this.getServletContext()               .getRequestDispatcher(“/ IndexServlet.do”)               .forward(请求,回复); 要么 response.sendRedirect(“/ IndexServlet.do”);

    假设您的映射类似于

    &LT; servlet的映射&GT;
    &LT; servlet的名称&gt;&IndexServlet LT; / servlet的名称&gt;
    &LT; URL模式&GT; /IndexServlet.do< / url-pattern的&GT;
    &LT; / servlet的映射&GT;

    我没有尝试过根本不使用.do或。 但我会让它与.do一起工作,然后尝试改变它

答案 1 :(得分:0)

您没有为IndexServlet提供servletMapping,requestDispatcher也在URL上工作。

在web.xml中提供适当的servletMapping,如下所示:

<servlet>
    <servlet-name>FrontServlet</servlet-name>
    <servlet-class>FrontServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>IndexServlet</servlet-name>
    <servlet-class>application.controllers.IndexServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>FrontServlet</servlet-name>
    <url-pattern>/frontServlet.html</url-pattern>
</servlet-mapping>


<servlet-mapping>
    <servlet-name>FrontServlet</servlet-name>
    <url-pattern>/indexServlet.html</url-pattern>
</servlet-mapping>

在FrontServlet.java中,将网址设为“/indexServlet.html”。它会工作。 如果您要转发的视图不可访问,则抛出NullPointerException。您的IndexServlet.java转发请求是否为任何jsp / html?在这种情况下,请检查是否可以使用http:// {webapp} /loginjsp.jsp访问jsp / html。