项目结构:
com.db. DBConnection:
package com.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
//封装数据连接类
public class DBConnection {
private Connection conn=null;//数据库连接对象
private Statement sta=null;//sql执行对象
private ResultSet rs=null;//结果集对象
//获取数据库连接
public Connection getConn(){
String dbDriver="com.mysql.jdbc.Driver";//mysql驱动名
String url="jdbc:mysql://localhost:3306/tb_user";//访问数据库地址
String us="root";//数据库账号
String pw="123456";//数据库密码
try {
Class.forName(dbDriver);//通过反射加载mysql驱动
conn=DriverManager.getConnection(url, us, pw);//获取数据库连接
} catch (Exception e) {
e.printStackTrace();//打印异常栈信息
}
return conn;
}
//执行查询语句的方法
public ResultSet querSQL(String sql){
conn=this.getConn();//获取数据库连接
try {
sta = conn.createStatement();//通过数据库连接创建mysql语句执行对象
rs = sta.executeQuery(sql);//执行查询语句
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
//执行非查询语句
public int SQLUpdate(String sql){
int x = 0;//定义一个标识来接收影响的行数
Connection conn = getConn();
try {
sta = conn.createStatement(); //通过连接对象创建SQL执行对象
x = sta.executeUpdate(sql); //通过SQL对象执行对象执行非查询的SQL语句,并返回收影响的行数
} catch (Exception e) {
e.printStackTrace();
}
return x;
}
//关闭对象释放内存
public void object(){
try {
if(rs!=null){rs.close();}
if(sta!=null){sta.close();}
if(conn!=null){conn.close();}
} catch (Exception e) {
e.printStackTrace();
}
}
}
com.user.User:
package com.user;
//用户实体类
public class User {
private int uid;//用户
private String username;//用户名
private String password;//用户密码
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
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;
}
}
com.dao.UsreDao:
package com.dao;
import java.sql.ResultSet;
import java.util.ArrayList;
import com.db.DBConnection;
import com.user.User;
//业务数据处理类
public class UsreDao {
//登录查询
public boolean cherUser(String us ,String pw){
boolean flag=false;//自定义标识
DBConnection db = new DBConnection();//实例化数据连接类
String sql="select * from tb_user where username='"+us+"' and password='"+pw+"'";
try {
ResultSet rs=db.querSQL(sql);//定义一个变量来接收查询后的结果集
if(rs!=null && rs.next()){//结果集不能为空,且有记录则表示用户存在
flag=true;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
db.object();//释放内存
}
return flag;
}
//注册用户信息
public int userQuery(String us,String pw){
int x = 0;
DBConnection db = new DBConnection();//实例化数据连接类
String sql = "insert into tb_user (username,password) values('"+us+"','"+pw+"')";
try {
x = db.SQLUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}finally{
db.object();
}
return x;
}
//查询注册用户是否存在
public boolean userName(String us){
boolean flag=false;//自定义标识
DBConnection db = new DBConnection();
String sql = "select * from tb_user where username = '"+us+"'";
try {
ResultSet rs=db.querSQL(sql);//自定义变量来接收查询后的结果集
if(rs!=null && rs.next()){//结果集不能为空,且有记录则表示用户存在
flag=true;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
db.object();
}
return flag;
}
//查看数据库信息
//遍历用户的方法
public ArrayList<User> queUser(){
ArrayList<User> li = new ArrayList<User>();
String sql="select * from tb_user";//查询tb_user表中的所有数据
DBConnection db = new DBConnection();
ResultSet rs=db.querSQL(sql);//执行查询语句
try {//next()读取数据库游标
while(rs.next()){//while循环每循环一次就把tb_user表的一条数据封装给User用户实体类
User u=new User();
u.setUid(rs.getInt(1));//用户id
u.setUsername(rs.getString("username"));//用户名字
u.setPassword(rs.getString("password"));//性别
li.add(u);
}
} catch (Exception e) {
e.printStackTrace();
}
return li;
}
}
登录页面(login.jsp):
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=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>
</head>
<body>
<form action="login" method="post" onsubmit="return cherk()">
账号:<input type="text" name="username"/><br>
密码:<input type="text" name="passwrod"/><br>
<input type="submit" value="登录">
</form>
</body>
<script type="text/javascript">
function cherk(){
var odain=document.getElementsByName("username")[0].value;
var opadn=document.getElementsByName("passwrod")[0].value;
if(odain==null || odain==""){
alert("账号不能为空!");
return false;
}else if(opadn==null || opadn==""){
alert("密码不能为空!");
return false;
}
return true;
}
var err ='<%=request.getAttribute("status")%>';
if(err=='on'){
alert("账号或者密码有误,请重新登录");
}else if(err=='yes'){
alert("注册成功!");
}
</script>
</html>
登录Servlet类:
package com.servlet;
import java.io.IOException;
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.dao.UsreDao;
@WebServlet(name="Login",urlPatterns="/login")
public class Login extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);//生成doPost方法,针对doGet方法请求
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");//设置请求编码格式
resp.setContentType("text/html;charset=utf-8");//设置响应编码格式
//声明两个变量,来接收用户输入的账号和密码
String username=req.getParameter("username");
String password=req.getParameter("passwrod");
UsreDao dao=new UsreDao();//实例化UserDao类
boolean flag=dao.cherUser(username, password);
if(flag){//如果数据库中有数据则跳转显示页面
req.getRequestDispatcher("/index.jsp").forward(req, resp);
}else{
req.setAttribute("status", "on");
req.getRequestDispatcher("/login.jsp").forward(req, resp);
}
}
}
显示页面(index.jsp)
<%@ page language="java" import="java.util.*,com.user.User,com.dao.UsreDao" pageEncoding="UTF-8" contentType="text/html; charset=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>
</head>
<body>
<%
UsreDao dao=new UsreDao();
ArrayList<User> listUser =dao.queUser();
%>
<div align="center">
<table border="1">
<caption>用户列表</caption>
<tr>
<td>用户名</td>
<td>密码</td>
</tr>
<%
for(User user:listUser){
%>
<tr>
<td><%=user.getUsername() %></td>
<td><%=user.getPassword()%></td>
</tr>
<%
}
%>
</table>
</div>
</body>
</html>
注册页面(insert.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=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>
</head>
<body>
<form action="insert" method="post" onsubmit="return cherk()">
账号:<input type="text" name="username"/><br>
密码:<input type="text" name="passwrod"/><br>
<input type="submit" value="注册">
</form>
</body>
<script type="text/javascript">
function cherk(){
var odain=document.getElementsByName("username")[0].value;
var opadn=document.getElementsByName("passwrod")[0].value;
if(odain==null || odain==""){
alert("账号不能为空!");
return false;
}else if(opadn==null || opadn==""){
alert("密码不能为空!");
return false;
}
return true;
}
var err ='<%=request.getAttribute("status")%>';
if(err=='on'){
alert("用户已存在,请重新注册!");
}else if(err=='yo'){
alert("注册失败,请重新注册!");
}
</script>
</html>
注册Servlet类
package com.servlet;
import java.io.IOException;
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.dao.UsreDao;
@WebServlet(name="Insert",urlPatterns="/insert")
public class Insert extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");//设置请求编码格式
resp.setContentType("text/html;charset=utf-8");//设置响应编码格式
//声明两个变量,来接收用户输入的账号和密码
String username=req.getParameter("username");
String password=req.getParameter("passwrod");
UsreDao dao=new UsreDao();//实例化UserDao类
boolean flag =dao.userName(username);
if(flag){
req.setAttribute("status","on");
req.getRequestDispatcher("insert.jsp").forward(req,resp);
}else{
int x=dao.userQuery(username, password);
if(x>0){//如果注册成功就跳转到登录页面上
req.setAttribute("status","yes");
req.getRequestDispatcher("/login.jsp").forward(req,resp);
}else{//如果注册失败就跳转到失败页面上
req.setAttribute("status","yo");
req.getRequestDispatcher("/insert.jsp").forward(req,resp);
}
}
}
}