利用Javaweb(jsp)做一个具有登录注册查询等功能的系统网页之注册功能(三)

本文详细介绍了一个学生注册系统的实现过程,包括数据库连接、实体类创建、Servlet处理及表单验证等关键步骤。

前面我介绍了基本页面的练习和功能,接下来我们就开始完善这些功能。

首先是注册功能,但是要想把我们注册的内容添加到数据库中,首先要连接数据库,所以我们需要写一个接口,连接数据库。

创建如图:
在这里插入图片描述
然后,打开我们创建好的Java类文件,就可以在那里写接口了

在这里插入图片描述
这样数据库差不多就连好了,记得先打开数据库,再运行程序,不然会报错。

我们还需要给我们的对象创建一个实体类,也就是初始化我们的对象,也就是注册的用户。
所以同样的方法,
在这里插入图片描述
然后,根据我们的需要,并且与数据库的数据一致,编写如下代码:

package com.Student.entity;
public class Student_User {
	private String User_id;
	private String User_name; 
	private String User_password ;
	private String User_sex ;
	private String User_phone;
	public Student_User(String user_id, String user_name, String user_password, String user_sex, String user_phone) {
		super();
		User_id = user_id;
		User_name = user_name;
		User_password = user_password;
		User_sex = user_sex;
		User_phone = user_phone;
	}

	public String getUser_id() {
		return User_id;
	}
	public void setUser_id(String user_id) {
		User_id = user_id;
	}
	public String getUser_name() {
		return User_name;
	}
	public void setUser_name(String user_name) {
		User_name = user_name;
	}
	public String getUser_password() {
		return User_password;
	}
	public void setUser_password(String user_password) {
		User_password = user_password;
	}
	public String getUser_sex() {
		return User_sex;
	}
	public void setUser_sex(String user_sex) {
		User_sex = user_sex;
	}
	public String getUser_phone() {
		return User_phone;
	}
	public void setUser_phone(String user_phone) {
		User_phone = user_phone;
	}	       
}

接着,回到我们的注册界面,上一篇我已经给出了注册页面的代码,接下来就是相关功能的完善。

我们需要一个js 表单验证。
在这里插入图片描述
一个register的servlet
在这里插入图片描述
其中,表单认证是用于我们注册时检测我们填写的格式正不正确,以及允不允许提交等。
而servlet是用于将我们的数据提交给数据库。
所以我们先写servlet,在确保数据可以存入的前提下进行表单验证。

步骤:
右击src文件夹,新建,其他,找到serlet.
在这里插入图片描述
接着在这里插入图片描述
然后点开Register.java

package com.Student.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.Student.entity.Student_User;
import com.Student.service.Student_userdao;

@WebServlet("/register")
public class Register extends HttpServlet {

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		
		String username=request.getParameter("username");
		String usersex=request.getParameter("sex");
		String userid=request.getParameter("userid");
		String pwd=request.getParameter("password");		
		String userphone=request.getParameter("phone");
		 //创建用户实体
		Student_User u = new Student_User(userid,username,pwd,usersex,userphone);
		
		//加入到数据库表中
		int count = Student_userdao.insert(u);
		System.out.print(u);
		//成功失败重定向
		
		if(count>0) {
			PrintWriter out =response.getWriter();
			out.print("<script language='javascript'>alert('注册成功,前往登录');window.location.href='student_login.jsp';</script>");	
		//response.sendRedirect("student_login.jsp");
         
		}else{
			PrintWriter out =response.getWriter();			
			out.print("<script language='javascript'>alert('注册失败,重新注册');window.location.href='Student_register.jsp';</script>");
		

	}
	}
}

在这里我们用到了一个插入
在这里插入图片描述
这是一个服务类,所以我们还需要再写一个类,

右击src,新建一个包,如图:在这里插入图片描述
接着,写入代码:

/*插入*/
	public static int insert(Student_User u) {
		String sql="insert into Student_User values(?,?,?,?,?)";
		
		Object []params = {
				u.getUser_id(),
				u.getUser_name(),
				u.getUser_password(),
				u.getUser_sex(),
				u.getUser_phone()
		};
		 return Basedao.exectuIUD(sql, params);	
	}

再我们return语句中,Basedao.exectuIUD(sql, params);这个类我们没有写,所以需要返回Basedao中添加。
如图:
在这里插入图片描述
所以,我们basedao 的最终代码为:

package com.Student.dao;

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

public class Basedao {
	static String URL = "jdbc:mysql://localhost:3306/user_database?&serverTimezone=GMT%2B8&useSSL=false";
    static String USER = "root";
    static String PASSWORD = "123456";
    static Connection conn=null;
	public static final String DRIVER="com.mysql.cj.jdbc.Driver";
	
	
	
	public static Connection getconn() {
		Connection conn=null;
		try {
			  Class.forName(DRIVER);
			 conn=DriverManager.getConnection(URL,USER,PASSWORD);
			 
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		return conn;
		
	}
	
	public static int exectuIUD(String sql,Object []params) {
		int count =0;
		Connection conn =Basedao.getconn();
		PreparedStatement ps =null;
		
		//insert into user('''''','')value(?,?,?)
		try {
			//准备sql
			ps=conn.prepareStatement(sql);
			
			for(int i=0;i<params.length;i++) {
				ps.setObject(i+1, params[i]);
			}
			
			count=ps.executeUpdate();
			
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			Basedao.closeall(null, ps, conn);
		}
		return count;
	}
	
	
	public static void closeall(ResultSet rs,PreparedStatement ps,Connection conn) {
		
			try {
				if(rs!=null)
				    rs.close();
				if(ps!=null)
					ps.close();
				if(conn!=null)
					conn.close();
			} catch (SQLException e) {
				
				e.printStackTrace();
			}
	}
	
}

这样,我们注册页面的内容就可以存到我们的数据库中了。
接着是我们的表单认证:
在webcontent目录下创建一个js的文件夹,导入jquery插件,接着创建一个后缀名为.js的文件,点开function文件,在里面就可以编写我们的表单认证了。
在这里插入图片描述


var flag=true;  //标记位

function FocusItem(obj) {
	
	if($(obj).attr('name') == 'veryCode') {
		$(obj).next().next().html('').removeClass('error');
		
	}else {
		$(obj).next('span').html('').removeClass('error');
		
	}
		
}


function CheckItem(obj){
var msgBox = $(obj).next('span');
	
	switch($(obj).attr('name')) {
		case "username":
			if(obj.value==""){
				msgBox.html('用户名不能为空!');
				msgBox.addClass('error');
				flag=false;
			}else{
				flag=true;
				}		
			break;
		case "userid":
			if(obj.value==""){
			msgBox.html('账号不能为空!');
			msgBox.addClass('error');
			flag=false;
		}else{
			var url="useridcheck?id="+encodeURI($(obj).val())+"&"+new Date().getTime();
			
			$.get(url,function(data){
				if(data=="false"){
					msgBox.html('账号已被占用!');
					msgBox.addClass('error');
					flag=false;
				}else{
					msgBox.html.removeClass('error');
					flag=true;
				}
			});
		}				
			break;
			
		case"password":
			if(obj.value==""){
				msgBox.html('密码不能为空!');
				msgBox.addClass('error');
				flag=false;
			}else{
				flag=true;
				}	
			break;
			
		case"repassword":
			if(obj.value==""){
				msgBox.html('确认密码不能为空');
				msgBox.addClass('error');
				flag=false;
			}else if($(obj).val() !=$('input[name="password"]').val() ){
				msgBox.html('两次密码不一致!');
				msgBox.addClass('error');
				flag=false;
			}else{
				flag=true;
				}	
			break;
			
		case"phone":
			if(obj.value==""){
				msgBox.html('电话号码不能为空!');
				msgBox.addClass('error');
				flag=false;
			}else{
				flag=true;
				}	
			break;
								
		}
}


function checkForm(frm){
	
	var els =frm.getElementsByTagName('input');
	
	for(var i=0; i<els.length;i++){
		if(els[i] !=null){
			if(els[i].getAttribute("onblur")){
				CheckItem(els[i]);
			}
		}
	}
	
	return flag;
}

当我们鼠标点击框框,却没有输入时,我们鼠标离开的时候就会出现提醒
这样,我们简单的表单认证就完成了
在这里插入图片描述

当我们输入的时候,提醒框就消失了。以此类推。
这样,我们的表单认证就做好了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功存入数据库。

注册功能就这样做好了,下次更新登录功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值