码迷,mamicode.com
首页 > 其他好文 > 详细

一个简单的servlet程序(处理用户登陆)

时间:2015-01-03 09:17:48      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

Login.java

 1 package com.bai;
 2 
 3 import javax.servlet.http.*;
 4 
 5 import java.io.*;
 6 
 7 public class Login extends HttpServlet{
 8     public void doGet(HttpServletRequest req,HttpServletResponse res){
 9         try{req.setCharacterEncoding("gb2312");
10         res.setContentType("text/html;charset=gb2312");
11             PrintWriter pw=res.getWriter();
12             pw.println("<html>");
13             pw.println("<body>");
14             pw.println("<h1>登陆界面</h1>");
15             pw.println("<form action=logincl method=post>");
16             pw.println("用户名:<input type=text name=username><br>");
17             pw.println("密码:<input type=password name=passwd><br>");
18             pw.println("<input type=submit value=login><br>");
19             pw.println("</form>");
20             pw.println("</body>");
21             pw.println("</html>");
22         }
23         catch(Exception e){
24             e.printStackTrace();
25         }
26     }
27     
28     public void doPost(HttpServletRequest req,HttpServletResponse res){
29         this.doGet(req,res);
30     }
31 }

 

LoginCl.java

 1 package com.bai;
 2 
 3 import javax.servlet.http.*;
 4 
 5 import java.io.*;
 6 import java.sql.*;
 7 
 8 public class LoginCl extends HttpServlet{
 9     public void doGet(HttpServletRequest req,HttpServletResponse res){
10         
11         Connection conn=null;
12         Statement stmt=null;
13         ResultSet rs=null;
14         String sql = "select username,passwd from users where username = ? and passwd = ?";
15         try{//req.setCharacterEncoding("gb2312");
16             String user=req.getParameter("username");
17             String password=req.getParameter("passwd");
18             
19             Class.forName("com.mysql.jdbc.Driver");
20             conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sqdb","root","root");
21 //            stmt=conn.createStatement();
22             PreparedStatement pstmt = conn.prepareStatement(sql);
23             pstmt.setString(1, user);
24             pstmt.setString(2, password);
25             rs = pstmt.executeQuery();
26 //            rs=stmt.executeQuery("select top 1 * from users where username=‘"+user
27 //                +"‘ and passwd=‘"+password+"‘");
28             if(rs.next())
29             {
30                 HttpSession hs=req.getSession(true);
31                 hs.setMaxInactiveInterval(60);
32                 hs.setAttribute("name",user);
33                 res.sendRedirect("welcome?&uname="+user+"&upass="+password);
34             }
35             else{
36                 res.sendRedirect("login"); //url
37             }
38             
39         }
40         catch(Exception e){
41             e.printStackTrace();
42         }finally{
43             try{
44                 if(rs!=null){
45                 rs.close();
46                 }
47                 if(stmt!=null){
48                     stmt.close();
49                 }
50                 if(conn!=null){
51                     conn.close();
52                 }    
53             }catch(Exception e){
54                 e.printStackTrace();
55             }        
56         }
57     }
58     
59     public void doPost(HttpServletRequest req,HttpServletResponse res){
60         this.doGet(req,res);
61     }
62 }

其实上面这个处理用户名密码带有明显注入漏洞,可以根据用户名从数据库取密码,用取出的密码和用户输入的密码比较

1 sql=select passwd from users where username = ?  limit 1
2 
3 if(rs.next())
4 {
5     String passwd=rs.getString(1);
6     if(passwd.equals(password))
7             //密码正确
8     else //密码错误
9 }

 

Welcome.java

 1 package com.bai;
 2 
 3 import javax.servlet.http.*;
 4 
 5 import java.io.*;
 6 
 7 public class Welcome extends HttpServlet{
 8     public void doGet(HttpServletRequest req,HttpServletResponse res){
 9         
10         HttpSession hs=req.getSession();
11         String val=(String)hs.getAttribute("pass");
12         
13         if(val==null){
14             try{
15                 System.out.print(1);
16                 res.sendRedirect("login");
17             }catch(Exception e){
18                 e.printStackTrace();
19             }
20             
21         }        
22             
23         String u=req.getParameter("uname");
24         String p=req.getParameter("upass");
25         
26         try{//req.setCharacterEncoding("gb2312");
27             PrintWriter pw=res.getWriter();
28             pw.println("welcome! "+u+"&pass="+p);
29         }
30         catch(Exception e){
31             e.printStackTrace();
32         }
33     }
34     
35     public void doPost(HttpServletRequest req,HttpServletResponse res){
36         this.doGet(req,res);
37     }
38 }

 

一个简单的servlet程序(处理用户登陆)

标签:

原文地址:http://www.cnblogs.com/eleven24/p/4199118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!