mysql
#判断存在即删除数据库
drop database if exists mydb;
#创建数据库
create database mydb;
#使用数据库
use mydb;
#创建表
create table t_user
(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
phone varchar(11),
address varchar(50)
);
insert into t_user(username,password,phone,address)values("张三",'666','18965423548','南阳');
insert into t_user(username,password,phone,address)values("李四",'333','18754263548','许昌');
insert into t_user(username,password,phone,address)values("小美",'123','18565234759','信阳');
select * from t_user where username=? and password=?
select * from t_user;
java
首先在IDEA上部署web项目
<html>
<head>
<title>第一个javaWeb项目</title>
</head>
<body>
<h2>欢迎访问javaWeb界面</h2>
<a href="login.jsp">去登录</a>
</body>
</html>
然后创建.jsp写登录的html
<html>
<head>
<title>登录页</title>
</head>
<body>
<h2>登录</h2>
<!--action是表单要提交的地址 method表达提交的方式 -->
<form action="login" method="post">
账号:<input type="text" name="username" value="" /></br>
密码:<input type="possword" name="password" value=""/></br>
<input type="submit" value="登录">
<a href="register.jsp">没有账号?去注册</a>
</form>
</body>
</html>
然后是注册页面
<html>
<head>
<title>注册页面</title>
</head>
<body>
<h2>进行注册</h2>
<form action="register"method="get">
账号:<input type="text" name="username" value=""/></br>
密码:<input type="text" name="password" value=""/></br>
电话:<input type="text" name="phone" value=""/></br>
地址:<input type="text" name="address" value=""/></br>
<input type="submit" value="注册">
<a href="login.jsp">已有账号?请登录</a>
</form>
</body>
</html>
登录成功的.jsp
<html>
<head>
<title>登录成功主页</title>
</head>
<body>
<h2>登录成功页面!</h2>
</body>
</html>
登录失败的.jsp
<html>
<head>
<title>错误页</title>
</head>
<body>
<h2>出错啦!</h2>
<a href="login.jsp">返回登录</a>
</body>
</html>
用实体类代码:
public class User {
private Integer uid;
private String username;
private String password;
private String phone;
private String address;
public User() {
}
public Integer getUid() {
return uid;
}
public void setUid(Integer 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;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
'}';
}
}
登录Login逻辑代码如下
@WebServlet("/login")
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.设置请求和响应的编码
req.setCharacterEncoding("utf-8");//设置请求的编码
resp.setCharacterEncoding("utf-8");//设置响应的编码
resp.setContentType("text/html;charset=utf-8");//设置响应的文本格式和编码
//2.获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username);
System.out.println(password);
//3.业务处理--JDBC操作
implUserdao userdao = new implUserdao();
User row = userdao.login(username,password);
//4.判断业务处理结果,给前端做出响应
if (row!=null){
//登录成功
resp.sendRedirect("zhuye.jsp");//跳转页面
}else{
//登录失败
resp.sendRedirect("error.jsp");
}
}
}
注册register逻辑代码如下
@WebServlet("/register")
public class Register extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置请求和响应编码
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String phone = req.getParameter("phone");
String address = req.getParameter("address");
//封装到User对象中
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setPhone(phone);
user.setAddress(address);
System.out.println(user);
implUserdao userdao = new implUserdao();
int row = userdao.register(user);
if (row>0) {
resp.sendRedirect("login.jsp");
} else {
resp.sendRedirect("error.jsp");
}
}
JDBCutil代码
public class JDBCUtil {
public static String driver="com.mysql.cj.jdbc.Driver";
public static String url="jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezpne=UTC";
public static String user="root";
public static String password="root";
private static Connection con=null;
private static PreparedStatement ps=null;
private static ResultSet rs=null;
public static Connection getcon(){
try{
//1.加载驱动
Class.forName(driver);
//2.获取数据库连接对象
con= DriverManager.getConnection(url,user,password);
}catch (Exception e){
e.printStackTrace();
}
return con;
}
public static void close(ResultSet rs,PreparedStatement ps,Connection con){
//8.关闭资源
try{
if (rs!=null){
rs.close();
}
if (ps!=null){
ps.close();
}
if (con!=null){
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
dao包代码
public class implUserdao implements Userdao {
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
private User login=null;
int row=0;
public User login(String username, String password) {
try{
//获取连接
con=JDBCUtil.getcon();
//定义sql语句
String sql="select* from t_user where username=? and password=?";
//获取预处理对象
ps=con.prepareStatement(sql);
//传参
ps.setObject(1,username);
ps.setObject(2,password);
//执行sql语句
rs=ps.executeQuery();
//结果集处理
if (rs.next()){
login=new User();
//从结果集获取数据 封装到实体类对象中
int uid=rs.getInt("uid");
login.setUid(uid);
login.setUsername(rs.getString("username"));
login.setPassword(rs.getString("password"));
login.setPhone(rs.getString("phone"));
login.setAddress(rs.getString("address"));
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(rs,ps,con);
}
return login;
}
public int register(User user) {
try{
//数据库连接
con=JDBCUtil.getcon();
//定义sql语句
String sql="insert into t_user(username,password,phone,address)values(?,?,?,?)";
//获取预处理对象
ps=con.prepareStatement(sql);
//传参
ps.setObject(1,user.getUsername());
ps.setObject(2,user.getPassword());
ps.setObject(3,user.getPhone());
ps.setObject(4,user.getAddress());
//执行sql语句
row=ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(null,ps,con);
}
return row;
}
}
我们可以在登录界面上使用数据库的账号密码进行测试
当我们用数据库中存在的数据时,会显示登陆成功
当我们不用数据库中存在的数据时,会显示登陆失败
当我们使用注册页面时,注册的账号及密码会在数据库上存储
点击注册会跳转页面现实注册成功
至此就成功了