私はセッションからユーザーをログアウトするためにJavaコントローラサーブレットを作成しようとしています。 2つのメソッドがあり、1つはsendRedirectを使用し、もう1つはRequestDispatcherです。私の場合は、ドメイン外のページにそれらを送信したいと思っています。私の限られたJava知識では、sendRedirectを使用する必要があります。sendRedirect not redirecting
ただし、エラー302が発生し、ページがリダイレクトされません。私はチュートリアルのバージョンを試して、それは動作しますが、私は私のサーブレット内で実装すると、それは私にエラーを返し、リダイレクトしません。
誰かが正しい方向に向けることを願っています。
私が使用しているコードは以下の通りです。私は、NetBeansのテンプレートを使用しています:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
HttpSession session = request.getSession(false);
if (session == null) {
System.out.println("Invalid");
response.sendRedirect("http://www.google.com");
return;
} else {
System.out.println("Invalidated");
session.invalidate();
response.sendRedirect("http://www.google.com");
return;
/*
String url = "/logout.jsp";
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);
rd.include(request, response);
*/
}
/* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet LogOut</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet LogOut at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
*/
} finally {
out.close();
}
}
編集:私は<a href>
タグを介してサーブレットを呼び出していますが。サーブレット名はLogOut.javaです。
<div data-role="header" data-position="fixed">
<h1>Menu</h1>
<a href="LogOut" data-theme="i">Log Out</a>
</div>
doGetとdoPostはprocessRequestを呼び出します。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
'302'はエラーではありません。リダイレクトするようにブラウザに指示するステータスコードです。 – skaffman
こんにちはskaffman、すばやい返信をいただきありがとうございます。私は火かき棒で見つけたものをグーグル・グーグルに基づいているので、自分自身を確信していません。しかし、何がブラウザのリダイレクトを妨げているのですか? jspページでjQueryMobileを使用していることが原因ですか? – Rax