url-web.xml 中的模式无法识别多个 url

url-pattern in web.xml not recognising multiple url

我有 web.xml 这样的 :

  <servlet>
    <servlet-name>MyDisplayCourse</servlet-name>
    <servlet-class>edu.itn.controller.MyDisplayCourse</servlet-class>
</servlet>

servlet 的 servlet 映射是:

 <servlet-mapping>
    <servlet-name>MyDisplayCourse</servlet-name>
     <url-pattern>/admin/displaystudent</url-pattern>    
    <url-pattern>/displaystudent</url-pattern>    
 </servlet-mapping>

当我使用时:

 <url-pattern>/displaystudent</url-pattern>   

它找到了 servlet MyDisplayCourse,但是当我使用 append /admin/

 <url-pattern>/admin/displaystudent</url-pattern> 

这在我的网络应用程序中显示了 404 错误代码。有人可以帮助我为什么不支持 url 像 /admin/displaystudent 但只支持单个 url 像 /displaystudent only.

url-pattern

没有问题

问题出在 DisplayStudent.java

中的代码

替换

RequestDispatcher rd=request.getRequestDispatcher("StudentTable.jsp");

RequestDispatcher rd=request.getRequestDispatcher("/StudentTable.jsp");

ServletRequestSpec

If the path begins with a "/" it is interpreted as relative to the current context root

否则它会与你的相对路径 '/admin/StudentTable.jsp'

以下代码是getRequestDispatcher

的实现
@Override
public RequestDispatcher getRequestDispatcher(final String path) {
String realPath;
 if (path.startsWith("/")) {
    realPath = path;
 } else {
    String current = exchange.getRelativePath();
    int lastSlash = current.lastIndexOf("/");
    if (lastSlash != -1) {
        current = current.substring(0, lastSlash + 1);
    }
    realPath = CanonicalPathUtils.canonicalize(current + path);
 }
 return new RequestDispatcherImpl(realPath, servletContext);
}