現在私は内部作業ツール用に構築している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に追加するだけです。