1. First connect to the database, build a database in the database, and build a table.
#判断存在即删除数据库
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;
create table t_goods
(
gid int primary key auto_increment,
gname varchar(20),
price double,
mark varchar(100)
);
insert into t_goods(gname,price,mark) values('泡面',4.5,'够香够辣就是这个味!');
insert into t_goods(gname,price,mark) values('火腿',8.5,'肉质细腻Q弹!');
insert into t_goods(gname,price,mark) values('雪碧',3.5,'清爽冰凉随心爽!');
select * from t_goods;
2. Create entity classes of two tables in IDEA
package bean;
public class Goods {
private String gid;
private String gname;
private Double price;
private String mark;
public String getgid() {
return gid;
}
public void setGid(String gid) {
this.gid = gid;
}
public String getgname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public Double price() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getmark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
@Override
public String toString() {
return "Goods{" +
"gid='" + gid + '\'' +
", gname='" + gname + '\'' +
", price='" + price + '\'' +
", mark='" + mark + '\'' +
'}';
}
}
package bean;
public class User {
private Integer uid;
private String username;
private String password;
private String phone;
private String address;
public Integer uid() {
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 + '\'' +
'}';
}
}
3. Create to log in, go to the registration page
<html>
<head>
<title>欢迎访问web网页</title>
</head>
<body>
<h>欢迎访问web网页</h>
<a href="login.jsp">去登录</a><br>
<a href="zhuce.jsp">去注册</a><br>
</body>
</html>
4. Establish a registration and login mapping in web.xml
<?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>
<!-- 起别名-->
<servlet-name>login</servlet-name>
<!-- servlet类所在位置-->
<servlet-class>bean.Login</servlet-class>
</servlet>
<!-- servlet类的映射-->
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<!-- 配置servlet类;-->
<servlet>
<!-- 起别名-->
<servlet-name>zhuce</servlet-name>
<!-- servlet类所在位置-->
<servlet-class>bean.ZhuCe</servlet-class>
</servlet>
<!-- servlet类的映射-->
<servlet-mapping>
<servlet-name>zhuce</servlet-name>
<url-pattern>/zhuce</url-pattern>
</servlet-mapping>
</web-app>
5. Build a login page and registration page
login page:
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2023/2/14
Time: 11:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<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>
registration page:
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2023/2/14
Time: 11:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<form action="zhuce" method="post">
账号:<input type="text" name="username" value=""><br>
密码:<input type="password" name="password" value=""><br>
电话:<input type="text" name="phone"><br>
地址:<input type="text" name="address">
<input type="submit" value="注册">
</form>
</body>
</html>
6. Create a page with successful login and failed login
login successful:
<%@ page import="java.util.List" %>
<%@ page import="bean.Goods" %><%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2023/2/16
Time: 11:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆成功</title>
</head>
<body>
<h1>登录成功</h1>
<h2>欢迎来到javaweb项目</h2>
<table>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>价格</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<%
HttpSession session1=request.getSession();
List<Goods> goodsList= (List<Goods>) session1.getAttribute("goodsList");
for (Goods goods:goodsList){
%>
<tr>
<td><%=goods.getgid()%></td>
<td><%=goods.getgname()%></td>
<td><%=goods.getmark()%></td>
<td><%=goods.getprice()%></td>
</tr>
<%
}
%>
</body>
</html>
Login failed:
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2023/2/16
Time: 10:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录失败</title>
</head>
<body>
<h1>登录失败</h1>
<a href="login.jsp">返回登录</a>
</body>
</html>
7. Complete the login and operation interface
package dao;
import bean.User;
public interface UserDao {
public int register(User user);
public User login(String username,String password);
}
Eight. Complete the login in UserDaompl.java, and register the connection with the database
package dao.impl;
import bean.User;
import dao.UserDao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDaompl implements UserDao {
Connection connection=null;
PreparedStatement pstm=null;
ResultSet rs=null;
User aa=null;
int row=0;
public int register(User user) {
try {
//1.获取数据库连接
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC", "root", "root");
String sql="insert into t_user(username,password,phone,address) values(?,?,?,?)";
pstm=connection.prepareStatement(sql);
pstm.setObject(1,user.getusername());
pstm.setObject(2,user.getpassword());
pstm.setObject(3,user.getphone());
pstm.setObject(4,user.getaddress());
row=pstm.executeUpdate();
}catch (Exception e){
e.printStackTrace();
} finally {
try {
if (row>0){
if (pstm !=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
return row;
}
@Override
public User login(String username, String password) {
try{
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC", "root", "root");
String sql="select * from t_user where username=? and password=?";
pstm=connection.prepareStatement(sql);
pstm.setObject(1,username);
pstm.setObject(2,password);
rs=pstm.executeQuery();
if (rs.next()){
aa=new User();
aa.setUid(rs.getInt("uid"));
aa.setUsername(rs.getString("username"));
aa.setPassword(rs.getString("password"));
aa.setPhone(rs.getString("phone"));
aa.setAddress(rs.getString("address"));
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (pstm !=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
return aa;
}
}
Nine. Create a GoodsDao.java
package dao.impl;
import bean.Goods;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class GoodsDao {
Connection connection=null;
PreparedStatement pstm=null;
ResultSet rs=null;
int row=0;
public List<Goods> selectAll(){
List<Goods> goodsList=new ArrayList<>();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC", "root", "root");
String sql="select * from t_goods";
pstm=connection.prepareStatement(sql);
rs=pstm.executeQuery();
while (rs.next()){
Goods goods=new Goods();
goods.setGid(rs.getString("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
goodsList.add(goods);
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (row>0){
if (pstm !=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
if (rs !=null){
rs.close();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
return goodsList;
}
}
10. The last step is to complete the verification of login and registration
package serviet;
import bean.User;
import dao.UserDao;
import dao.impl.UserDaompl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Login extends HttpServlet {
@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 {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charest=UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
UserDao userDao = new UserDaompl();
User aa=userDao.login(username,password);
if (aa !=null){
resp.sendRedirect("goods.jsp");
} else {
resp.sendRedirect("user.jsp");
}
}
}
package serviet;
import bean.User;
import dao.UserDao;
import dao.impl.UserDaompl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
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 {
//1.设置编码
req.setCharacterEncoding("utf-8");
//2.获取请求参数
String username=req.getParameter("username");
String password=req.getParameter("password");
String phone=req.getParameter("phone");
String address=req.getParameter("address");
//3.封装:把上面所有的变量装载到User对象中
User user=new User();
user.setUsername(username);
user.setPassword(password);
user.setPhone(phone);
user.setAddress(address);
//4.执行业务处理
UserDao userDao= new UserDaompl();
int row=userDao.register(user);
//5.做出响应
if(row>0){
resp.sendRedirect("login.jsp");
}else {
resp.sendRedirect("zhuce.jsp");
}
}
}
package serviet;
import bean.Goods;
import dao.impl.GoodsDao;
import javax.jws.WebService;
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 javax.servlet.http.HttpSession;
import java.awt.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/selectAllGoods")
public class selectAllGoods 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 {
GoodsDao goodsDao=new GoodsDao();
List<Goods> goodsList=goodsDao.selectAll();
System.out.println(goodsList);
HttpSession session=req.getSession();
session.setAttribute("goodsList",goodsList);
resp.sendRedirect("goods.jsp");
}
}
11. After completing the login, realize the addition of the product table
Create and add products on the home page, as well as delete and modify products
<%@ page import="java.util.List" %>
<%@ page import="bean.Goods" %><%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2023/2/16
Time: 11:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>登陆成功</title>
</head>
<body>
<h1>登录成功</h1>
<h2>欢迎来自${user.address}的${user.username}来到javaweb项目</h2>
<table>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>价格</th>
<th>说明</th>
</tr>
</thead>
<a href="increase.jsp">添加数据</a>
<c:forEach items="${goodsList}" var="goods">
<tr>
<td>${goods.gid}</td>
<td>${goods.gname}</td>
<td>${goods.price}</td>
<td>${goods.mark}</td>
<td><a href="#">修改</a></td>
<td><a href="del?gid=${goods.gid}">删除</a></td>
</tr>
</c:forEach>
</body>
</html>
Create a form to add items
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2023/2/24
Time: 8:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加数据</title>
</head>
<body>
<form action="increase" method="post">
请输入商品名称:<input type="text" name="gname" placeholder="商品名称"><br>
请输入商品价格:<input type="number" name="price" step="0.01" placeholder="商品价格"><br>
请输入商品介绍:<input type="text" name="mark" placeholder="商品介绍"><br>
<input type="submit" value="添加">
</form>
</body>
</html>
Realize the connection between adding commodities and database
public int increase(Goods goods){
try {
//1.获取数据库连接
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC", "root", "root");
String sql="insert into t_goods(gname,price,mark) values(?,?,?)";
pstm=connection.prepareStatement(sql);
pstm.setObject(1,goods.getgname());
pstm.setObject(2,goods.getprice());
pstm.setObject(3,goods.getmark());
bb=pstm.executeUpdate();
}catch (Exception e){
e.printStackTrace();
} finally {
try {
if (bb>0){
if (pstm !=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
return bb;
}
Realize the addition of products
package serviet;
import bean.Goods;
import dao.impl.GoodsDao;
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("/increase")
public class increase 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");
resp.setContentType("text/html;charest=UTF-8");
Goods goods=new Goods();
goods.setGid(req.getParameter("gid"));
goods.setGname(req.getParameter("gname"));
goods.setPrice(Double.parseDouble(req.getParameter("price")));
goods.setMark(req.getParameter("mark"));
GoodsDao goodsDao=new GoodsDao();
int bb=goodsDao.increase(goods);
if (bb>0){
req.getRequestDispatcher("selectAllGoods").forward(req,resp);
}else {
req.setAttribute("error_msg","添加商品出错了");
req.getRequestDispatcher("user.jsp").forward(req,resp);
}
}
}
12. Realize the deletion of the commodity table after the login is completed
Realize the connection between delete product table and database
public int deleteById(int gid) {
try {
//1.获取数据库连接
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC", "root", "root");
String sql="delete from t_goods where gid=?";
pstm=connection.prepareStatement(sql);
pstm.setObject(1,gid);
row=pstm.executeUpdate();
}catch (Exception e){
e.printStackTrace();
} finally {
try {
if (pstm !=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
return row;
}
Realize the deletion of goods
package serviet;
import dao.impl.GoodsDao;
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("/del")
public class DelGoods 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 {
int gid=Integer.parseInt(req.getParameter("gid"));
GoodsDao goodsDao=new GoodsDao();
int row= goodsDao.deleteById(gid);
if (row>0){
req.getRequestDispatcher("selectAllGoods").forward(req,resp);
}else {
req.setAttribute("error_msg","删除失败了");
req.getRequestDispatcher("user.jsp").forward(req,resp);
}
}
}
Thirteen. After completing the login, realize the modification of the product table
Add a form to modify the product table
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2023/2/25
Time: 15:08
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>商品修改</title>
</head>
<body>
<form action="updateGoods" method="post">
商品编号:<input type="number" name="gid" placeholder="商品编号" value="${goods.gid}" readonly="readonly"><br>
请修改商品名称:<input type="text" name="gname" value="${goods.gname}" placeholder="商品名称"><br>
请修改商品价格:<input type="number" name="price" value="${goods.price}" step="0.01" placeholder="商品价格"><br>
请修改商品介绍:<input type="text" name="mark" value="${goods.mark}" placeholder="商品介绍"><br>
<input type="submit" value="修改">
</form>
</body>
</html>
Realize querying product information by id
public Goods selectByID(int gid){
Goods goods=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC", "root", "root");
String sql="select * from t_goods where gid=?";
pstm=connection.prepareStatement(sql);
pstm.setObject(1,gid);
rs=pstm.executeQuery();
if (rs.next()){
//从结果集中获取数据,封装到goods对象中
goods=new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (pstm !=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
if (rs !=null){
rs.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
return goods;
}
Complete the servlet class that queries product information based on id
package serviet;
import bean.Goods;
import dao.impl.GoodsDao;
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("/findByID")
public class FindGoodsByid 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 {
int gid=Integer.parseInt(req.getParameter("gid"));
//根据id查询该商品信息
GoodsDao goodsDao=new GoodsDao();
Goods goods=goodsDao.selectByID(gid);
if (goods!=null){
//把数据存储到request域对象中,然后请求转发到页面
req.setAttribute("goods",goods);
req.getRequestDispatcher("showGoods.jsp").forward(req,resp);
}else {
req.setAttribute("error_msg","修改商品出错了");
req.getRequestDispatcher("user.jsp").forward(req,resp);
}
}
}
Realize the connection between modifying the commodity and the database
public int update(Goods goods){
int row=0;
try {
//1.获取数据库连接
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC", "root", "root");
String sql="update t_goods set gname=?,price=?,mark=? where gid=?";
pstm=connection.prepareStatement(sql);
pstm.setObject(1,goods.getgname());
pstm.setObject(2,goods.getprice());
pstm.setObject(3,goods.getmark());
pstm.setObject(4,goods.getgid());
row=pstm.executeUpdate();
}catch (Exception e){
e.printStackTrace();
} finally {
try {
if (bb>0){
if (pstm !=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
return row;
}
Realize the modification of the product
package serviet;
import bean.Goods;
import dao.impl.GoodsDao;
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("/updateGoods")
public class UpdateGoods 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");
//根据表单请求的数据,封装到goods对象中
Goods goods=new Goods();
goods.setGid(Integer.parseInt(req.getParameter("gid")));
goods.setGname(req.getParameter("gname"));
goods.setPrice(Double.parseDouble(req.getParameter("price")));
goods.setMark(req.getParameter("mark"));
System.out.println(goods);
GoodsDao goodsDao=new GoodsDao();
int row=goodsDao.update(goods);
if (row>0){
req.getRequestDispatcher("selectAllGoods").forward(req,resp);
}else {
req.setAttribute("error_msg","修改商品出错了");
req.getRequestDispatcher("user.jsp").forward(req,resp);
}
}
}