まず、私がやろうとしていることを説明しましょう。 私はユーザーがいるWebサイトを持ち、view_profile.jspページへのアクセスをログに記録されたユーザーに限定したいとします。Javaフィルタを経由してRequestDispatcherで転送する
<url-pattern>/auth/*</url-pattern>
index.jspページ上のユーザーがリンクをクリックしますと、このフィルタが実行され、この
try {
HttpSession session = ((HttpServletRequest)request).getSession();
UserBean user = (UserBean)session.getAttribute("currentUser");
if (user != null && user.isValid()){
System.out.println("Filter: context -> " + ((HttpServletRequest)request).getContextPath()); //returns ""
chain.doFilter(request, response);
}
else{
((HttpServletResponse)response).sendRedirect("/login.jsp"); //works fine
}
次のようになります:
<a href="./auth/view_profile?profile=${sessionScope.currentUser.username}">
//yeah, he will 'view' himself - it's just an example
私はにマッピングされたフィルタを持っていますユーザをViewProfileServletにマップされたサーブレットに移動させて、次の場所にマップされていると仮定します。
<url-pattern>/auth/view_profile</url-pattern>
そのように見える
:今度はそれがないと仕事、(ない/払いのルートコンテキストでは、)/view_profile.jspにユーザーを取る必要があります
try {
String username = (String) request.getParameter("profile");
// here is getting info from database and setting request attributes
// works fine
//response.sendRedirect("/view_profile.jsp");
System.out.println("ViewProfileServlet: In context -> " + getServletContext().getContextPath()); // returns ""
dis = getServletContext().getRequestDispatcher("/view_profile.jsp");
// i've tried request.getRequestDispatcher. no difference
System.out.println("ViewProfileServlet: forward to '/view_profile.jsp'");
dis.forward(request, response);
}
。 viewProfileServletが実行され、view_profile.jspが表示されますが、view_profile.jsp上のすべてのリンクがlocalhost:8080/auth/some-page.jspを指しているため、コンテキストがまだ/ authであるようです。また、cssファイルはロードされておらず、(少なくともFirebugによると)リクエストさえされていません。また、ページソースには、cssが存在すると思われる404 Glassfish Errorが表示されます。
私は非常に助けていただければ幸いです.JSPで何かしているのは初めてです。私はここで完全に迷っています。
回答ありがとうございます。私はにCSSへのパスを変更しましたが、1秒間それは 'localhost:8080/auth/css/styles.css'を要求します。完全に消える。結果は同じです。 –
michauwilliam
パスは絶対パスでなければなりません: '/'で始まります。 –
ありがとう:) Cssが動作します。しかし、ページ上のリンクについてはどうすればよいですか?とにかく/ auth/contextを指し示さないようにしていますか?私はを試みましたが、それでも/auth/logout.jspを指しています。 –
michauwilliam