質問

私はJSPページを少数含んでいるWebアプリケーションを持っています。そして私のホームページはwelcome.jspであり、アプリケーションのURLはwww.test.com

のようなものです。

だから、ユーザーがURLを打つたびに(www.test.com)www.test.com/welcome.jsp

にリダイレクトします。

ユーザーがwww.test.com/*.jspのような他のページに直接アクセスしたい場合は、常にwww.test.com/welcome.jsp

のままにします。

それをやる方法についての提案をあげてください。

役に立ちましたか?

解決

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"/>
.

次に、この1つの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);
    }
}
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top