JavaWeb-使用JDBC完成用户注册

目录

一、实验内容

二、项目结构

三、数据库

四、源代码

4.1 User.java

4.2 Login.java

4.3 login.jsp

4.4 check.jsp

4.5 test.jsp


 

一、实验内容

 

二、项目结构

三、数据库

数据库名称:users

表名:u

创建表的SQL语句:

create table
(
    uname varchar(20),
    pword varchar(20),
    age int,
    gender varchar(10),
    interest varchar(30),
    education varchar(20),
    introduction varchar(30)
)

四、源代码

4.1 User.java

package users;

public class User {
	String uname;
	String pword;
	int age;
	String gender;
	String interest;
	String education;
	String introduction;
	
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUname() {
		return uname;
	}
	public void setPword(String pword) {
		this.pword = pword;
	}
	public String getPword() {
		return pword;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getGender() {
		return gender;
	}
	public void setInterest(String interest) {
		this.interest = interest;
	}
	public String getInterest() {
		return interest;
	}
	public void setEducation(String education) {
		this.education = education;
	}
	public String getEducation() {
		return education;
	}
	public void setIntroduction(String introduction) {
		this.introduction = introduction;
	}
	public String getIntroduction() {
		return introduction;
	}
}

4.2 Login.java

package login;

import java.sql.*;
import com.microsoft.sqlserver.jdbc.SQLServerDriver; //SQL Server数据库引擎
import users.User;
import java.util.ArrayList;

public class Login {
	
	static Connection con; //连接数据库对象。必须加static,否则会报错
	static Statement smt;  //创建SQL命令的对象
	static ResultSet rs; //返回SQL语句查询结果集
	
	static String url = "jdbc:sqlserver://localhost:1433;databaseName=users"; //SQL Server数据源URL
	static String user = "yufuyou";
	static String password = "bugaosuni";
	
	static void open() {
		try {
			DriverManager.registerDriver(new SQLServerDriver()); //加载驱动
		}catch(SQLException e) {
			System.out.println("驱动不正确!");
		}
		System.out.println("数据库驱动成功!");
//		String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//		try {
//			Class.forName(JDriver); //加载数据库引擎
//		} catch (ClassNotFoundException e) {
//			System.out.println("加载数据库引擎失败!");
//			e.printStackTrace();
//		}
		
		try {
			con = DriverManager.getConnection(url, user, password);
			smt = con.createStatement();
		}catch(SQLException e) {
			e.printStackTrace();
			System.out.println("连接数据库失败!");
		}
		System.out.println("数据库连接成功!");
	} //打开数据库
	
	static void close() {
		try {
			if (rs != null) {
				rs.close();
			}
			if (smt != null) {
				smt.close();
			}
			if (con != null) {
				con.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}
	} //关闭数据库
	
	public static boolean checkuser(String uname, String pword) {
		boolean flag = false;
		String sql = "select * from u where uname = '"+uname+"' and pword = '"+pword+"'";
		
		open();
		try {
			rs = smt.executeQuery(sql);
			if (rs.next()) {
				flag = true;
			} //如果结果集不为空,则说明找到
		}catch(SQLException e) {
			e.printStackTrace();
		}
		close();
		
		return flag;
	} //检查用户名和密码
	
	public static User getOneUser(String uname, String pword) {
		User u = new User();
		String sql = "select * from u where uname = '"+uname+"' and pword = '"+pword+"'";
		
		open();
		try {
			rs = smt.executeQuery(sql);
			if (rs.next()) {
				u.setUname(rs.getString(1)); //写列序号或者列名
				u.setPword(rs.getString(2));
				u.setAge(rs.getInt(3));
				u.setGender(rs.getString(4));
				u.setInterest(rs.getString(5));
				u.setEducation(rs.getString(6));
				u.setIntroduction(rs.getString(7));
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}
		close();
		
		return u;
	} //得到某一个用户的信息
	
	public static ArrayList<User> getAllUsers(){
		ArrayList<User> list = new ArrayList<User>();
		String sql = "select * from u";
		
		open();
		try {
			rs = smt.executeQuery(sql);
			while (rs.next()) {
				User u = new User();
				u.setUname(rs.getString(1));
				u.setPword(rs.getString(2));
				u.setAge(rs.getInt(3));
				u.setGender(rs.getString(4));
				u.setInterest(rs.getString(5));
				u.setEducation(rs.getString(6));
				u.setIntroduction(rs.getString(7));
				list.add(u);
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}
		close();
		
		return list;
	} //得到所有用户的信息
	
	public static int UpdatePword(String uname, String pword) {
		String sql = "set pword = '"+pword+"' where uname = '"+uname+"'";
		int flag = 0;
		
		open();
		try {
			flag = smt.executeUpdate(sql); //executeUpdate()返回int类型,如果返回1则表示更新成功
		}catch(SQLException e) {
			e.printStackTrace();
		}
		close();
		
		return flag;
	} //修改用户密码
	
	public static int InsertNewUser(User user) {
		int flag = 0;
		String sql = "insert into u values('"+user.getUname()+"', '"+user.getPword()+"', '"+user.getAge()+"', '"+user.getGender()+"', '"+user.getInterest()+"', '"+user.getEducation()+"', '"+user.getIntroduction()+"')";
		
		open();
		try {
			flag = smt.executeUpdate(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		close();
		
		return flag;
	} //增添新用户。executeUpdate 方法返回的是影响的行数,如果大于0,则表明成功插入
	
	public static int DeleteUser(String uname) {
		int flag = 0;
		String sql = "delete from u where uname = '"+uname+"'";
		
		open();
		try {
			flag = smt.executeUpdate(sql);
		}catch(SQLException e) {
			e.printStackTrace();
		}
		close();
		
		return flag;
	} //删除用户
	
	public static void main(String[] args) {
        open();
	}
}

4.3 login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SQL Server登陆验证</title>
</head>
<body>

	<form action="check.jsp" method="post">
		<table cellpadding="2" align="center">
			<tr>
				<td align="center"><h2>信息统计表</h2></td>
			</tr>
			<tr>
				<td>姓名:</td>
				<td><input type="text" name="uname"></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type="password" name="pword"></td>
			</tr>
			<tr>
				<td>确认密码:</td>
				<td><input type="password" name="pword2"></td>
			</tr>
			<tr>
				<td>年龄:</td>
				<td><input type="text" name="age"></td>
			</tr>
			<tr>
				<td>性别:</td>
				<td>
					<input type="radio" name="gender" value="male">男
					<input type="radio" name="gender" value="female">女
				</td>
			</tr>
			<tr>
				<td>爱好:</td>
				<td>
					<input type="checkbox" name="interest" value="travel">旅游<br>
					<input type="checkbox" name="interest" value="climb">登山<br>
					<input type="checkbox" name="interest" value="gym">健身<br>
					<input type="checkbox" name="interest" value="internet">上网<br>
					<input type="checkbox" name="interest" value="swim">游泳
				</td>
			</tr>
			<tr>
				<td>学历:</td>
				<td>
					<select id="education" name="education">
						<option value="bachelor">本科</option>
						<option value="graduate">硕士</option>
						<option value="doctor">博士</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>自我介绍:</td>
				<td><textarea cols="20" rows="5" name="introduction"></textarea></td>
			</tr>
			<tr>
				<td></td>
				<td>
					<input type="submit" value="提交">
					<input type="reset" value="重置">
				</td>
			</tr>
		</table>
	</form>

</body>
</html>

4.4 check.jsp

<%@ page language="java" import="login.Login" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="login.Login, users.User" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>check</title>
</head>
<body>

	<%
		String uname = request.getParameter("uname");
		String pword = request.getParameter("pword");
		String pword2 = request.getParameter("pword2");
		session.setAttribute("uname", uname);
		session.setAttribute("pword", pword); //存到session中,后续test.jsp会用到
		
		boolean flag1 = Login.checkuser(uname, pword); //静态方法应该通过类本身调用,而不是对象
		if (flag1 == true){
			out.println("您已经注册过,请勿重复注册!"); //用System.out.println()服务器会报错
		}
		else if (!pword.equals(pword2)){
			out.println("您两次输入的密码不一致,请重新输入!");
		}
		else{
			User user = new User();
			user.setUname(uname);
			user.setPword(pword);
			user.setAge(Integer.parseInt(request.getParameter("age"))); //注意,int类型是Integer
			user.setGender(request.getParameter("gender"));
			user.setInterest(request.getParameter("interest"));
			user.setEducation(request.getParameter("education"));
			user.setIntroduction(request.getParameter("introduction"));
			int flag2 = Login.InsertNewUser(user);
			if (flag2 > 0){
				out.println("注册成功!");
			}
			else{
				out.println("注册失败!");
			}
		}
	%>
	<br>
	<button onclick="window.location.href='test.jsp'">test</button>
	
</body>
</html>

4.5 test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="login.Login, users.User" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>

	<%
		String uname = (String)session.getAttribute("uname"); //从sesson中获取数据,一定要转换成String类型,否则会报错
		String pword = (String)session.getAttribute("pword");

		User user = Login.getOneUser(uname, pword);
		out.println("姓名:" + user.getUname() + " ");
		out.println("密码:" + user.getPword() + " ");
		out.println("年龄:" + user.getUname() + " ");
		out.println("性别:" + user.getGender() + " ");
		out.println("爱好:" + user.getInterest() + " ");
		out.println("学历:" + user.getEducation() + " ");
		out.println("自我介绍:" + user.getIntroduction() + " ");
	%>

</body>
</html>

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值