回覆列表
  • 1 # 使用者8461021162376

    簡單的程式碼,

    比較簡單的登陸的servlet.參考程式碼

    import java.io.IOException;

    import java.io.PrintWriter;

    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 Login2 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    this.doPost(request, response);//呼叫doPost方法

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    webLogin(request, response);

    }

    private void webLogin(HttpServletRequest request,

    HttpServletResponse response) throws IOException {

    response.setContentType("text/html;charset=utf-8");//設定字符集

    Cookie[] cs = request.getCookies();//讀取cookie

    if (cs != null && cs.length != 0) {//判斷是不是有效的cookie

    String cookie_uname = null;

    String cookie_upswd = null;

    for (int i = 0; i < cs.length; i++) {

    if (cs[i].getName().equals("uname")) {//得到使用者名稱

    cookie_uname = cs[i].getValue();

    }

    if (cs[i].getName().equals("upswd")) {//得到密碼

    cookie_upswd = cs[i].getValue();

    }

    }

    //判斷使用者名稱和密碼都不能為空

    if (cookie_uname != null && cookie_upswd != null) {

    System.out.println("試圖使用cookie登陸"+cookie_uname+"\t"+cookie_upswd);

    //把姓名和密碼發到ValidateUser2 進行驗證,如果驗證成功就跳轉到登陸後的頁面,否則跳回來

    response.sendRedirect("ValidateUser2?uname=" + cookie_uname

    + "&upswd=" + cookie_upswd);

    // 驗證成功就登陸

    // 驗證失敗, 就返回, ,注意這裡可能是死迴圈.. 需要特別解決和注意

    // 因為cookie裡的資料不對,返回登陸,返回後登陸又檢測到cookie又驗證登陸,又驗證失敗,返回登陸...

    }

    }

    PrintWriter pw = response.getWriter();

    pw.print("<form action="ValidateUser2" method="post" >");

    pw.print("使用者名稱<input type="text" name="uname" /><br />");

    pw.print("密 碼<input type="password" name="upswd" /><br />");

    pw.print("<input type="checkbox" name="jizhu" value="jizhu">1分鐘內登陸<br />");//為了測試效果,就記住1分鐘

    pw.print("<input type="submit" value="提交"/>");

    pw.print("</form>");

    pw.flush();

    pw.close();

    }

    }

    下面是驗證密碼和賬號的 ValidateUser2

    String uname = (String) req.getParameter("uname");//從request裡獲得使用者名稱和密碼

    String upswd = (String) req.getParameter("upswd");

    if(驗證成功){

    跳轉到登陸後的介面

    }else{

    Cookie[] cs = req.getCookies();

    if(cs!=null&&cs.length!=0){

    for (int i = 0; i < cs.length; i++) {

    if(cs[i].getName().equals("uname")){

    cs[i] = new Cookie("uname",null);

    cs[i].setMaxAge(0);

    res.addCookie(cs[i]);

    }else if(cs[i].getName().equals("upswd")){

    cs[i].setMaxAge(0);

    res.addCookie(cs[i]);

    }

    }

    }

    res.sendRedirect("Login2");//返回Login2

    }

  • 中秋節和大豐收的關聯?
  • 周線突破選股公式?