2017-02-23 65 views
1

我的web.xml这样的:URL模式不能识别多个URL

<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,但是当我使用添加/管理/

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

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

+0

[许多url模式为同一个servlet]可能的重复(http://stackoverflow.com/questions/8995353/many-url-pattern-for-the-same-servlet) –

+0

这不是我问的问题。我只想使用/ admin/displaystudent而不是/ displaystudent。 –

+0

你如何访问你的应用程序?你也可以提供网址吗? –

回答

1

没有与url-pattern

的问题是,在DisplayStudent.java

你的代码没有问题,更换

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

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

ServletRequestSpec

如果路径以“/”它被解释为相对 当前上下文根

否则它会与你的情况“/管理/ StudentTable相对路径concatinate的.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); 
} 
+0

终于,谢谢。荣誉男人 –