HttpSession案例:用戶登陸應用

用戶登陸案例:html

user描述類:數據庫

public class User {session

 private String username;app

 private String psw;dom

 private String NikeName;post

 public User(){}網站

 public User(String username, String psw, String nikeName) {this

  this.username = username;spa

  this.psw = psw;code

  NikeName = nikeName;

 }

 public String getUsername() {

  return username;

 }

 public void setUsername(String username) {

  this.username = username;

 }

 public String getPsw() {

  return psw;

 }

 public void setPsw(String psw) {

  this.psw = psw;

 }

 public String getNikeName() {

  return NikeName;

 }

 public void setNikeName(String nikeName) {

  NikeName = nikeName;

 }

}

UserDB(模仿數據庫):

public class UserDB {

 private static List<User> list=new ArrayList<User>();

 static{

  list.add(new User("djw", "123", "day"));

  list.add(new User("zb", "123", "bb"));

 }

 //判斷用戶名和密碼是否正確

 public static User findUser(String username,String psw){

  for(User u:list){

   if(username.equals(u.getUsername())&&psw.equals(u.getPsw())){

    return u;

   }

  }

  return null;

 }

}

 

 

 

 

 

html登陸界面:

  <body>

    <h1>xxx主頁</h1>

    <form action="/TextSession/servlet/LoginServlet" method="post">

     用戶名<input type="text" name="username"/><br/>

     密碼<input type="password" name="psw"/><br/>

     <input type="text" name="code"><img src="/TextSession/servlet/CodeServlet"/><br/>

     <input type="submit" value="登陸">

    </form>

  </body>

 

登陸Servlet類:

 

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out=response.getWriter();

//判斷是否已經登陸,

HttpSession session =request.getSession();

//建立登陸標記

User user=(User) session.getAttribute("user");

//已經登陸的話,顯示暱稱,告知跳轉到登陸界面

if(user!=null){

response.setHeader("Refresh", "2;URL=/TextSession/servlet/IndexServlet");

out.write(user.getNikeName()+"您已經登陸了,2秒後跳轉到主頁面");

}

//將正確的用戶名和密碼封裝到beanutils

User u=new User();

try {

BeanUtils.populate(u, request.getParameterMap());

} catch (Exception e) {

e.printStackTrace();

}

//判斷驗證嗎是否正確

String code=(String) session.getAttribute("code");

String TextCode=request.getParameter("code");

if(!TextCode.equals(code)){

out.write("驗證碼錯誤,2秒後跳轉到登陸頁面");

response.setHeader("Refresh", "2;URL=/TextSession/1.html");

return;

}

//判斷用戶名密碼是否正確

if(UserDB.findUser(u.getUsername(),u.getPsw())==null){

response.setHeader("Refresh", "2;URL=/TextSession/1.html");

out.write("賬號密碼錯誤,2秒後跳轉到登陸頁面");

}else{

//bean對象寫入Session中,

HttpSession new_session=request.getSession();

new_session.setAttribute("user", u);

//登陸成功,跳轉到主界面

out.write("登陸成功,2秒後跳轉到主頁面");

response.setHeader("Refresh", "2;URL=/TextSession/servlet/IndexServlet");

}

}

 

 

 

主頁面servlet代碼:

public void doGet(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, IOException {

   response.setContentType("text/html;charset=UTF-8");

   PrintWriter out=response.getWriter();

   out.write("恭喜你來到xxxx網站");

   out.write("<a href='"+request.getContextPath()+"/servlet/CancelServlet'>註銷</a>");

 }

註銷類代碼:

public void doGet(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, IOException {

   response.setContentType("text/html;charset=UTF-8");

   PrintWriter out=response.getWriter();

   HttpSession session=request.getSession();

   session.removeAttribute("user");

   out.write("成功註銷,2秒後回到登陸頁面");

   response.setHeader("Refresh", "2;URL=/TextSession/1.html");

 }

 

CodeServlet類:生成驗證碼:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

 int width=120;

  int height=20;

  BufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

  //獲取畫筆對象

  Graphics gs=bi.getGraphics();

  //畫邊框顏色

  gs.setColor(Color.blue);

  gs.drawRect(0, 0, width, height);

  //設置背景色

  gs.setColor(Color.yellow);

  gs.fillRect(1, 1, width-2, height-2);

  //獲取隨機線條

  Random rd=new Random();

  gs.setColor(Color.gray);

  for(int x=0;x<15;x++){

   gs.drawLine(rd.nextInt(width), rd.nextInt(height), rd.nextInt(width), rd.nextInt(height));

  }

  //獲取隨機數字

  gs.setColor(Color.red);

  gs.setFont(new Font("宋體",Font.BOLD,18));

  int new_width=20;

  StringBuffer sb=new StringBuffer();

  for(int x=0;x<4;x++){

  int num= rd.nextInt(10);

  sb.append(num);

  gs.drawString(num+"", new_width, 20);

  new_width+=16;

  }

  HttpSession session=request.getSession();

  session.setAttribute("code", sb.toString());

  response.setHeader("Expires", "-1");

  response.setHeader("Cache-Control", "no-cache");

  response.setHeader("Pragma", "no-cache");

  ServletOutputStream out=response.getOutputStream();

  //Image對象:輸出流輸出圖片

  ImageIO.write(bi, "jpg", out);

}

相關文章
相關標籤/搜索