メールとパスワードを受け取り、それらを logincheck サーブレットに転送するログイン サーブレットがあります。各フィールドに入力したままフォームを送信すると、対応する入力値に Cookie が設定されますが、電子メールとパスワードのフィールドが空白のままの場合、Cookie の値は空白に設定され、指示が表示されるように、logincheck サーブレットを設計しました。ログインサーブレットに戻ります。
ログインページにリダイレクトされるのではなく、フォームを未記入のまま送信すると、「要求されたソースは利用できません」という説明のエラーページにリダイレクトされます。親切に助けてください。
package newpackage;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class logincheck extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//recieving form parameters
String email=request.getParameter("email");
String pass=request.getParameter("pass");
//setting up cookies as a white field if any credential has been left unfilled
Boolean isMissingValue=false;
if(email==null || email.trim().equals("")){
email=""; //return white field as a cookie if the user doesnt enter anything and submits
isMissingValue=true;
}
if(pass==null || pass.trim().equals("")){
pass=""; //return white field as a cookie if the user doesnt enter anything and submits
isMissingValue=true;
}
//setting up cookies based on what the user entered last
Cookie c1=new LongLivedCookie("email",email);
response.addCookie(c1);
Cookie c2=new LongLivedCookie("pass",pass);
response.addCookie(c2);
if(isMissingValue){
RequestDispatcher obj=request.getRequestDispatcher("login.java");
obj.forward(request,response);
}
}
}
ここに私のLongLivedCookieクラスがあります
package newpackage;
import javax.servlet.http.Cookie;
public class LongLivedCookie extends Cookie {
public static final int seconds_per_year=60*60*25*365;
public LongLivedCookie(String name, String value) {
super(name,value);
setMaxAge(seconds_per_year);
}
}