重定向主页中的所有页面

时间:2014-06-05 08:32:45

标签: java jsp java-ee redirect

我有一个包含少量jsp页面的Web应用程序。我的主页是welcome.jsp,应用程序网址就像www.test.com

因此,每当用户点击网址(www.test.com)时,它都会重定向到www.test.com/welcome.jsp

现在我想如果用户想要访问任何其他页面,例如www.test.com/*.jsp,它应该总是重定向到我的主页www.test.com/welcome.jsp

请提供任何有关如何操作的建议。

1 个答案:

答案 0 :(得分:1)

您可以将以下映射添加到您的web.xml:

<servlet>
    <servlet-name>welcome</servlet-name>
    <jsp-file>welcome.jsp</jsp-file>
</servlet>

<servlet-mapping>
    <servlet-name>welcome</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

这会将.jsp文件的所有请求映射到welcome.jsp。

编辑:

如果您只想重新定位用户,如果他们还没有访问过欢迎jsp,请不要在web.xml文件中使用上面的代码。相反,在jsp中,在welcome.jsp:

中的用户会话中设置了一个标志
<c:set scope="session" var="sessionStarted" value="true"/>

然后添加create Filter以将其重定向为RedirectFilter.java

@WebFilter("*.jsp")
public class RedirectFilter implements Filter {

public void destroy() {}
public void init(FilterConfig fConfig) throws ServletException {}

/**
 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
 */
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    Object sessionStarted = ((HttpServletRequest)request).getSession(true).getAttribute("sessionStarted");
    if(sessionStarted==null){
        request.getServletContext().getRequestDispatcher("welcome.jsp").forward(request, response);
    }else{
        chain.doFilter(request, response);
    }
}
}