java/jsp: 登录系统
db类
1 package db; 2 import java.sql.*; 3 4 import javax.naming.InitialContext; 5 import javax.sql.DataSource; 6 7 8 9 public class DBConnect { 10 11 private Connection conn; 12 private Statement stmt; 13 private PreparedStatement pstmt; 14 private ResultSet rst; 15 private String str1; 16 17 private void init() 18 { 19 try { 20 InitialContext ctx = new InitialContext(); 21 DataSource dsSource = (DataSource) ctx.lookup("java:comp/env/jdbc/test"); 22 conn = dsSource.getConnection(); 23 24 } catch (Exception e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 } 28 29 } 30 31 public DBConnect() 32 { 33 //构造函数 34 try { 35 //获得一个数据库连接 36 37 init(); 38 39 stmt = conn.createStatement(); 40 41 } catch (Exception e) { 42 // TODO Auto-generated catch block 43 e.printStackTrace(); 44 } 45 } 46 47 //执行数据库查询语句,string s为sql语句 48 public void excuteQuery(String s) 49 { 50 51 try { 52 if(stmt != null) 53 { 54 rst = stmt.executeQuery(s); 55 } 56 } catch (SQLException e) { 57 // TODO Auto-generated catch block 58 e.printStackTrace(); 59 } 60 61 } 62 63 //对数据库执行update操作 64 public int excuteUpdate(String s) 65 { 66 int status = 0; 67 try { 68 if(stmt != null) 69 status = stmt.executeUpdate(s); 70 } catch (SQLException e) { 71 // TODO Auto-generated catch block 72 e.printStackTrace(); 73 } 74 75 return status; 76 } 77 78 79 //以下为赋值方法 80 //字符串赋值 81 public void setString(int i, String s) 82 { 83 try { 84 pstmt.setString(i, s); 85 } catch (Exception e) { 86 // TODO Auto-generated catch block 87 e.printStackTrace(); 88 } 89 } 90 91 //boolean赋值 92 public void setBoolean(int i, Boolean flag) 93 { 94 try { 95 pstmt.setBoolean(i, flag); 96 } catch (SQLException e) { 97 // TODO Auto-generated catch block 98 e.printStackTrace(); 99 } 100 } 101 102 103 //date日期型赋值 104 public void setDate(int i, Date date) { 105 try { 106 pstmt.setDate(i, date); 107 } catch (SQLException e) { 108 // TODO Auto-generated catch block 109 e.printStackTrace(); 110 } 111 } 112 113 114 //时间类型赋值 115 public void setTime(int i, Time time) { 116 try { 117 pstmt.setTime(i, time); 118 } catch (SQLException e) { 119 // TODO Auto-generated catch block 120 e.printStackTrace(); 121 } 122 } 123 124 125 //short类型赋值 126 public void setShort(int i, Short short1) 127 { 128 try { 129 pstmt.setShort(i, short1); 130 } catch (SQLException e) { 131 // TODO Auto-generated catch block 132 e.printStackTrace(); 133 } 134 } 135 136 //整形赋值 137 public void setInt(int i, int int1) 138 { 139 try { 140 pstmt.setInt(i, int1); 141 } catch (SQLException e) { 142 // TODO Auto-generated catch block 143 e.printStackTrace(); 144 } 145 } 146 147 //长整型赋值 148 public void setLong(int i, long l) 149 { 150 try { 151 pstmt.setLong(i, l); 152 } catch (SQLException e) { 153 // TODO Auto-generated catch block 154 e.printStackTrace(); 155 } 156 } 157 158 //浮点型赋值 159 public void setFloat(int i, float f) 160 { 161 try { 162 pstmt.setFloat(i, f); 163 } catch (SQLException e) { 164 // TODO Auto-generated catch block 165 e.printStackTrace(); 166 } 167 } 168 169 170 171 //double类型赋值 172 public void setDouble(int i, double d) 173 { 174 try { 175 pstmt.setDouble(i, d); 176 } catch (SQLException e) { 177 // TODO Auto-generated catch block 178 e.printStackTrace(); 179 } 180 } 181 182 183 184 185 //以下为获取的方法 186 //获取字符串 187 public String getString(int i) throws SQLException 188 { 189 190 return rst.getString(i); 191 } 192 public String getString(String str1) throws SQLException 193 { 194 return rst.getString(str1); 195 } 196 197 //取得boolean类型 198 public boolean getBoolean(int i) throws SQLException 199 { 200 return rst.getBoolean(i); 201 } 202 public boolean getBoolean(String str1) throws SQLException 203 { 204 return rst.getBoolean(str1); 205 } 206 207 208 //取得date日期型 209 public Date getDate(int i) throws SQLException 210 { 211 return rst.getDate(i); 212 } 213 214 //取得日期字符型 215 public Date getDate(String str1) throws SQLException{ 216 return rst.getDate(str1); 217 } 218 219 //获取time时间 220 public Time getTime(int i) throws SQLException{ 221 return rst.getTime(i); 222 } 223 224 //获取time字符时间 225 public Time geTime(String str1) throws SQLException 226 { 227 return rst.getTime(str1); 228 } 229 230 //获取双精度型 231 public double getDouble(int i) throws SQLException 232 { 233 return rst.getDouble(i); 234 } 235 public double getDouble(String str1) throws SQLException 236 { 237 return rst.getDouble(str1); 238 } 239 240 241 //获取浮点型 242 public float getFloat(int i) throws SQLException{ 243 return rst.getFloat(i); 244 } 245 public float getFloat(String str1) throws SQLException 246 { 247 return rst.getFloat(str1); 248 } 249 250 251 //获取int型 252 public int getInt(int i) throws SQLException 253 { 254 return rst.getInt(i); 255 } 256 public int getInt(String str1) throws SQLException 257 { 258 return rst.getInt(str1); 259 260 } 261 262 //获取长整型 263 public long getLong(int i) throws SQLException 264 { 265 return rst.getLong(i); 266 } 267 public long getLong(String str1) throws SQLException 268 { 269 return rst.getLong(str1); 270 } 271 272 //获取short短整型 273 public short getShort(int i) throws SQLException 274 { 275 return rst.getShort(i); 276 } 277 public short getShort(String str1) throws SQLException 278 { 279 return rst.getShort(str1); 280 } 281 282 283 //指针下移一位 284 public boolean next() 285 { 286 try { 287 return rst.next(); 288 } catch (SQLException e) { 289 // TODO Auto-generated catch block 290 e.printStackTrace(); 291 return false; 292 } 293 } 294 295 296 //释放内存 297 public void close() 298 { 299 300 301 try { 302 if(conn != null) 303 conn.close(); 304 if(stmt != null) 305 stmt.close(); 306 if(rst!=null) 307 rst.close(); 308 } catch (SQLException e) { 309 // TODO Auto-generated catch block 310 e.printStackTrace(); 311 } 312 313 } 314 }
register包下的内容:
package register; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Date; public class DateFormat { public static long getDate(String s) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); ParsePosition parsePosition = new ParsePosition(0); Date date = simpleDateFormat.parse(s, parsePosition); return date.getTime(); } }
1 package register; 2 import register.product.Product; 3 import register.product.SqlProduct; 4 import register.user.SqlUser; 5 import register.user.User; 6 7 public abstract class Factory { 8 9 private static Factory factory = null; 10 public Factory(){} 11 public static Factory getInstance() 12 { 13 if(factory == null) 14 { 15 try { 16 Class factoryClass = Class.forName("register.SqlFactory"); 17 factory = (Factory) factoryClass.newInstance(); 18 } catch (Exception e) { 19 // TODO Auto-generated catch block 20 e.printStackTrace(); 21 } 22 23 24 } 25 26 return factory; 27 } 28 29 public abstract User initUser(); 30 public abstract SqlUser initSqlUser(); 31 public abstract Product initProduct(); 32 public abstract SqlProduct initSqlProduct(); 33 34 }
1 package register; 2 import register.product.Product; 3 import register.product.SqlProduct; 4 import register.user.SqlUser; 5 import register.user.User;; 6 7 public class SqlFactory extends Factory{ 8 9 public User initUser(){ 10 return new SqlUser(); 11 } 12 13 public Product initProduct() 14 { 15 return new SqlProduct(); 16 } 17 18 public SqlUser initSqlUser() 19 { 20 return new SqlUser(); 21 } 22 23 public SqlProduct initSqlProduct() 24 { 25 return new SqlProduct(); 26 } 27 }
register.user包
user.java
1 package register.user; 2 3 public interface User { 4 public abstract void setUser_id(String user_id); 5 public abstract String getUser_id(); 6 public abstract void setPassword(String password); 7 public abstract String getPassword(); 8 public abstract void setName(String name); 9 public abstract String getName(); 10 public abstract void setSex(String sex); 11 public abstract String getSex(); 12 public abstract void setBirth(long birth); 13 public abstract long getBirth(); 14 public abstract void setDescription(String deString); 15 public abstract String getDescription(); 16 17 }
abstractUser.java
1 package register.user; 2 3 public abstract class AbstractUser implements User { 4 5 private String user_id; 6 private String password; 7 private String name; 8 private String sex; 9 private long birth; 10 private String description; 11 12 13 public void setUser_id(String user_id) 14 { 15 this.user_id = user_id; 16 } 17 18 public String getUser_id() 19 { 20 return this.user_id; 21 } 22 23 public void setPassword(String password) 24 { 25 this.password = password; 26 } 27 28 public String getPassword() 29 { 30 return this.password; 31 } 32 33 public void setName(String name) 34 { 35 this.name = name; 36 } 37 38 public String getName() 39 { 40 return this.name; 41 } 42 43 public void setSex(String sex) 44 { 45 this.sex = sex; 46 } 47 48 public String getSex() 49 { 50 return this.sex; 51 } 52 53 public void setBirth(long birth) 54 { 55 this.birth = birth; 56 } 57 58 public long getBirth() 59 { 60 return this.birth; 61 } 62 63 public void setDescription(String description) 64 { 65 this.description = description; 66 } 67 68 public String getDescription() 69 { 70 return this.description; 71 } 72 73 }
sqlUser.java
1 package register.user; 2 import register.Factory; 3 import db.DBConnect; 4 5 public class SqlUser extends AbstractUser 6 { 7 8 9 public boolean checkRPwd(String password, String rpassword) 10 { 11 if( password != null && rpassword != null ) 12 { 13 if( password.equals(rpassword) ) 14 { 15 return true; 16 }else{ 17 return false; 18 } 19 }else{ 20 return false; 21 } 22 } 23 24 public boolean saveUser(User user) 25 { 26 String User_id = user.getUser_id(); 27 String Password = user.getPassword(); 28 String Name = user.getName(); 29 String Sex = user.getSex(); 30 long Birth = user.getBirth(); 31 String Description = user.getDescription(); 32 String str = "insert into users values('" + User_id +"', '"+ Password +"', '"+ Name +"', '"+ Sex +"', " + 33 "'"+ Birth +"', '"+ Description +"')"; 34 35 try{ 36 DBConnect dbcon = new DBConnect(); 37 dbcon.excuteUpdate(str); 38 return true; 39 }catch(Exception e) 40 { 41 e.printStackTrace(); 42 return false; 43 } 44 } 45 46 47 48 public User getUser(String ID) 49 { 50 User user = Factory.getInstance().initUser(); 51 String str = "select * from users where USER_ID = '"+ID+"'"; 52 53 try{ 54 DBConnect dbConnect = new DBConnect(); 55 dbConnect.excuteQuery(str); 56 if(dbConnect.next()) 57 { 58 59 60 user.setUser_id(dbConnect.getString(1)); 61 user.setPassword(dbConnect.getString(2)); 62 user.setName(dbConnect.getString(3)); 63 user.setSex(dbConnect.getString(4)); 64 user.setBirth(dbConnect.getLong(5)); 65 user.setDescription(dbConnect.getString(6)); 66 67 68 } 69 }catch(Exception e) 70 { 71 e.printStackTrace(); 72 } 73 74 return user; 75 } 76 77 public int checkUser(String ID, String password) 78 { 79 int index = -1; 80 User user = getUser(ID); 81 if(user != null) 82 { 83 if( user.getPassword().equals(password) ) 84 { 85 index = 0; 86 }else{ 87 index = 2; 88 } 89 }else{ 90 index = 1; 91 } 92 return index; 93 } 94 95 }
jsp文件
index
1 <%@ page contentType="text/html; charset=utf-8" %> 2 <%@page import="java.util.Iterator"%> 3 <%@ page import="register.product.SqlProduct" %> 4 <%@ page import="register.product.Product" %> 5 <%@ page import="register.Factory" %> 6 7 <html> 8 <title>登录系统</title> 9 <body> 10 <h2>Hello World!</h2> 11 12 <% 13 String user_id = (String)session.getAttribute("user_id"); 14 if(user_id == "" || user_id == null) 15 { 16 response.sendRedirect("login.jsp"); 17 } 18 19 20 21 Product product = null; 22 SqlProduct sqlProduct = Factory.getInstance().initSqlProduct(); 23 Iterator iterator = sqlProduct.getProduct(); 24 25 String product_name = ""; 26 float price; 27 String description = ""; 28 %> 29 <table> 30 <tr> 31 <td>用户登录系统</td> 32 <td> 33 <% 34 if("".equals(user_id)) 35 { 36 %> 37 <a href="login.jsp">登录</a>, 38 <a href="register.jsp">注销</a> 39 <% 40 }else{ 41 42 %> 43 <%=user_id %>你好,<a href="logout.jsp">退出</a> 44 <% 45 } 46 %> 47 48 49 </td> 50 </tr> 51 <% 52 while( iterator.hasNext() ) 53 { 54 product = (Product)iterator.next(); 55 product_name = product.getProduct_name(); 56 price = product.getPrice(); 57 description = product.getDescription(); 58 %> 59 <tr> 60 <td>产品名称:<%=product_name %></td> 61 <td>价格:<%=price %></td> 62 </tr> 63 <tr> 64 <td cospan="2">说明:<%=description %></td> 65 </tr> 66 <% } 67 %> 68 69 </table> 70 </body> 71 </html>
login.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 6 <title>login</title> 7 </head> 8 <body> 9 10 <form action="do_login.jsp" method="post"> 11 <table> 12 <tr> 13 <td colspan="2" align="center">登录</td> 14 </tr> 15 <% 16 String info = request.getParameter("info"); 17 String errMsg = ""; 18 if("1".equals(info)) 19 { 20 errMsg = "用户名错误"; 21 }else if("2".equals(info)) 22 { 23 errMsg = "密码错误"; 24 } 25 if( !"".equals(errMsg)) 26 { 27 %> 28 <tr> 29 <td colspan="2" align="center" color="red"><%=errMsg %></td> 30 </tr> 31 <% 32 } 33 %> 34 <tr> 35 <td>用户名</td> 36 <td><input type="text" name="user_id"></td> 37 </tr> 38 <tr> 39 <td>密码</td> 40 <td><input type="password" name="passwd"></td> 41 </tr> 42 <tr> 43 <td colspan="2" align="center"><input type="submit" value="登录"></td> 44 </tr> 45 46 <tr> 47 <td colspan="2" align="right"> 48 <a href="register.jsp">注册</a> 49 </td> 50 </tr> 51 </table> 52 </form> 53 54 55 </body> 56 </html>
do_login.jsp
1 <%@ page import="register.user.User"%> 2 <%@ page import="register.user.SqlUser"%> 3 <%@ page import="register.Factory"%> 4 <% 5 String user_id = request.getParameter("user_id"); 6 String passwd = request.getParameter("passwd"); 7 8 SqlUser sqlUser = Factory.getInstance().initSqlUser(); 9 int index = sqlUser.checkUser(user_id, passwd); 10 if( index != -1 ) 11 { 12 if(index == 1) 13 { 14 response.sendRedirect("login.jsp?info=1"); 15 }else if(index == 2) 16 { 17 response.sendRedirect("login.jsp?info=2"); 18 }else{ 19 session.setAttribute("user_id", user_id); 20 response.sendRedirect("index.jsp"); 21 } 22 }else{ 23 response.sendRedirect("login.jsp"); 24 } 25 %>
register.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 6 <title>register</title> 7 </head> 8 <body> 9 10 <form action="do_register.jsp" method="post"> 11 <table> 12 13 <tr> 14 <td colspan="2" align="center">注册</td> 15 </tr> 16 <tr> 17 <td>用户名</td> 18 <td><input type="text" name="user_id"></td> 19 </tr> 20 <tr> 21 <td>姓名</td> 22 <td><input type="text" name="name"></td> 23 </tr> 24 <tr> 25 <td>密码</td> 26 <td><input type="password" name="passwd"></td> 27 </tr> 28 <tr> 29 <td>确认密码</td> 30 <td><input type="password" name="rpasswd"></td> 31 </tr> 32 <tr> 33 <td>性别</td> 34 <td> 35 <input type="radio" value="1" name="sex">男 36 <input type="radio" value="2" name="sex">女 37 </td> 38 </tr> 39 <tr> 40 <td>生日</td> 41 <td> 42 年 43 <select name="year"> 44 <% 45 int i=0; 46 for(i=1970; i < 2017; i++) 47 { 48 %> 49 <option value="<%=i%>"><%=i %></option> 50 <% 51 } 52 %> 53 </select> 54 55 月 56 <select name="month"> 57 <% 58 for(i=1; i < 13; i++) 59 { 60 %> 61 <option value="<%=i %>"><%=i %></option> 62 <% 63 } 64 %> 65 </select> 66 日 67 <select name="day"> 68 <% 69 for(i=1; i < 32; i++) 70 { 71 %> 72 <option value="<%=i%>"><%=i%></option> 73 <% 74 } 75 %> 76 </select> 77 </td> 78 </tr> 79 <tr> 80 <td>自我介绍</td> 81 <td><input type="text" name="description"></td> 82 </tr> 83 <tr> 84 <td colspan="2"><input type="submit" value="注册"></td> 85 </tr> 86 <tr> 87 <td colspan="2" align="right"><a href="login.jsp">登录</a></td> 88 </tr> 89 90 </table> 91 </form> 92 93 94 95 </body> 96 </html>
do_register.jsp
1 <%@ page import="register.DateFormat"%> 2 <%@ page import="register.user.User"%> 3 <%@ page import="register.user.SqlUser"%> 4 <%@ page import="register.Factory"%> 5 <% 6 //获取传递过来的参数 7 String user_id = request.getParameter("user_id"); 8 String passwd = request.getParameter("passwd"); 9 String rpasswd = request.getParameter("rpasswd"); 10 String sex = request.getParameter("sex"); 11 String name = request.getParameter("name"); 12 13 String year = request.getParameter("year"); 14 String month = request.getParameter("month"); 15 if(month.length() ==1)month = "0"+month; 16 String day = request.getParameter("day"); 17 if(day.length() ==1)day = "0"+day; 18 String date = year+"-"+month+"-"+day; 19 20 String description = request.getParameter("description"); 21 22 23 //初始化user实例 24 User user = Factory.getInstance().initUser(); 25 //初始化sqlUser实例 26 SqlUser sqlUser = Factory.getInstance().initSqlUser(); 27 28 29 //将日期转为Long型 30 long birth = DateFormat.getDate(date); 31 if( sqlUser.checkRPwd(passwd, rpasswd) ) 32 { 33 34 user.setUser_id(user_id); 35 user.setPassword(passwd); 36 user.setName(name); 37 user.setSex(sex); 38 user.setBirth(birth); 39 user.setDescription(description); 40 41 42 if(sqlUser.saveUser(user)) 43 { 44 session.setAttribute("user_id", user_id); 45 response.sendRedirect("index.jsp"); 46 47 }else{ 48 response.sendRedirect("register.jsp"); 49 } 50 51 52 }else{ 53 response.sendRedirect("register.jsp"); 54 } 55 56 57 58 %>
logout.jsp
<% session.removeAttribute("user_id"); response.sendRedirect("index.jsp"); %>