前面我介绍了基本页面的练习和功能,接下来我们就开始完善这些功能。
首先是注册功能,但是要想把我们注册的内容添加到数据库中,首先要连接数据库,所以我们需要写一个接口,连接数据库。
创建如图:

然后,打开我们创建好的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;
}
当我们鼠标点击框框,却没有输入时,我们鼠标离开的时候就会出现提醒


当我们输入的时候,提醒框就消失了。以此类推。
这样,我们的表单认证就做好了。



成功存入数据库。
注册功能就这样做好了,下次更新登录功能。

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

被折叠的 条评论
为什么被折叠?



