1.項目結構javascript
2.項目所用文件css
1)jar包 ojdbc5.jar 2)js jquery-2.1.0.js , jquery.validate.min.js 3)css bootstrap.csshtml
3.項目java
1)html與jsp頁面jquery
登陸頁面 login.html sql
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/bootstrap.css"/> <style type="text/css"> .login{ width: 400px; margin: 0px auto; margin-top: 100px; } .my_txt_center{ text-align: center; } .my_magin_top{ margin-top: 15px; } </style> <script src="js/jquery-2.1.0.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $(function(){ $("form:first").submit(function(){ var ok='<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>'; var err=' <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>'; var uname= $("#uname"); var reg_uname = /^\w{3,8}$/; if(reg_uname.test(uname.val())){ uname.parent().removeClass("has-error") uname.parent().addClass("has-success"); uname.next().remove(); uname.after($(ok)); }else{ uname.parent().removeClass("has-success") uname.parent().addClass("has-error"); uname.next().remove(); uname.after($(err)); return false; } return true; }) $("a[title]").click(function(){ location="reg.html"; }) }) </script> </head> <body> <div class="login"> <form action="doLogin.jsp" method="post"> <div class="panel panel-primary"> <div class="panel-heading my_txt_center">學生管理系統-登陸</div> <div class="panel-body"> <div class="input-group input-group-lg"> <span class="input-group-addon"> <span class="glyphicon glyphicon-user"></span> </span> <input class="form-control" type="text" name="uname" id="uname" value="" placeholder="請輸入用戶名" /> </div> <div class="input-group input-group-lg my_magin_top"> <span class="input-group-addon"> <span class="glyphicon glyphicon-lock"></span> </span> <input class="form-control" type="password" name="pwd" id="pwd" value="" placeholder="請輸入密碼" /> </div> <div class="my_magin_top text-center"> <button type="submit" class="btn btn-primary btn-lg"> 登 錄 </button> <button type="reset" class="btn btn-warning btn-lg"> 重置 </button> <a href="#" title="註冊連接" > 注 冊 </a> </div> </div> </div> </form> </div> </body> </html>
doLogin.jsp數據庫
<%@page import="org.lq.login.entity.Userss"%> <%@page import="org.lq.login.service.impl.UserssServiceImpl"%> <%@page import="org.lq.login.service.UserssService"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String uname= request.getParameter("uname");//從request取數據,通俗說就是從瀏覽器取數據 String pwd =request.getParameter("pwd"); UserssService us = new UserssServiceImpl(); Userss user= us.login(uname, pwd); System.out.print(user); //登錄成功 if(user!=null){ //將登錄用戶存儲到會話中 session.setAttribute("login_user", user);//從session取數據,就是從服務器取本身的數據 response.sendRedirect("main.jsp");//重定向 }else{ response.sendRedirect("login.html"); } %>
登陸成功後頁面 main.jspbootstrap
<%@page import="org.lq.login.entity.Userss"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% Userss user = (Userss)session.getAttribute("login_user"); //沒有登錄 if(user==null){ response.sendRedirect("login.html"); return; } /* 展現全部用戶信息 刪除 */ %> <h1>歡迎:<%=user.getName() %></h1> </body> </html>
註冊頁面 reg.html瀏覽器
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>註冊</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.css"/> <style type="text/css"> .magin_center{ margin: 0px auto; width: 400px; } .magin_center td{ padding: 10px; } .magin_center table{ width: 100%; } </style> </head> <body> <div class="panel panel-primary magin_center"> <div class="panel-heading">用戶註冊</div> <div class="panel-body"> <form method="post" action="doReg.jsp"> <table class="table table-hover"> <tr> <td>姓名</td> <td> <input class="form-control" type="text" name="name" id="name" value="" placeholder="請輸入姓名" /> </td> </tr> <tr> <td>用戶名</td> <td><input class="form-control" type="text" name="userName" id="userName" value="" placeholder="請輸入用戶名" /></td> </tr> <tr> <td>密碼</td> <td><input class="form-control" type="password" name="pwd" id="pwd" value="" placeholder="密碼長度3~8位" /></td> </tr> <tr> <td>性別</td> <td> <label> <input type="radio" name="sex" checked="checked" id="" value="男" />男 </label> <span style="display: inline-block;width: 50px;"></span> <label> <input type="radio" name="sex" id="" value="女" />女 </label> </td> </tr> <tr align="center"> <td colspan="2"> <button type="submit" class="btn btn-primary"> 注 冊 </button> <button type="reset" class="btn btn-warning"> 重 置 </button> </td> </tr> </table> </form> </div> </div> </body> </html>
doReg.jsp服務器
<%@page import="org.lq.login.service.impl.UserssServiceImpl"%> <%@page import="org.lq.login.service.UserssService"%> <%@page import="org.lq.login.entity.Userss"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String userName =request.getParameter("userName"); String pwd =request.getParameter("pwd"); String sex =request.getParameter("sex"); //將用戶提交過了的數據建立爲Java對象,輸出到業務層 Userss user =new Userss(); user.setName(name); user.setPassword(pwd); user.setSex(sex); user.setUser_name(userName); //調用保存方法 UserssService usersrvice=new UserssServiceImpl(); //判斷用戶註冊是否成功 if(usersrvice.createUser(user)){ response.sendRedirect("login.html"); }else{ response.sendRedirect("reg.html"); } %>
2)Java 代碼
Dao層
UserssDao.java
package org.lq.login.dao; import java.util.List; import org.lq.login.entity.Userss; public interface UserssDao { /** * 增長 * @param userss * @return * @throws Exception * 做者 :dis.jiang */ int save(Userss userss)throws Exception; /** * 刪除 * @param id * @return * @throws Exception * 做者 :dis.jiang */ int delete(int id)throws Exception; /** * 修改 * @param userss * @return * @throws Exception * 做者 :dis.jiang */ int update(Userss userss)throws Exception; /** * 查詢所有 * @return * @throws Exception * 做者 :dis.jiang */ List<Userss> selectAll() throws Exception; /** * 經過Id查詢 * @param id * @return * @throws Exception * 做者 :dis.jiang */ Userss getLoginById(int id)throws Exception; /** * 登錄 * @param uname * @return * 做者 :dis.jiang */ Userss login(String uname); }
UserssDaoImpl.java
package org.lq.login.dao.impl; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.lq.login.dao.UserssDao; import org.lq.login.entity.Userss; import org.lq.login.util.BaseDao; /** * * @author dis.jiang * 時間 : 2017年8月24日 12:56:13 * 開發者 : dis.jiang * 小組 : dis.jiang */ public class UserssDaoImpl extends BaseDao implements UserssDao { @Override public int save(Userss userss) throws Exception { String sql="insert into userss values(userss_seq.nextval,?,?,?,?)"; return super.execute(sql,userss.getUser_name(),userss.getPassword(),userss.getName(),userss.getSex()); } @Override public int delete(int id) throws Exception { String sql="delete from userss where user_id=?"; return super.execute(sql, id); } @Override public int update(Userss userss) throws Exception { String sql="update userss set username=?,password=?,name=?,sex=? where user_id =?"; return super.execute(sql,userss.getUser_name(),userss.getPassword(),userss.getName(),userss.getSex(),userss.getUser_id()); } @Override public List<Userss> selectAll() throws Exception { List<Userss> list =new ArrayList<>(); Userss userss=null; try { rs = select("select * from userss"); while(rs.next()){ userss = new Userss(); userss.setUser_id(rs.getInt("user_id")); userss.setUser_name(rs.getString("user_name")); userss.setPassword(rs.getString("password")); userss.setName(rs.getString("name")); userss.setSex(rs.getString("sex")); list.add(userss); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { closeAll(); } return list; } @Override public Userss getLoginById(int id) throws Exception { Userss userss=null; try { rs = select("select * from userss where user_id= ? ", id); while(rs.next()){ userss = new Userss(); userss.setUser_id(rs.getInt("user_id")); userss.setUser_name(rs.getString("user_name")); userss.setPassword(rs.getString("password")); userss.setName(rs.getString("name")); userss.setSex(rs.getString("sex")); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { closeAll(); } return userss; } @Override public Userss login(String uname) { Userss userss = null; rs=super.select("select * from userss where user_name=?", uname); try { if(rs.next()){ userss=new Userss(); userss.setUser_id(rs.getInt("user_id")); userss.setUser_name(rs.getString("user_name")); userss.setPassword(rs.getString("password")); userss.setName(rs.getString("name")); userss.setSex(rs.getString("sex")); } } catch (SQLException e) { e.printStackTrace(); }finally{ closeAll(); } return userss; } }
entity類
Userss.java
package org.lq.login.entity; /** * * @author dis.jiang * 時間 : 2017年8月24日 12:53:31 * 開發者 : dis.jiang * 小組 : dis.jiang */ public class Userss { //主鍵id private int user_id; //用戶名 private String user_name; //密碼 private String password; //姓名 private String name; //性別 private String sex; public int getUser_id() { return user_id; } public void setUser_id(int user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
Service層
UserssService.java
package org.lq.login.service; import org.lq.login.entity.Userss; /** * * @author dis.jiang * 時間 : 2017年8月24日 13:15:09 * 開發者 : dis.jiang * 小組 : dis.jiang */ public interface UserssService { /** * 建立用戶 * @return * 做者 :dis.jiang */ boolean createUser(Userss u); /** * 登錄 * @param u * @return * 做者 :dis.jiang */ Userss login(String uname,String pwd); }
UserssServiceImpl.java
package org.lq.login.service.impl; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.lq.login.dao.UserssDao; import org.lq.login.dao.impl.UserssDaoImpl; import org.lq.login.entity.Userss; import org.lq.login.service.UserssService; import sun.misc.BASE64Encoder; public class UserssServiceImpl implements UserssService { @Override public boolean createUser(Userss u) { boolean bool=false; UserssDao udao = new UserssDaoImpl(); //將原始的密碼進行加密而後賦值給當前對象 u.setPassword(new_pwd(u.getPassword())); try { bool=udao.save(u)>0; } catch (Exception e) { e.printStackTrace(); } return bool; } /** * 字符串加密 * @param pwd * @return * 做者 :dis.jiang */ private String new_pwd(String pwd){ String rs_str=""; BASE64Encoder encoder = new BASE64Encoder(); try { MessageDigest sha=MessageDigest.getInstance("SHA"); byte [] sha_bate= sha.digest(pwd.getBytes()); rs_str = encoder.encode(sha_bate); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return rs_str; } @Override public Userss login(String uname,String pwd) { UserssDao udao = new UserssDaoImpl(); Userss user= udao.login(uname); //用戶存在 if(user!=null){ //admin QL0AFWMIX8NRZTKeof9cXsvbvu8= if(user.getPassword().equals(new_pwd(pwd))){ return user; } } return null; } }
對密碼進行SHA或者MD5加密 UserssDaoImplTest.java
package org.lq.login.test; import static org.junit.Assert.fail; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.junit.Test; import sun.misc.BASE64Encoder; public class UserssDaoImplTest { @Test public void testSave() { String str ="1"; try { BASE64Encoder base64en = new BASE64Encoder(); //加密對象(JDK) MessageDigest md = MessageDigest.getInstance("SHA"); //將指定的字符串進行加密 byte[] bs= md.digest(str.getBytes()); System.out.println(base64en.encode(bs)); // //肯定計算方法 // MessageDigest md5=MessageDigest.getInstance("MD5"); // //加密後的字符串 // String newstr=base64en.encode(md5.digest(str.getBytes())); // System.out.println(newstr); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testDelete() { fail("Not yet implemented"); } @Test public void testUpdate() { fail("Not yet implemented"); } @Test public void testSelectAll() { fail("Not yet implemented"); } @Test public void testGetLoginById() { fail("Not yet implemented"); } }
工具類進行數據庫鏈接 BaseDao.java
package org.lq.login.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BaseDao { private static final String DRIVER="oracle.jdbc.driver.OracleDriver"; private static final String URL="jdbc:oracle:thin://@localhost:1521:orcl"; private static final String USER="scott"; private static final String PASSWORD="root"; /** * 結果集 */ protected ResultSet rs; /** * 預處理SQL對象 */ protected PreparedStatement ps; /** * 鏈接對象 */ protected Connection conn; protected Connection getConn(){ Connection conn=null; try { Class.forName(DRIVER); conn=DriverManager.getConnection( URL, USER, PASSWORD); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return conn; } /** * * @param rs * @param ps * @param conn * 做者 :dis.jiang */ protected void closeAll(){ try { if(rs!=null){ rs.close(); rs=null; } if(ps!=null){ ps.close(); ps=null; } if(conn!=null){ conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //===========================通用的SQL操做============================== /** * 通用刪除,修改,添加 * @param sql * @param params * @return * 做者 :dis.jiang */ public int execute(String sql,Object...params){ int num=0; conn = getConn(); try { ps=conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { ps.setObject(i+1, params[i]); } num= ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally{ closeAll(); } return num; } /** * 通用查詢 * @param sql * @return * 做者 :dis.jiang */ public ResultSet select(String sql,Object...params){ conn = getConn(); try { ps = conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { ps.setObject(i+1, params[i]); } rs=ps.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return rs; } }
數據庫表
運行結果:
註冊界面
登錄後界面