有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重定向主页中的所有页面

我有一个包含很少jsp页面的web应用程序。欢迎访问我的主页。jsp和应用程序url类似于www.test。com

因此,每当用户点击url(www.test.com)时,它就会重定向到www.test。欢迎光临。jsp

现在我想知道,如果用户直接想要访问任何其他页面,比如www.test。com/*。jsp它应该总是重定向到我的主页www.test。欢迎光临。jsp

请就如何做提出建议


共 (1) 个答案

  1. # 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文件。jsp

    编辑:

    如果您只想在用户尚未访问欢迎jsp时重定向用户,请不要在web中使用上述代码。xml文件。而是在jsp中设置一个欢迎用户会话的标志。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);
        }
    }
    }