【问题标题】:url-pattern in web.xml not recognising multiple urlweb.xml 中的 url 模式无法识别多个 url
【发布时间】:2017-07-13 08:54:24
【问题描述】:

我有这样的 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 错误代码。谁能帮我为什么不支持像 /admin/displaystudent 这样的 url 但只支持像 /displaystudent 这样的单个 url。

【问题讨论】:

  • 这不是我要问的问题。我只想使用 /admin/displaystudent 而不是 /displaystudent。
  • 您如何访问您的应用程序?你也可以提供网址吗?
  • 两个网址都应该可以正常工作。您可以创建一个可以重新创建问题的示例项目吗?
  • @N00bPr0grammer localhost:8080/practiceweb/admin/displaystudent

标签: java servlets web.xml url-pattern


【解决方案1】:

url-pattern没有问题

问题在于您在 DisplayStudent.java 中的代码

替换

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

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

ServletRequestSpec

如果路径以“/”开头,则将其解释为相对于 当前上下文根

否则它会在你的情况下与相对路径连接'/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);
}

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2012-10-03
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2010-11-08
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多