2017-02-23 8 views
1

У меня есть web.xml, как это:URL-шаблон в web.xml не распознает несколько URL

<servlet> 
    <servlet-name>MyDisplayCourse</servlet-name> 
    <servlet-class>edu.itn.controller.MyDisplayCourse</servlet-class> 
</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> 

Он находит сервлетов MyDisplayCourse, но когда я использую добавление/администратор/

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

Это показывает 404 код ошибки в моем веб-приложении. Может кто-то помочь мне, почему не поддерживает url like/admin/displaystudent, но поддерживает только один URL-адрес, например/displaystudent.

+0

Возможный дубликат [много url-шаблонов для одного сервлета] (http://stackoverflow.com/questions/8995353/many-url-pattern-for-the-same-servlet) –

+0

это не вопрос, который я задаю , Я хочу использовать/admin/displaystudent вместо/displaystudent. –

+0

Как вы получаете доступ к своей заявке? Можете ли вы указать URL-адрес? –

ответ

1

Там нет проблемы с url-pattern

проблема с вашим кодом в DisplayStudent.java

заменить

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

с

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

ServletRequestSpec

Если путь начинается с «/» это интерпретируется как относительно текущего контекста корня

в противном случае он будет concatinate с относительным путем в вашем случае «/ админ/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); 
} 
+0

наконец, спасибо. Kudos man –

Смежные вопросы