欢迎光临散文网 会员登陆 & 注册

Java web代码和学习笔记JSP实现完整的登录注册功能的界面,解决大多之法【诗书画唱】

2020-09-15 21:00 作者:诗书画唱  | 我要投稿

实现UserDao中的add方法,最终完成注册功能,实现完整的登录注册功能




--drop   table  User

 


create table User(

id int primary key auto_increment,



act varchar(100) ,


pwd varchar(100) ,

sex char(100) ,


brith date,



hobbys   varchar(100)


);

--drop table  User

--insert into User(act ,pwd ,sex ,brith,hobbys ) values ("1","1",'男','2000-7-9',"编程");

--select *  from User




package com.SSHC.bean;


import java.util.Date;


//bean的类名于表的名字一致,而且首字母必须大写

public class User {

    //bean类中的属性名应该和表中的列名一致

private Integer id;

private String act;

private String pwd;

private String birth;

private String sex;

private String hobbys;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getAct() {

return act;

}

public void setAct(String act) {

this.act = act;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getBirth() {

return birth;

}

public void setBirth(String birth) {

this.birth = birth;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getHobbys() {

return hobbys;

}

public void setHobbys(String hobbys) {

this.hobbys = hobbys;

}


}



package com.SSHC.DAO;


import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;


import com.SSHC.Utils.DBUtils;

import com.SSHC.bean.User;



//Dao是数据访问的意思,

//在这个类中负责对user表进行增删改查的功能实现

//Dao类中的方法就是负责执行sql语句,只要有执行sql语句的代码都必须写在dao类中

public class UserDao {

    public User selectByActAndPwd(String act,String pwd){  

    String sql = "select * from user"

    + " where act = ? and pwd = ?";

    Connection conn = null;

    PreparedStatement pstm = null;

    ResultSet rs = null;

    User u = new User();

    try {

        conn = DBUtils.getConn();

pstm = conn.prepareStatement(sql);

//设置占位符

pstm.setString(1, act);

pstm.setString(2, pwd);

rs = pstm.executeQuery();

if(rs.next()) {

Integer id = rs.getInt("id");

u.setId(id);

u.setAct(act);

u.setPwd(pwd);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

//清理资源

DBUtils.close(rs, pstm, conn);

}

    return u;

    }

    

    //在user表中新增一条数据

    public Integer add(User u) {

   

//    List<User> L=new ArrayList<User>();

//   

//    L.add(u);

//   

//    String act=null;

//    String pwd=null;

//    String sex=null;

//    String brith=null;

//    String hobbys=null;

//    String[]arr={act,

//    pwd,sex,brith, hobbys};

//    for (int i = 0; i < L.size(); i++) {

//    User p = L.get(i);

//   

//        System.out.println(p);

// }

    String sql = "insert into User(act ,pwd "

+ ",sex ,brith,hobbys ) values (?,?,?,?,?);";

    Connection conn = null;

    PreparedStatement pstm = null;

    ResultSet rs = null;

    

    try {

        conn = DBUtils.getConn();

pstm = conn.prepareStatement(sql);

//设置占位符

//System.out.println(u.getAct());

pstm.setObject(1,u.getAct());

pstm.setObject(2,u.getPwd() );

pstm.setObject(3,u.getSex());

pstm.setObject(4, u.getBirth());

pstm.setObject(5, u.getHobbys());


pstm.executeUpdate();

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }finally{

 

           

DBUtils.close(rs, pstm, conn);

}

    return 0;

    }

    public static void main(String[] args) {

//    UserDao ud = new UserDao();

//    User u = ud.selectByActAndPwd("admin2020", "1111");

//    if(u.getId() != null && u.getId() > 0) {

//    System.out.println("登录成功");

//    } else {

//    System.out.println("登录失败");

//    }

}

}

package com.SSHC.Utils;


import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Properties;


public class DBUtils {

private static String driverName;

    private static String url;

    private static String user;

    private static String pwd;

    

    static {

    //读取properties文件

    Properties prop = new Properties();

    //将db.properties文件读取到内存中去

    InputStream is = DBUtils.class.getClassLoader()

    .getResourceAsStream("db.properties");

    //加载内容

    try {

prop.load(is);

//读取内容

driverName = prop.getProperty("dn");

//System.out.println(driverName);

url = prop.getProperty("url");

user = prop.getProperty("un");

pwd = prop.getProperty("up");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

    }

    

    //获取数据库连接对象的方法

    public static Connection getConn(){

    Connection conn = null;

    try {

Class.forName(driverName);

conn = DriverManager

.getConnection(url,user,pwd);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}   

    return conn;

    }

    

    public static void close(ResultSet

    rs,PreparedStatement pstm

    ,Connection conn){

        try {

        if(rs != null) {

            rs.close();

            }

            if(pstm != null) {

            pstm.close();

            }

            if(conn != null) {

            conn.close();

            }

        } catch(Exception e) {

        e.printStackTrace();

        }

    }

}





dn=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=UTF-8

un=root

up=root

【个人的发现和解决方法:

href和src等链接有关的改成hreff和srcc等才可以保存在b站等的专栏上,不然会报“请检查网络”等的提示等,复制粘贴我辛苦写的代码时,记得三连和关注我,并且改回href和src,

用选中红线后,按Ctrl+F,点Replace All用空格或“什么都没有”等替换红线后,就不会报红线】






<%@ page language="java" contentType="text/html; 

charset=UTF-8" pageEncoding="UTF-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"

    +request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base hreff="<%=basePath%>">

        <title></title>

 <meta http-equiv="pragma" content="no-cache">

        <meta http-equiv="cache-control" content="no-cache">

        <meta http-equiv="expires" content="0">

        <meta http-equiv="keywords" content

        ="keyword1,keyword2,keyword3">

        <meta http-equiv="description" content="This is my page">

        <style type="text/css">

            *{

                font-size:50px;

            }

        </style>

        <!-- 引用日期脚本文件 -->

        <script type="text/javascript" srcc="js/datepicker.js">

        </script>

        <script type="text/javascript">

            //表单验证函数

            //当这个函数返回true时,就会执行action中的代码

            //如果这个函数返回false,那么就不会执行action中的代码

            function doCheck(){

var flag = true;//表单验证默认是通过的

            //账号的长度必须在6到30位之间

var act = document.getElementsByName('act')[0].value;

            //获取输入的账号的长度

var len = act.length;

if(len < 6 || len > 30) {

            flag = false;

alert('账号的长度必须在6到30位之间');

            }

            //获取到第一次输入的密码

var pwd = document.getElementsByName('pwd')[0].value;

            //获取到第一次输入的密码的长度

            len = pwd.length;

            if(len < 6 || len > 30) {

            flag = false;

            alert('密码的长度必须在6到30位之间');

            }

            //两次输入的密码必须一致

            //获取第二次输入的密码

 var pwd1 = document.getElementsByName('pwd1')[0].value;

            if(pwd != pwd1) {

            flag = false;

            alert('两次输入的密码不一致');

            }

            return flag;

            }

        </script>

    </head>

    <body>

        <!-- onsubmit事件表单提交以前 -->

<form action="doReg.jsp" method="post" 

onsubmit="return doCheck();">

            <table border="1">

                <tr>

  <td><span style="color:red;">*</span>账号:</td>

       <td><input type="text" name="act" /></td>

                </tr>

                <tr>

     <td><span style="color:red;">*</span>密码:</td>

      <td><input type="password" name="pwd" /></td>

                </tr>

                <tr>

                    <td>确认密码:</td>

   <td><input type="password" name="pwd1" /></td>

                </tr>

                <tr>

                    <td>生日:</td>

                    <td>

                        <input type="text" name="birth" 

   readonly onclick="new Calendar().show(this);" />

                    </td>

                </tr>

                <tr>

                    <td>性别:</td>

                    <td>

 <input type="radio" name="sex" value="男" checked />男

  <input type="radio" name="sex" value="女" />女

                    </td>

                </tr>

                <tr>

                    <td>爱好:</td>

                    <td>

 <input type="checkbox" name="hobbys" value="阅读" />看书

<input type="checkbox" name="hobbys" value="打球" />做视频

<input type="checkbox" name="hobbys" value="游泳" />给诗书画唱三连

 <input type="checkbox" name="hobbys" value="LOL" />给诗书画唱关注

                    </td>

                </tr>

                <tr>

                    <td colspan="2" align="center">

 <input type="submit" value="注册" />

                    </td>

                </tr>

            </table>

            <div style="color:red;">${msg }</div>

        </form>

    </body>

</html>





<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>

<%@page import="java.text.SimpleDateFormat"%>

<%@page import="com.SSHC.bean.User"%>


<%@page import="java.util.*"%>


<%@page import="com.SSHC.DAO.UserDao"%>

<%@ page language="java" contentType

="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

    //乱码处理

    request.setCharacterEncoding("utf-8");

    //1、获取表单中输入的数据

    String act = request.getParameter("act");

    String pwd = request.getParameter("pwd");

    String pwd1 = request.getParameter("pwd1");

    String birth = request.getParameter("birth");

    String sex = request.getParameter("sex");

    String[] hobbys = request.getParameterValues("hobbys");

    //将hobbys数组转换成一个字符串

    StringBuilder hbs = new StringBuilder();

    if(hobbys != null) {//如果没有选兴趣爱好,hobbys就是null

    String dot = "";

    for(int i = 0;i < hobbys.length;i ++) {

    hbs.append(dot);

    hbs.append(hobbys[i]);

    dot = ",";

    }

    System.out.println(hbs);//游泳,阅读,LOL

    }

    //将数据打包

    User u = new User();

    u.setAct(act);

    u.setPwd(pwd);

  //  try {

   /**SimpleDateFormat format = 

 new SimpleDateFormat("yyyy-MM-dd");

   

 

        Date myDate = format.parse(birth);

        System.out.println(myDate);

        */


    //    Date myDate = new  Date(birth); 

        //System.out.println(birth);

    u.setBirth(birth);

    u.setSex(sex);

    u.setHobbys(hbs.toString());

    //2、后台验证(省略)

    //3、注册(新增一条数据)

      System.out.println(act+pwd+birth+sex+hbs.toString());

UserDao ud = new UserDao();

/* *  List<User>list = new ArrayList<User>();

   for(int i = 0;i < list.size();i ++) {

   User p = list.get(i);

    System.out.println(p);

   }*/

   ud.add(u);

   

 Integer count = ud.add(u);

System.out.println(act.length());


  //  System.out.println(count);

    

  //   UserDao UserDao= new UserDao();


// List<User>list = UserDao.selectAll();





 //for(User U : list) {


//System.out.println(U);


 //} 


    //4、结果处理(也可以

    /**

    诗书画唱个人分享的个人总结的

    注意事项:

   

    Integer count = ud.add(u)+1;

    后count=1,用if(count>0){}或

    if(

 act.trim().length* pwd.trim().length

    * pwd1.trim().length

    * birth.trim().length

    * sex.trim().length

    * hobbys.trim().length>0){}

   

    或

    if(

        act.trim().length>0&&

        pwd.trim().length>0

        && pwd1.trim().length>0

        && birth.trim().length>0

        && sex.trim().length>0

        && hobbys.trim().length>0){}

    ):

   

    但如果reg,DAO等中已经设置了约束,满足约束

    后才可跳转到doReg,那么这里只要

    u!=null或其他去除空格后长度大于0,就可以了。

    

    因为空格有时也有长度。

    */

    if(u!=null) {//a、注册成功,跳转到login.jsp

    //注册成功后将账号自动的填入到登录的账号输入框中

    request.setAttribute("userName", act);

    request.getRequestDispatcher("login.jsp")

        .forward(request, response);

    }else 

    {//b、注册失败,跳转到reg.jsp,同时提示注册失败

    String msg = "注册失败,请联系系统管理员";

        request.setAttribute("msg", msg);

    request.getRequestDispatcher("reg.jsp")

        .forward(request, response);

    }  

  //  } catch (Exception e) {

   //     e.printStackTrace();

  //  }

%>



<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base hreff="<%=basePath%>">

        <title></title>

        <meta http-equiv="pragma" content="no-cache">

        <meta http-equiv="cache-control" content="no-cache">

        <meta http-equiv="expires" content="0">

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

        <meta http-equiv="description" content="This is my page">

        <style type="text/css">

            *{

                font-size:50px;

            }

        </style>

    </head>

    <body>

        <form action="doLogin.jsp" method="post">

            <table border="1">

                <tr>

                    <td>账号:</td>

                    <td><input type="text" name="act" value="${userName }"

                        placeholder="请输入账号"/></td>

                </tr>

                <tr>

                    <td>密码:</td>

                    <td><input type="password" name="pwd" /></td>

                </tr>

                <tr>

                    <td colspan="2" align="center">

                        <input type="submit" value="提交" />

                    </td>

                </tr>

            </table>

            <div>${msg }</div>

        </form>

    </body>

</html>




<%@page import="com.SSHC.bean.User"%>

<%@page import="com.SSHC.DAO.UserDao"%>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

    //中文乱码处理

    request.setCharacterEncoding("utf-8");

    //1、获取用户输入的账号和密码

    String act = request.getParameter("act");

    String pwd = request.getParameter("pwd");

    System.out.println(act);

    //2、查询数据库

    UserDao userDao = new UserDao();

    User u = userDao.selectByActAndPwd(act, pwd);

    //3、根据查询出来的结果进行处理

    if(u.getId() != null && u.getId() > 0) {

    //将登录的账号存放到session

    //后面当你跳转到任何的页面时,还需要验证是否是合法的访问

    request.getSession().setAttribute("userName", act);

    //a、根据账号和密码能够查询记录,就表示登录成功,跳转到后台管理页面

    request.getRequestDispatcher("manage.jsp").forward(request, response);

    } else {

    String msg = "账号或者密码错误";

    request.setAttribute("msg", msg);

    //b、没有查询到记录,就表示登录失败,跳转回login.jsp

    request.getRequestDispatcher("login.jsp").forward(request, response);

    }   

%>


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base hreff="<%=basePath%>">

        <title></title>

        <meta http-equiv="pragma" content="no-cache">

        <meta http-equiv="cache-control" content="no-cache">

        <meta http-equiv="expires" content="0">

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

        <meta http-equiv="description" content="This is my page">

    </head>

    <body>

        <h1>Hi!欢迎登录本系统,${userName }</h1>

    </body>

</html>





运行:



——————————————————————————————————


常用单词和用来区别或理解的内容等:

manage为登录成功后的界面,之后可以写用于管理等方面的代码,实现其管理功能的程序等






个人分享的解决问题的方法:

当自己某一个内容不知道怎么容,可以百度(或其他的搜索引擎),之后找到会综合处可以类比出答案等的内容:

比如我用jsp不知道怎么写DAO中的增加的封装的方法,那么我就百度和其有关的认为可以搜索到想要内容的关键词“jsp增删改查学生表”。

https://www.sogou.com/link?url=hedJjaC291P3yGwc7N55kLSc2ls_Ks2xoSDzGT_y3Rrr1m3DJA85oHqIGYLXQ54N

这里面用了类比后的百度的内容



——————————



学习笔记:

一、登录功能


知道实现一个功能的步骤

1、在mysql数据库中创建一个表user,表结构:id,act,pwd

"2、搭建项目,需要创建一些包:

com.jy.bean:com/jy/bean,对应每个表中的一条数据的,你有几个表就创建一个bean

com.jy.dao:com/jy/dao,负责对表进行增删改查的,你有一个表就创建一个dao"

"com.jy是怎么来的:根据你所在的公司的网址来确定,www.jy.com,你的包名就将网址

倒过来写就可以了com.jy"

"3、将数据库的配置文件db.properties放到src目录下,同时将数据库的驱动包拷贝到

工程的lib目录下。将数据库连接工具类拷贝到工程目录下"

4、创建login.jsp页面

"5、设计登录的action即doLogin.jsp页面,因为这个页面没有需要展示的东西,所以

我们将它的所有的html代码都删除。然后将doLogin.jsp的相对路径写到表单的actiion属性中。"

6、实现登录的业务,编写登录的代码


在项目中,一个方法的功能越简单越单一就越能够复用


二、登录注册功能:验证码,人脸识别,短信验证

普通的注册:输入账号密码(输入两次),生日,学历,爱好等

1、创建reg.jsp页面

2、设计一个业务处理页面doReg.jsp,将表单中的action设置为这个业务处理页面

3、表单验证,保证用户输入的数据是正确的,不会破坏后台的数据库中的数据


个人的提示和发现:

运行是要注意,可以鼠标右键点“Run as”,分别有只运行Java代码或者是运行JSP的部分等的代码等。



做项目等先做界面,之后就可以有很多的思路,灵感等。


个人想出的创新的方法:



Java web代码和学习笔记JSP实现完整的登录注册功能的界面,解决大多之法【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律