gpt4 book ai didi

java - web.xml 中的 url-pattern 无法识别多个 url

转载 作者:行者123 更新时间:2023-11-30 06:52:57 25 4
gpt4 key购买 nike

我有这样的 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。

最佳答案

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);
}

关于java - web.xml 中的 url-pattern 无法识别多个 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42406207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com