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='<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>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <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"%>
<!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;
    }
    
}

数据库表

运行结果:

注册界面

登陆后界面

posted @ 2019-05-31 17:46  南山下的采药人  阅读(675)  评论(0编辑  收藏  举报