泽西岛:实施欢迎页面

时间:2013-05-14 04:24:18

标签: http jersey web.xml

每当访问Jersey应用程序的上下文根时,我想创建一个欢迎页面。不幸的是,servlet映射在我的web.xml上被设置为/*,并且根据this链接,将servlet和主页放在同一个地方是不好的。目前,如果我更改了我的servlet的URL模式,它将需要我们想要阻止的大量代码更改,因此我们通过使用后端代码生成欢迎html页面来进行不良操作。

看到这已经是肮脏的方式,我们怎样才能让它变得更干净?有没有更好的方法来导入jsp和css文件?我不想将它们全部硬编码到一个字符串中。 :(

1 个答案:

答案 0 :(得分:1)

您可以编写一个过滤器来拦截请求,在过滤器中检查请求网址是否为“/”,如果是,请将请求转发到欢迎页面。

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>