2017-02-23 50 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

終於,謝謝。榮譽男人 –