Java Servlet请求调度程序';不要转发url
我对Javaservlet中的RequestDispatcher有问题,如果Servlet路径不在根路径中,它就不会转发到特定的urlJava Servlet请求调度程序';不要转发url,java,servlets,requestdispatcher,Java,Servlets,Requestdispatcher,我对Javaservlet中的RequestDispatcher有问题,如果Servlet路径不在根路径中,它就不会转发到特定的url protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userPath=request.getServletPath(); Strin
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userPath=request.getServletPath();
String view = null;
if(userPath.equals("/admin")) //it's okay, forwarded
{
view="admin";
}
else if(userPath.equals("/admin/tambahArtikel")) //it's not forwarded
{
view="tambahArtikel";
}
else if(userPath.equals("/kategori")) //it's okay, forwarded
{
view="kategori";
}
String url="WEB-INF/view/"+ view +".jsp";
request.getRequestDispatcher(url).forward(request, response);
}
这是我的web.xml
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>ServletController</servlet-name>
<servlet-class>com.agung.webhakakses.servlet.ServletController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletController</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletController</servlet-name>
<url-pattern>/admin/tambahArtikel</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletController</servlet-name>
<url-pattern>/kategori</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
服务器控制器
com.agung.webhakakses.servlet.ServletController
服务器控制器
/管理员
服务器控制器
/行政/塔姆巴亚蒂克尔
服务器控制器
/卡泰戈里
30
我认为问题出在路径上,但我不确定ServletRequest#getRequestDispatcher:
指定的路径名可能是相对的,但不能扩展
在当前servlet上下文之外。如果路径以“/”开头,它将
被解释为相对于当前上下文根。这种方法
如果servlet容器无法返回
请求调度器
在代码中,以以下方式构建url:
String url="WEB-INF/view/"+ view +".jsp";
因此,正如javadoc所说:
这种方法与传统方法的区别
ServletContext#getRequestDispatcher是指此方法可以
相对路径
因此,如果您的请求URI是“/admin/tambahArtikel”
,并且您的转发URI不是以“/”
开头,那么它将是相对的,因此转发将发送到“/admin/”+“WEB-INF/view/“+view+”.jsp”
如果您需要转发到
WEB-INF
目录中的资源,请用“/”启动URI,这样路径将相对于上下文根。当您尝试此操作时会发生什么?当我尝试此操作时,它会提供我想要的页面,但给我404错误信息:“我的意思是根是什么?”