2013-05-14 5 views
0

Я хочу создать приветственную страницу всякий раз, когда к ней обращается корень контекста приложения из Джерси. К сожалению, отображение сервлета задано как /* на моем web.xml и в соответствии с ссылкой this, плохо иметь сервлет и домашнюю страницу на том же месте. На данный момент, если я изменю шаблон URL моего сервлета, для этого потребуется много изменений кода, которые мы хотим предотвратить, поэтому мы идем по плохой практике, просто создавая приветственную html-страницу, используя код конца.Джерси: Внедрение страницы приветствия

Увидев, что это уже грязный способ, как мы можем сделать его немного чище? Есть ли лучший способ импортировать файлы jsp и css? Я не хочу, чтобы все они записывали в одну строку. :(

+0

привет, мой ответ решает вашу проблему :) – ltebean

ответ

1

Вы можете написать фильтр, чтобы перехватить запрос, в фильтре, проверить, является ли URL запроса является «/», если да, то направить запрос на странице приветствия.

public class MyFilter implements Filter { 
    private ServletContext servletContext; 

    public void init(FilterConfig config) throws ServletException { 
     servletContext = config.getServletContext(); 
    } 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     String path = ((HttpServletRequest)request).getPathInfo(); 
     if(path.equals("/")){ 
      servletContext.getRequestDispatcher("/welcome.jsp").forward(request, response); 
     } else { 
      chain.doFilter(request,response); 
     } 
    } 
} 

применять фильтр в web.xml:

<filter> 
    <filter-name>welcomeFilter</filter-name> 
    <filter-class>the filter class</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>welcomeFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
Смежные вопросы