2016-03-28 12 views
2

現在私は内部作業ツール用に構築しているWebページを持っています。これは、ユーザーがログインしてデータベースからクエリを実行できるようにするサンプルWebサイトです。私は、ログインしていないユーザをログインページにリダイレクトするフィルタを実装しました。 doFilter機能は私のweb.xmlにこのクエリ文字列のJava JSPフィルタリング

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
    throws IOException, ServletException { 

    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    HttpSession session = request.getSession(false); 

    if (session == null || session.getAttribute("user") == null) { 
     // No logged-in user found, so redirect to login page. 
     response.sendRedirect(request.getContextPath() + "/Login.jsp"); 
    } else { 
     // Logged-in user found, so just continue request. 
     chain.doFilter(req, res); 
    } 
} 

のように見える私はhome.jspをアクセスする場合、直接それがログインページにリダイレクトするでしょう

<filter> 
<filter-name>loginFilter</filter-name> 
<filter-class>Servlets.LoginFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>loginFilter</filter-name> 
<url-pattern>/Home.jsp</url-pattern> 
</filter-mapping> 

を持っています。ただし、ログインすると、ユーザーはHome.jspページに移動し、ユーザーはデータベースに対して照会を実行できます。ホームURLは

http://localhost:8084/LiveTrades/Home.jsp

のようになります。しかし、彼らは入力を提供したら、それはユーザーがために「猫」を入力すると仮定すると(

http://localhost:8084/LiveTrades/Request?BIC=catのようなURL文字列を使用して結果を表示する新しいページに移動します入力 'BIC'フィールド)。

ログに記録されていないときにユーザーが上記のURLを直接入力すると、それはうまく処理されません。これは、私のフィルタがHome.jspページからのみ呼び出されているためです。どのように私はこの問題を回避してRequest *のページがフィルタされるのを防ぐことができますか?

Results.jspという別のjspページを持ち、データベースからの情報を処理するサーブレットにResults.jspにデータを渡す方が簡単でしょうか?次に、results.jspをweb.xmlに追加するだけです。

答えて

0

私は自分のウェブページを再構成することでこの問題を解決することができました。結果はJSPページを介して表示され、データはサーブレットからJSPページに渡されます。私のフィルタでは、結果JSPページを追加して問題を解決するだけです。

関連する問題