目录
一、实验内容
二、项目结构
三、数据库
数据库名称: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>