创建测试数据
#判断存在即删除数据库
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项目
首页index.jsp的页面布局
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>这是一个web项目</title>
</head>
<body>
<h2>学习java web</h2>
<a href="Login.jsp">登录</a>
<a href="ZhuCe.jsp">注册</a>
</body>
</html>
结果运行是这个样子
通过index.jsp进入Login.jsp登录页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<h2>登录</h2>
<form action="login" method="post">
账户:<input type="text" name="username" value=""><br>
密码:<input type="password" name="password" value=""><br>//忘记加了
<input type="submit" value="登录">
</form>
</body>
</html>
注册页面的设计
<%--
Created by IntelliJ IDEA.
User: 30839
Date: 2023/2/14
Time: 10:54
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<h2>注册</h2>
<form action="zhuce" method="post">
添加账号:<input type="text" name="user" value=""><br>
设置密码:<input type="password" name="pwd" value=""><br>
添加电话:<input type="text" name="phone" value=""><br>
添加地址:<input type="text" name="address" value=""><br>
<input type="submit" value="注册">
</form>
</body>
</html>
结果演示
当然通过长按Ctrl点击login进入login登录的映射
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.xue.servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>zhuce</servlet-name>
<servlet-class>com.xue.servlet.Zhuce</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>zhuce</servlet-name>
<url-pattern>/zhuce</url-pattern>
</servlet-mapping>
</web-app>
5.在编写使用httpServlet和数据库mysql连接实现用户登录
package com.xue.servlet;
import com.xue.bean.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Login extends HttpServlet {
Connection connection = null;
PreparedStatement pstm = null;
ResultSet rs = null;
User login = null;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Login-get.....");
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Login-post");
//前端请求(request),后端处理后,给前端响应
//三个不同的获取请求地址
String URI = req.getRequestURI();
String contextPath = req.getContextPath();
String servletPath = req.getServletPath();
//dayindizhi
System.out.println(URI);//项目名称和资源路径
System.out.println(contextPath);//项目名称
System.out.println(servletPath);//资源路径
// String RemoteAddr = req.getRemoteAddr();
// String remoteHost = req.getRemoteHost();
// //dayin
// System.out.println(RemoteAddr);
// System.out.println(remoteHost);
System.out.println("--------------------------------6--------------------");
//1.设置请求和响应的编码格式,响应格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//2.获取从请求中获取用户提交的参数内容
String user = req.getParameter("username");//获取账户
String pwd = req.getParameter("password");//获取密码
System.out.println(user);
System.out.println(pwd);
//3.执行业务处理
try {
//1.加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&sererTimezone=UTC", "root", "root");
//3.定义SQL语句
String sql = "select * from t_user where username=? and password=?";
//4.获得预处理对象
pstm = connection.prepareStatement(sql);
//5.传参
pstm.setObject(1,user);
pstm.setObject(2,pwd);
//6.执行查询
rs = pstm.executeQuery();
//7.解析结果集
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 {
//8.关闭资源
try{
if (rs!=null){
rs.close();
}
if (pstm!=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
//9.判断登录的用户信息是否为空
if (login != null){
//登录成功,跳转主页
resp.sendRedirect("zhuye.jsp");
// resp.getWriter().write( "登录成功");
}else{
//登录失败,跳转错误页面
resp.sendRedirect("error.jsp");
// resp.getWriter().write("错误");
}
}
}
6.在编写使用httpServlet和数据库mysql连接实现用户注册
package com.xue.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;
public class Zhuce extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Login-get");
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置请求和响应的编码格式为UTF-8格式,响应格式
System.out.println("注册");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");//设置请求编码格式为中文
String username = request.getParameter("user");//根据表单获取用户输入账号
String password = request.getParameter("pwd");//根据表单获取用户输入密码
String phone = request.getParameter("phone");
String address = request.getParameter("address");
System.out.println(username);
System.out.println(password);
Connection connection = null;
PreparedStatement pstm = null;
ResultSet rs = null;
//2.根据用户提交的账户密码,进行数据库查询
try{
//1.加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取数据库连接
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&serverTimezone=UTC","root","root");
//3.定义注册的SQL语句
String sql = "insert into t_user(username,password,phone,address) values (?,?,?,?)";
//4.预处理SQL语句
pstm = connection.prepareStatement(sql);
//5.给?赋值
pstm.setObject(1,username);
pstm.setObject(2,password);
pstm.setObject(3,phone);
pstm.setObject(4,address);
System.out.println(username);
System.out.println(password);
System.out.println(phone);
System.out.println(address);
//6.获取数据
int i = pstm.executeUpdate();
//设置响应编码格式为UTF-8格式
response.setCharacterEncoding("UTF-8");
//设置文本或者网页的形式响应
response.setContentType("text/html;charset=UTF-8");
//判断是否有数据,作出响应
if(i>0){
//登录成功
response.getWriter().write("注册成功");
// response.sendRedirect("zhuye.jsp");
}else {
//登录失败
response.getWriter().write("注册失败");
// response.sendRedirect("error.jsp");
}
}catch (ClassNotFoundException | SQLException e){
throw new RuntimeException(e);
}finally {
//7.关闭资源
try{
//如若rs为空,关闭资源,反之
if (rs!=null){
rs.close();
}
if (pstm!=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
测试一下,使用随机账户密码和数据库储存的账户密码进行登录,进行和数据库储存数据对比
(1)随机数据
(2)数据库数据
(3)注册测试
(4)刷新数据库数据