Я работаю над динамическим веб-приложением с простыми Java, Eclipse и Tomcat 7.
Пока я не внес указанные ниже изменения, все работало отлично.
Недавно я добавил домашнюю страницу Servlet Home.java
и домашнюю страницу jsp Home.jsp
и сопоставил сервлет с URL-адресом /
в файле web.xml, например
<servlet>
<display-name>Home</display-name>
<servlet-name>Home</servlet-name>
<servlet-class>my_proj.servlets.Home</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Home</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Сервлет Home.java
выглядит так:
public class Home extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("Servlet \"Home\" doGet working");
System.out.println("PathInfo: " + request.getRequestURL());
//If logged in, go to home page
request.getRequestDispatcher("/resources/jsp/home.jsp").forward(request, response);
//If not, go to login/register page
// TODO
}
}
И Home.jsp
довольно длинный, но все работает, кроме ресурсов, таких как CSS, изображения и т. Д. Они не загружаются страницей. Я ссылаюсь на них с
<link href="/my_proj/resources/css/custom.css" rel="stylesheet">
Причина
Из-за кода, который я добавил в метод doGet
выше, я вижу, что запросы на поиск страницы CSS на самом деле заканчиваются на сервлете Home
. Например, это часть того, что я вижу в консоли
Servlet "Home" doGet working
PathInfo: http://localhost:8080/my_proj/resources/css/custom.css
Итак, мой вопрос: как мне правильно отобразить мои страницы, чтобы не вызвать эту путаницу? Или как мне отделить свой CSS от использования этой системы сопоставления? Я не хочу, чтобы web.xml обрабатывал сопоставление с этими файлами.