用戶登陸案例: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);
}