使用基于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服务器。
答案 0 :(得分:1)
要发送到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。