2017-11-19 35 views
0

私はこれに固執し混乱しています。 WEB-INF/pages /の中に私のすべての.JSPファイルがあり、それらにアクセスしたい。WEB-INF内のJSPに正しくリダイレ​​クトされます

私はこれは素晴らしい作品と私​​は私が読んだもの、しかし、/forward/pages/index.jspを使用して、私のJSPファイルにアクセスすることができ、この

@WebServlet("/forward/*") 
public class ForwardController extends HttpServlet { 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     req.getRequestDispatcher("/WEB-INF" + req.getPathInfo()).forward(req, resp); 
    } 
} 

のように*//前方でのrequestDispatcherを行っていますこれはユーザーにとってアクセス可能ではないはずですが、今は明らかにそうです。これは正しい方法で行われていますか?また

、今私たちは、そのリンクにリダイレクトhttp://localhost/forward/pages/index.jsp とログアウトしたいたので、私は/ログアウトのボタンを使用していますが、今の前のリンクは次のように沿って、次の、http://localhost/forward/pages/logout

私はどのように克服することができますこれらの2つのこと?

敬具

+0

WEB-INF内のファイルは一般にアクセスできませんが、内部でアクセスできます。これは 'req.getRequestDispatcher("/WEB-INF "+ req.getPathInfo()).forward(req、resp); 'そうです。つまり、 '/ WEB-INF/... 'の下の新しいリソースへのアクセス要求をユーザーに送信するのではなく、* current *要求の応答を内部(非公開でアクセス可能な)JSPスクリプトで処理することを内部的に決定します。私が覚えていることは、ビュー層を表すJSPファイルをWEB-INFに配置して、コントローラ経由でしかアクセスできないようにすることをお勧めします。 – Pshemo

+0

はい、あなたは正しいですが、これが適用されているので、たとえばフォームを使用すると、forward/pages/index.jspのようにforwardの前に自動的にリンクを使用し、

xDotcom

答えて

0

としては、WEB-INF内のJSPページのみを使用すると、別のJSPから任意のJSPにアクセスする必要がある時はいつでもそう、あなたはコントローラを介してルーティングする必要があるコントローラを介してアクセスすることができました。 jspからjspにアクセスする場合は、WEB-INFの外にある必要があります

+0

わかりましたが、なぜWEB-INF内のファイルを隠したいのですか?ユーザーが知ることができる、どんな種類の情報がありますか?フォワードを使用すると、ユーザーがそれを知っていれば、そのURLにアクセスできますか?それはまた、URLを書き換えて隠されるべきですか? – xDotcom

+0

通常、動的ページはWEB-INFの中に置かれ、静的ページはWEB-INFの外に置くことができます。 WEB-INF外にあるページにはいつでも直接アクセスできます –

関連する問題