Java 登录,注册,传数据到后台小案例
1.项目结构
2.项目所用文件
1)jar包 ojdbc5.jar 2)js jquery-2.1.0.js , jquery.validate.min.js 3)css bootstrap.css
3.项目
1)html与jsp页面
登录页面 login.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">
.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='';
var err=' ';
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.jsp
<%@page import="org.lq.login.entity.Userss"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here <% Userss user = (Userss)session.getAttribute("login_user"); //没有登陆 if(user==null){ response.sendRedirect("login.html"); return; } /* 展示所有用户信息 删除 */ %>欢迎:<%=user.getName() %>
注册页面 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 */ ListselectAll() 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 ListselectAll() throws Exception { List 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; } }
数据库表
运行结果:
注册界面
登陆后界面