第十三篇——JDBC操作数据库之注册功能

现在很多web项目都能用到登录界面,其实想要实现也不难,只要运用一下我们之前记录的笔记,可以做出一个非常简单的注册登录效果。

如果ItellJ IDEA中写JSP页面时out.print()报错误,请跳转页面解决!


步骤说明:

1、代码请参考—— 第十二篇JDBC操作数据库之验证码校验

2、在第十二篇基础上继续实现功能——第十三篇JDBC操作数据库之注册用户。


一.registerUser.jsp

1.使用js实现验证功能function reg(form)

2.使用js功能实现图片更换function change()

3.由于简单验证,并没有使用正则表达式.

4.密码为了测试并没有显示为“*

5.头像只是两张图片,位于images/**.png

<%@ page language="java" import="java.util.*" 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 href="<%=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">

    <link rel="stylesheet" type="text/css" href="css/userStyle.css">

    <script type="text/javascript">
        function reg(form){
            if(form.username.value == ""){
                alert("用户名不能为空!");
                return false;
            }
            if(form.password.value == ""){
                alert("密码不能为空!");
                return false;
            }
            if(form.repassword.value == ""){
                alert("确认密码不能为空!");
                return false;
            }
            if(form.password.value != form.repassword.value){
                alert("两次密码输入不一致!");
                return false;
            }
            if(form.tel.value == ""){
                alert("联系电话不能为空!");
                return false;
            }
            if(form.email.value == ""){
                alert("电子邮箱不能为空!");
                return false;
            }
        }

        function change(){
            var photo = document.getElementById("photo");
            var photoImg = document.getElementById("photoImg");
            photoImg.src = photo.value;
        }
    </script>

</head>

<body>
    <div class="head">用户注册</div>
    <div class="div1">
        <ul>
            <li><a href="registerUser.jsp"> 用户注册 |</a></li>
            <li><a href="loginUser.jsp"> 用户登录 |</a> </li>
            <li><a href="message.jsp"> 当前用户 |</a></li>
            <li><a href="ExitLogin"> 退出登录 |</a></li>
            <li><a href="#"> 真的没了 |</a></li>
        </ul>
    </div>
    <div class="divreg">
        <form action="<%=request.getContextPath()%>/Register" method="post" οnsubmit="return reg(this)">
            <table align="center" width="450" border="0">
                <tr>
                    <td align="right">用户名:</td>
                    <td><input type="text" name="username"></td>
                </tr>
                <tr>
                    <td align="right">密码:</td>
                    <td><input type="text" name="password"></td>
                </tr>
                <tr>
                    <td align="right">确定密码:</td>
                    <td><input type="text" name="repassword"></td>
                </tr>
                <tr>
                    <td align="right">性别:</td>
                    <td>
                        <input type="radio" name="sex" value="男" checked="checked">男
                        <input type="radio" name="sex" value="女">女
                    </td>
                </tr>
                <tr>
                    <td align="right">头像:</td>
                    <td>
                        <select name="photo" id="photo" οnchange="change();">
                            <option value="images/boy.png" selected="selected">boy</option>
                            <option value="images/girl.png">girl</option>
                        </select>
                        <img id="photoImg" src="images/boy.png">
                    </td>
                </tr>
                <tr>
                    <td align="right">联系电话:</td>
                    <td><input type="text" name="tel"></td>
                </tr>
                <tr>
                    <td align="right">电子邮箱:</td>
                    <td><input type="text" name="email"></td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                        <input type="submit" value="注册">
                        <input type="reset" value="重置">
                    </td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>


二.User.java

package com.entity;

/**
 * Created by Ray on 2018/3/14 0013.
 **/
public class User {
    private int id;          //编号
    private String username; //用户
    private String password; //密码
    private String sex;      //性别
    private String tel;      //电话
    private String photo;    //头像
    private String email;    //邮箱

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getPhoto() {
        return photo;
    }

    public void setPhoto(String photo) {
        this.photo = photo;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

三.UserDao.java

1.判断用户名在数据库中是否存在

2.新增用户

package com.model;

import com.dbutil.Dbconn;
import com.entity.User;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * Created by Ray on 2018/3/14 0014.
 **/
public class UserDao {

    User user = null;
    Dbconn dbconn = new Dbconn();
    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;

    /**
    * @Author: Ray
    * @Date: 2018/3/14 0014
    * @Description: 判断用户名在数据库中是否存在
    * @Return: boolean
    */
    public boolean userIsExist(String username){
        //获取数据库连接
        connection = dbconn.getConnection();
        //根据用户名查询的sql语句
        String sql = "select * from user where username = ?";

        try{
            //获取PreparedStatement对象
            preparedStatement= connection.prepareStatement(sql);
            //对占位符进行动态赋值
            preparedStatement.setString(1,username);
            //执行查询并获取结果集
            resultSet = preparedStatement.executeQuery();
            //判断结果集是否有效
            if(!resultSet.next()){
                //如果无效则证明此用户名可用
                return true;
            }
            //释放资源
            resultSet.close();
            preparedStatement.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        return false;
    }

    /**
    * @Author: Ray
    * @Date: 2018/3/14 0014
    * @Description: 新增用户
    * @Return:
    */
    public void addUser(User user){
        //获取数据库连接
        connection = dbconn.getConnection();
        //新增用户信息的sql语句
        String sql = "insert into user(username,password,sex,tel,photo,email) values (?,?,?,?,?,?)";

        try{
            //获取PreparedStatement对象
            preparedStatement = connection.prepareStatement(sql);
            //对占位符进行动态赋值
            preparedStatement.setString(1,user.getUsername());
            preparedStatement.setString(2,user.getPassword());
            preparedStatement.setString(3,user.getSex());
            preparedStatement.setString(4,user.getTel());
            preparedStatement.setString(5,user.getPhoto());
            preparedStatement.setString(6,user.getEmail());
            //执行新增操作
            preparedStatement.executeUpdate();
            //释放资源
            preparedStatement.close();
            connection.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}


四.Register.java

1.获取input标签name属性的值

2.username输出到控制台,防止中文出现乱码

3.判断用户名是否存在

package com.control;

import com.entity.User;
import com.model.UserDao;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created by Ray on 2018/3/14 0014.
 **/
public class Register extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取input name值
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        String photo = request.getParameter("photo");
        String tel = request.getParameter("tel");
        String email = request.getParameter("email");

        //username输出到控制台
        System.out.println("username = " + username);

        //调用模型
        UserDao userDao = new UserDao();
        if(username != null){
            //判断用户名在数据库中是否存在
            if(userDao.userIsExist(username)){
                User user = new User();
                user.setUsername(username);
                user.setPassword(password);
                user.setSex(sex);
                user.setPhoto(photo);
                user.setTel(tel);
                user.setEmail(email);
                //执行新增操作
                userDao.addUser(user);
                request.setAttribute("info","恭喜,注册成功!<br>");
            }else{
                request.setAttribute("info","错误:此用户名已存在!<br>");
            }
        }
        request.getRequestDispatcher("message.jsp").forward(request,response);
    }
}

五.message.jsp

1.接收提示信息

2.输出到页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page import="com.entity.User" %>
<%
    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 href="<%=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">

    <link rel="stylesheet" type="text/css" href="css/userStyle.css">

</head>

<body>
<div class="head">提示信息</div>
<div class="div1">
    <ul>
        <li><a href="registerUser.jsp"> 用户注册 |</a></li>
        <li><a href="loginUser.jsp"> 用户登录 |</a></li>
        <li><a href="message.jsp"> 当前用户 |</a></li>
        <li><a href="ExitLogin"> 退出登录 |</a></li>
        <li><a href="#"> 真的没了 |</a></li>
    </ul>
</div>
<div class="out">
    <%
        //获取提示信息
        String info = String.valueOf(request.getAttribute("info"));
        //如果提示信息不为空,则输出提示信息
        if (info != "null") {
            out.print(info);
        }
    %>
</div>
</body>
</html>


六.userStyle.css

1.位于webapp/css

@CHARSET "UTF-8";
body {
    margin: 0px;
    padding: 0px;;
    font-size: 12px;
}
.border{
    width: 500px;
    height: 500px;
}
.head{
    font-size: 36px;
    font-weight: bold;
    margin: 30px 0 0 130px ;
}
td{
    font-size: 12px;
}
.div1 ul li{
    list-style-type: none;
    float: left;
    margin: 20px 20px 0 0;
}
.div2{
    margin: 100px 0 0 -80px;
}
.divreg{
    float: left;
    margin: 100px 0 0 -400px;
}
.divmsg{
    float: left;
    margin: -10px 0 0 -120px;
}
.out{
    margin: 100px 0 0 150px;
}
a:link{
    font-family:Verdana;
    font-size:12px;
    color:black;
    text-decoration: underline;
}
a:hover{
    font-family:Verdana;
    font-size:12px;
    color:red;
    text-decoration:none;
}
a:visited{
    font-family:Verdana;
    font-size:12px;
    color:black;
    text-decoration: underline;
}


七.web.xml

1.注意对应的Servlet

2.由于不会用到页面拦截,所以注释了.

<?xml version="1.0" encoding="UTF-8"?>
<web-app  version="2.5"
          xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>BookList</servlet-name>
        <servlet-class>com.control.BookList</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookList</servlet-name>
        <url-pattern>/BookList</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookAdd</servlet-name>
        <servlet-class>com.control.BookAdd</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookAdd</servlet-name>
        <url-pattern>/BookAdd</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookUpdate</servlet-name>
        <servlet-class>com.control.BookUpdate</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookUpdate</servlet-name>
        <url-pattern>/BookUpdate</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookDoUpdate</servlet-name>
        <servlet-class>com.control.BookDoUpdate</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookDoUpdate</servlet-name>
        <url-pattern>/BookDoUpdate</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookDelete</servlet-name>
        <servlet-class>com.control.BookDelete</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookDelete</servlet-name>
        <url-pattern>/BookDelete</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookDoDelete</servlet-name>
        <servlet-class>com.control.BookDoDelete</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookDoDelete</servlet-name>
        <url-pattern>/BookDoDelete</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookBatchAdd</servlet-name>
        <servlet-class>com.control.BookBatchAdd</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookBatchAdd</servlet-name>
        <url-pattern>/BookBatchAdd</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookBatchDelete</servlet-name>
        <servlet-class>com.control.BookBatchDelete</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookBatchDelete</servlet-name>
        <url-pattern>/BookBatchDelete</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BookFind</servlet-name>
        <servlet-class>com.control.BookFind</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookFind</servlet-name>
        <url-pattern>/BookFind</url-pattern>
    </servlet-mapping>


    <!--验证码功能-->
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>com.control.Login</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>DrawImage</servlet-name>
        <servlet-class>com.control.DrawImage</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DrawImage</servlet-name>
        <url-pattern>/DrawImage</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Register</servlet-name>
        <servlet-class>com.control.Register</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Register</servlet-name>
        <url-pattern>/Register</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>LoginUser</servlet-name>
        <servlet-class>com.control.LoginUser</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginUser</servlet-name>
        <url-pattern>/LoginUser</url-pattern>
    </servlet-mapping>

    <!--登录拦截-->
    <!--<filter>-->
        <!--<filter-name>LoginFilter</filter-name>-->
        <!--<filter-class>com.Filter.LoginFilter</filter-class>-->
        <!--<init-param>-->
            <!--<param-name>noLoginPaths</param-name>-->
            <!--<param-value>registerUser.jsp;bookList.css;userStyle.css;loginSql.jsp;login.jsp;fail.jsp;Login;ErrorFilter;DrawImage</param-value>-->
        <!--</init-param>-->
    <!--</filter>-->
    <!--<filter-mapping>-->
        <!--<filter-name>LoginFilter</filter-name>-->
        <!--<url-pattern>/*</url-pattern>-->
    <!--</filter-mapping>-->

    <!--配置过滤器-->
    <filter>
        <filter-name>CharSetFilter</filter-name>
        <filter-class>com.Filter.CharSetFilter</filter-class>
        <init-param>
            <!--用来指定一个具体的字符集-->
            <param-name>charset</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

    <!--映射过滤器-->
    <filter-mapping>
        <filter-name>CharSetFilter</filter-name>
        <!--“/*”表示拦截所有的请求 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--拦截404,500页面-->
    <error-page>
        <error-code>404</error-code>
        <location>/error/error404.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/error/error500.jsp</location>
    </error-page>
    <filter>
        <filter-name>ErrorFilter</filter-name>
        <filter-class>com.Filter.ErrorFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ErrorFilter</filter-name>
        <url-pattern>/error.jsp</url-pattern>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
</web-app>


八.页面效果







  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值