点赞点关注,今年就暴富

目录

前言

一、版本

二、实践部分

1. 用户部分

2. 购物部分

总结

前言

我的代码放在码云了,欢迎自己提取,么么哒~~~

(Javaweb小白一只,请大佬指点一二)

NutStore_project: 期末作业,自己实践搞的一个购物小系统(tomcat + Mysql + JDBC +jsp ) (gitee.com)

一、版本

JDK : 1.8 Oracle OpenJDK version 1.8.0 91

MySQL:8.0

Tomcat :8.5.82

添加以下的库

在pom.xml进行以下配置

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

cn.nuit

Nut_project

1.0-SNAPSHOT

Nut_project

war

UTF-8

1.8

1.8

5.8.2

javax.servlet

javax.servlet-api

4.0.1

provided

org.junit.jupiter

junit-jupiter-api

${junit.version}

test

org.junit.jupiter

junit-jupiter-engine

${junit.version}

test

org.apache.maven.plugins

maven-war-plugin

3.3.2

二、实践部分

1. 用户部分

建立一个User数据表,可以在命令提示符中进行,也可以在workbenck中,建议用后者:

create database final_exam_jdbc;

use final_exam_jdbc;

create table user(

id int primary key auto_increment, -- id

username varchar(40), -- 用户名

password varchar(40), -- 密码

gender varchar(40), -- 性别

email varchar(60), -- email

telephone varchar(40), -- 电话号码

introduce varchar(60) -- 自我介绍

)character set utf8 collate utf8_general_ci auto_increment=1000;

insert into user(id,username ,password

,gender ,email

,telephone,introduce) values(1000,"admin","123456",

"男","PRC@qq.com",

"12340","我国是工人阶级领导的,以工农联盟为基础的人民民主专政的社会主义国家");

select * from user;

 构造完数据库后,进入IDEA进行数据库连接工具和数据库操作Dao类的编写,以及User对象的set和get,对数据库内容的存放类。

建立User类

package cn.nuit.nut_project.domain;

import java.io.Serializable;

public class User implements Serializable {

private static final long serialVersionUID = 1L;

private Integer id; // 用户编号

private String username; // 用户姓名

private String password; // 用户密码

private String gender; // 用户性别

private String email; // 用户邮箱

private String telephone; // 用户联系电话

private String introduce; // 用户介绍

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

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 getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getTelephone() {

return telephone;

}

public void setTelephone(String telephone) {

this.telephone = telephone;

}

public String getIntroduce() {

return introduce;

}

public void setIntroduce(String introduce) {

this.introduce = introduce;

}

}

建立DButils类,对数据库进行连接

package cn.nuit.nut_project.Utils;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DBUtils {

public static Connection getConnection() throws ClassNotFoundException,

SQLException {

Class.forName("com.mysql.cj.jdbc.Driver");

String url = "jdbc:mysql://localhost:3306/final_exam_jdbc?&serverTimezone=Asia/Shanghai";

String username = "root";

String password = "123456";

Connection conn = DriverManager.getConnection(url, username,

password);

System.out.println("yes!!!!");

return conn;

}

// 关闭数据库连接,释放资源

public static void release(Statement stmt, Connection conn) {

if (stmt != null) {

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

stmt = null;

}

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

conn = null;

}

}

public static void release(ResultSet rs, Statement stmt,

Connection conn){

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

rs = null;

}

release(stmt, conn);

}

}

UserDao类 ,包括增删改查

package cn.nuit.nut_project.Dao;

import cn.nuit.nut_project.Utils.DBUtils;

import cn.nuit.nut_project.domain.User;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.ArrayList;

public class UserDao {

public boolean insert(User user) {

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try {

conn = DBUtils.getConnection();

stmt = conn.createStatement();

String sql = "Insert Into user(id,username,password,gender,email,telephone,introduce)"+

"values("

+user.getId() // 获取ID

+",'"

+user.getUsername() // 获取用户名

+"','"

+user.getPassword() // 获取密码

+"','"

+user.getGender() // 获取性别

+"','"

+user.getEmail() // 获取email

+"','"

+user.getTelephone() //获取电话号码

+"','"

+user.getIntroduce() // 获取个人介绍

+"')";

int num = stmt.executeUpdate(sql);

if (num>0){

return true;

}

} catch (Exception e){

e.printStackTrace();

}finally {

DBUtils.release(rs,stmt,conn);

}

return false;

}

public ArrayList findAll(){

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

ArrayList list = new ArrayList();

try {

conn = DBUtils.getConnection();

stmt = conn.createStatement();

String sql = "SELECT * FROM user";

rs = stmt.executeQuery(sql);

while (rs.next()){

User user = new User();

user.setId(rs.getInt("id"));

user.setUsername(rs.getString("username"));

user.setPassword(rs.getString("password"));

user.setGender(rs.getString("gender"));

user.setEmail(rs.getString("email"));

user.setTelephone(rs.getString("telephone"));

user.setIntroduce(rs.getString("introduce"));

list.add(user);

}

return list;

}catch (Exception e){

e.printStackTrace();

}finally {

DBUtils.release(rs,stmt,conn);

}

return null;

}

public User find(Integer id){

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try{

conn = DBUtils.getConnection();

stmt = conn.createStatement();

String sql = "SELECT * FROM user where id = "+id;

rs = stmt.executeQuery(sql);

while (rs.next()){

User user = new User();

user.setId(rs.getInt("id"));

user.setUsername(rs.getString("username"));

user.setPassword(rs.getString("password"));

user.setGender(rs.getString("gender"));

user.setEmail(rs.getString("email"));

user.setTelephone(rs.getString("telephone"));

user.setIntroduce(rs.getString("introduce"));

return user;

}

return null;

}catch (Exception e){

e.printStackTrace();

}finally {

DBUtils.release(rs,stmt,conn);

}

return null;

}

public boolean delete(int id){

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try{

conn = DBUtils.getConnection();

stmt = conn.createStatement();

String sql = "delete from user where id="+id;

int num = stmt.executeUpdate(sql);

if (num>0){

return true;

}

return false;

}catch (Exception e){

e.printStackTrace();

}finally {

DBUtils.release(rs,stmt,conn);

}

return false;

}

public boolean update(User user) {

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try {

conn = DBUtils.getConnection();

stmt = conn.createStatement();

String sql = "UPDATE user set id='"

+user.getId()

+"',username='"

+user.getUsername()

+"',password='"

+user.getPassword()

+"',gender='"

+user.getGender()

+"',email='"

+ user.getEmail()

+"',telephone='"

+ user.getTelephone()

+"',introduce='"

+ user.getIntroduce()

+"'where id = "

+ user.getId();

int num = stmt.executeUpdate(sql);

if (num>0){

return true;

}

return false;

}catch (Exception e){

e.printStackTrace();

}finally {

DBUtils.release(rs,stmt,conn);

}

return false;

}

public boolean findbone(Integer id, String password) {

Connection con = null;

PreparedStatement stat = null;

ResultSet rs = null;

boolean result = false;

try {

con = DBUtils.getConnection();

stat = con.prepareStatement("SELECT *FROM user WHERE id = ? and password = ?");

stat.setInt(1, id);

stat.setString(2, password);

rs = stat.executeQuery();

if (rs.next()) {

result = true;

} else {

result = false;

}

} catch (Exception e) {

e.printStackTrace();

} finally {

DBUtils.release(rs,stat,con);

}

return result;

}

}

接下俩编写登录注册的操作, 以及JSP连接的操作

登录

用户在前端进行账号和密码的输入,后端通过 req.getParameter进行获取。

通过UserDao的findone()函数,进行密码账号的匹配判断,返回布尔类型数据,做完登陆成功与否的判别。

package cn.nuit.nut_project.servlet;

import cn.nuit.nut_project.Dao.UserDao;

import cn.nuit.nut_project.domain.User;

import javax.servlet.RequestDispatcher;

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.io.IOException;

@WebServlet(name = "loginServlet",value = "/loginServlet")

public class loginServlet extends HttpServlet {

UserDao UD = new UserDao();

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// super.doPost(req, resp);

// resp.sendRedirect(req.getContextPath()+"/loginSuccess.jsp");

req.setCharacterEncoding("utf-8");

int id= Integer.parseInt(req.getParameter("id"));

String password = req.getParameter("password");

// resp.getWriter().println(id);

if(UD.findbone(id,password)){

HttpSession session = req.getSession();

User user = UD.find(id);

session.setAttribute("user", user);

System.out.println(user);

RequestDispatcher dispatcher = req.getRequestDispatcher("Profile.jsp");

dispatcher.forward(req, resp);

// resp.sendRedirect(req.getContextPath()+"/Profile.jsp");

}else{

resp.sendRedirect(req.getContextPath()+"/loginError.jsp");

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

}

}

JSP 前端你可以通过GPT进行生成,还是挺方便的,自己进行微调。

<%--

Created by IntelliJ IDEA.

User: 25381

Date: 2024/1/2

Time: 16:14

To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>

用户登录

 注册

注册页面的操作,通过从前端获取的数据,到Inser函数,将数据添加到数据库中。

package cn.nuit.nut_project.servlet;

import cn.nuit.nut_project.Dao.UserDao;

import cn.nuit.nut_project.domain.User;

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(name = "registerServlet", value = "/registerServlet")

public class registerServlet extends HttpServlet {

UserDao UD = new UserDao();

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// super.doGet(req, resp);

System.out.println("注册请求!!!!!!!!!!!!!!!!!!");

resp.setContentType("text/html;charset=utf-8");

req.setCharacterEncoding("UTF-8");

try {

UserDao UD = new UserDao();

User user = new User();

user.setId(Integer.parseInt(req.getParameter("id")));

user.setUsername(req.getParameter("username"));

user.setPassword (req.getParameter("password"));

user.setGender(req.getParameter("gender"));

user.setEmail(req.getParameter("email"));

user.setTelephone(req.getParameter("telephone"));

user.setIntroduce(req.getParameter("introduce"));

if (UD.insert(user)){

resp.sendRedirect(req.getContextPath()+"/registerSuccess.jsp");

System.out.println("注册成功");

}else{

resp.sendRedirect(req.getContextPath()+"/registerError.jsp");

System.out.println("注册失败");

}

}catch (Exception e){

e.printStackTrace();

}

}

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// super.doPost(req, resp);

// resp.sendRedirect(req.getContextPath()+"/registerSuccess.jsp");

doGet(req,resp);

}

}

 

注册页面的JSP代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

新用户注册

新用户注册

ID
邮箱
用户名
密码
重复密码
性别
联系电话
个人介绍

2. 购物部分

购物部分的代码基本都是通过session实现,并且出来produce连接了数据库,其他都没有什么特别的,与一个静态网页无异。因此这里不进行展示,代码可以去我的码云里面进行copy。

网址

Nut_dingdang/NutStore_project - 码云 - 开源中国 (gitee.com)

三、页面展示

用户未登录,点击添加购物车,会跳转到登陆页面。(为用户提供一个未登录浏览)

输入密码错误会出现以下情况

GPT生成的有点糙,将就一下吧。

添加购物车后,购物车页面情况。这里的删除操作就不进行展示了。

点击提交订单,生成订单页面

总结

主要掌握如何前后端数据流的连接与操作,其实难度不大,快去试一试吧

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: