创建数据库
创建需要跳转的页面,完成对应页面内容
创建实体类
package com.su.Bean;
public class User {
private Integer uid ;
private String username;
private String password;
private String phone ;
private String address;
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 + '\'' +
'}';
}
}
创建jdbc工具类
package com.su.util;
import java.sql.*;
public class JDBCUtil {
private static String driver = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
private static String user = "root";
private static String password = "root";
private static Connection con = null;
/**
* 获得数据库连接对象
*/
public static Connection getCon() throws ClassNotFoundException, SQLException {
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){
try {
if (rs!=null){
rs.close();
}
if (ps!=null){
ps.close();
}
if (con!=null){
con.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
public static void close(PreparedStatement ps, Connection con) {
try {
if (ps!=null){
ps.close();
}
if (con!=null){
con.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
创建接口
package com.su.dao;
import com.su.Bean.User;
public interface UserDao {
User login(String username, String password);
int register(User user);
}
实现接口
package com.su.dao.impl;
import com.su.Bean.User;
import com.su.dao.UserDao;
import com.su.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDaoImpl implements UserDao {
private Connection con=null;//数据库连接对象
private PreparedStatement ps=null;//预处理对象
private ResultSet rs=null;//结果集对象
private int row=0;//增删改受影响的行数
User login=null;
@Override
public User login(String username, String password) {
try {
con= JDBCUtil.getCon();
//3.定义登录的sql语句
String sql="select * from t_user where username=? and password=?";
//4.获取预处理对象
ps=con.prepareStatement(sql);
//5.传参
ps.setObject(1,username);
ps.setObject(2,password);
//6.执行查询
rs=ps.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.关闭资源
JDBCUtil.close(rs,ps,con);
}
return login;
}
@Override
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(ps,con);
}
return row;
}
}
完成登录页面
package com.su.servlet;
import com.su.Bean.User;
import com.su.dao.UserDao;
import com.su.dao.impl.UserDaoImpl;
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 java.io.IOException;
@WebServlet("/login")
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置请求和响应的编码格式,以及响应的格式
request.setCharacterEncoding("utf-8");//设置请求的编码格式为中文
response.setCharacterEncoding("utf-8");//设置响应的编码格式
response.setContentType("text/html;charset=UTF-8");//以什么样的格式(文本/网页)响应
//2.获取请求的参数
String username = request.getParameter("username");//根据表单的name属性获取用户输入的值
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
//3.执行业务处理
UserDao userDao=new UserDaoImpl();
User login=userDao.login(username,password);
//判断登录的用户信息是否为空
if(login!=null){
//登录成功,跳转到主页
response.sendRedirect("zhuye.jsp");//指定跳转的页面
}else{
//登录失败,跳转到错误页
response.sendRedirect("error.jsp");
}
}
}
完成注册页面
package com.su.servlet;
import com.su.Bean.User;
import com.su.dao.UserDao;
import com.su.dao.impl.UserDaoImpl;
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 java.io.IOException;
@WebServlet("/register")
public class Register extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置请求和相应的编码
request.setCharacterEncoding("utf-8");//设置请求的编码格式为中文
response.setCharacterEncoding("utf-8");//设置响应的编码格式
response.setContentType("text/html;charset=UTF-8");//以什么样的格式(文本/网页)响应
//2.获取请求的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String phone = request.getParameter("phone");
String address= request.getParameter("address");
//封装到User对象中
User user=new User();
user.setUsername(username);
user.setPassword(password);
user.setPhone(phone);
user.setAddress(address);
System.out.println(user);
//JDBC操作
UserDao userDao=new UserDaoImpl();
int row=userDao.register(user);
//3.做出响应
if(row>0){
response.sendRedirect("login.jsp");
}else {
response.sendRedirect("register.jsp");
}
}
}
HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP 协议的工作过程:当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。
什么是el:
EL( Expression Language意思为表达式语言,可以获取域对象中的数据,它提供了在JsP中简化表达式的方法,让Jsp的代码更加简化。
是通过${}从作用域对象中自动获取数据,如果是对象可以通过.访问其属性。
什么是jstl:
JSTL(Java server pages standarded tag library,即JSP标准标签库)开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度
在页面中导入jstl的核心类库
<%@ page import="java.util.List" %>
<%@ page import="com.chen.bean.Goods" %><%--
Created by IntelliJ IDEA.
User: 桃
Date: 2023/2/17
Time: 20:13
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!---在页面导入jstl的核心类核--->
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<!---EL表达式是通过 $ { } 从作用域对象中自动获取数据,如果对象可以通过,访问其属性--->
<h2>欢迎来自${user.address}的${user.username}来到三次元世界购物</h2>
<table>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品说明</th>
</tr>
<!--items:要遍历的集合元素 var:临时变量-->
<c:forEach items="${goodsList}" var="goods">
<tr>
<td>${goods.gid}</td>
<td>${goods.gname}</td>
<td>${goods.price}</td>
<td>${goods.mark}</td>
</tr>
</c:forEach>
<%-- <%--%>
<%-- //获取session对象--%>
<%-- HttpSession session1=request.getSession();--%>
<%-- //从session对象中获取--%>
<%-- List<Goods> goodsList = (List<Goods>) session1.getAttribute("goodsList");--%>
<%-- for (Goods goods:goodsList){--%>
<%-- %>--%>
<%-- <tr>--%>
<%-- <td><%=goods.getGid()%></td>--%>
<%-- <td><%=goods.getGname()%></td>--%>
<%-- <td><%=goods.getPrice()%></td>--%>
<%-- <td><%=goods.getMark()%></td>--%>
<%-- </tr>--%>
<%-- <%--%>
<%-- }--%>
<%-- %>--%>
</table>
</body>
</html>