我在Java Servlet中的RequestDispatcher遇到问题,如果Servlet路径不在根路径中,则它没有转发到特定的URL
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>
我认为问题出在道路上,但我不确定
参考方案
从ServletRequest#getRequestDispatcher javadoc:
指定的路径名可以是相对的,尽管它不能扩展
在当前servlet上下文之外。如果路径以“/”开头
被解释为相对于当前上下文根。这个方法
如果servlet容器无法返回a,则返回null
RequestDispatcher。
在代码中,您可以通过以下方式构建网址:
String url="WEB-INF/view/"+ view +".jsp";
因此,正如javadoc所说:
此方法与
ServletContext#getRequestDispatcher是此方法可以采用
相对路径。
因此,如果您的请求URI为"/admin/tambahArtikel"
,而您的转发URI并非以"/"
开头,则它将是相对的,因此将转发转发给"/admin/" + "WEB-INF/view/"+ view +".jsp"
如果需要转发到WEB-INF
目录中的资源,请以“/”开头URI,这样路径将相对于上下文根。
我有两个独立运行的项目,但是当我在TradingFramework中包含MailSender时,出现此NoClassDefFoundError:Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpSessionIdListene…
Java中的<<或>>>是什么意思? - javaThis question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…
jboss Web应用程序正在部署但未找到 - java好的,尝试将War部署到JBoss 4.0.4.CR2(不,我不能升级),并且在启动过程中没有异常,但是每当尝试访问应用程序时,我都会得到404。我检查了每个日志而且我没有发现任何例外。以下是我的web.xml文件:<?xml version="1.0" encoding="UTF-8"?> <web…
菱形运算符<>是否等于<?> - java我在util.TreeSet类中发现,其中一个构造函数正在使用具有空泛型类型的新TreeMap调用另一个构造函数。 public TreeSet(Comparator<? super E> comparator) { this(new TreeMap<>(comparator)); } new TreeMap<>是什么意思…
在eclipse外部的Tomcat上部署时,springSecurityFilterChain的注册重复 - java我对 Spring 有些陌生,但对所有配置仍然感到困惑。我看了几本不同的教程,似乎每个人的做法都不同。我有一个spring应用程序,可以使用tomcat插件在Eclipse上正常运行。但是,当将战争文件导出到tomcat本身时,tomcat不会启动并抛出严重:ContainerBase.addChild:启动org.apache.catalina.Lifec…