我有这样的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这样的网址,但只支持像/ displaystudent这样的单个网址。
答案 0 :(得分:1)
url-pattern
问题在于您在DisplayStudent.java中的代码
替换
RequestDispatcher rd=request.getRequestDispatcher("StudentTable.jsp");
带
RequestDispatcher rd=request.getRequestDispatcher("/StudentTable.jsp");
如果路径以“/”开头,则将其解释为相对于 当前上下文根
否则它会在您的案例'/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);
}