思路
配合数据库,利用JavaWeb所学知识实现用户购买,加入购物车,充值,注册,完善个人信息,管理员对用户增删,修改用户密码,对游戏分类修改,价格调整。
数据库表
管理员权限表:
游戏分类表:
游戏库表:
购物车表:
用户表:
页面内容:
代码实现
将游戏添加到购物车
package com.example.javawebpro;
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;
import java.sql.*;
@WebServlet(name = "AddCart",value = "/addcart")
public class AddCart extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username= (String) req.getSession().getAttribute("username");
String gamename=req.getParameter("gamename");
String url="jdbc:mysql://localhost:3306/steam?useUnicode=true&characterEncoding=utf8&useSSL=true";
String user="root";
String password="123456";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection= DriverManager.getConnection(url,user,password);
Statement statement=connection.createStatement();
String chasql="SELECT * FROM shoppingcart WHERE `user`='"+username+"' and game='"+gamename+"'";
String adresssql="SELECT address FROM games WHERE gamename='"+gamename+"'";
//查询加入购物车的该游戏的图片地址
ResultSet adressrs=statement.executeQuery(adresssql);
String adress="";
//将地址赋给adress
while(adressrs.next()){
adress=adressrs.getString(1);
}
//查询购物车中是否有这个游戏
ResultSet resultSet = statement.executeQuery(chasql);
if(username==null){
resp.sendRedirect("http://localhost:8080/JavaWebPro_war_exploded/signin.jsp");
}
else if(resultSet.next()){
//如果有,则直接重定向到游戏页面,发送flag属性hv
String dltsql = "DELETE FROM shoppingcart WHERE game='"+gamename+"'";
int resultset = statement.executeUpdate(dltsql);
resp.sendRedirect("/JavaWebPro_war_exploded/game?adress="+adress+"&flag=none");
}else {
//如果没有,则添加该游戏到购物车,并且发送flag属性nn
String addsql = "INSERT INTO shoppingcart VALUES('" + username + "','" + gamename + "')";
int resultset = statement.executeUpdate(addsql);
resp.sendRedirect("/JavaWebPro_war_exploded/game?adress="+adress+"&flag=have");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
购买游戏
package com.example.javawebpro;
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;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet(name = "PurchaseSuccessful",value = "/purchasesuccessful")
public class PurchaseSuccessful extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String gamename=req.getParameter("gamename");
String price=req.getParameter("price");
String username= (String) req.getSession().getAttribute("username");
String cart=req.getParameter("cart");
String balance="";
String address="";
boolean flag=true;
Date date=new Date();
String url="jdbc:mysql://localhost:3306/steam?useUnicode=true&characterEncoding=utf8&useSSL=true";
String user="root";
String password="123456";
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
String riqi=dateFormat.format(date);
if(username==null){
req.getRequestDispatcher("/signin.jsp").forward(req, resp);
}else {
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
Statement statement = null;
try {
statement = connection.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String sql = "select balance from user where username='" + username + "'";
System.out.print(username);
connection.setAutoCommit(false);
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
balance = resultSet.getString(1);
}
String bsql = "select address from games where gamename='" + gamename + "'";
ResultSet rs = statement.executeQuery(bsql);
while (rs.next()) {
address = rs.getString(1);
}
String csql = "select username from library where game='" + gamename + "' and username='" + username + "'";
ResultSet rst = statement.executeQuery(csql);
while (rst.next()) {
flag = false;
}
int a = Integer.parseInt(balance) - Integer.parseInt(price);
if (a > 0 && flag) {
balance = String.valueOf(a);
String usql = "update user set balance=" + balance + " where username='" + username + "'";
String asql = "insert into library(username, game) values ('" + username + "','" + gamename + "')";
int resultset = statement.executeUpdate(usql);
int rslt = statement.executeUpdate(asql);
req.getSession().setAttribute("username", username);
req.getSession().setAttribute("riqi", riqi);
req.getSession().setAttribute("price", price);
req.getSession().setAttribute("gamename", gamename);
req.getSession().setAttribute("address", address);
connection.commit();
resp.sendRedirect("http://localhost:8080/JavaWebPro_war_exploded/purchasesuccessful.jsp");
} else {
connection.commit();
if (flag) {
resp.sendRedirect("http://localhost:8080/JavaWebPro_war_exploded/purchasefail.jsp");
} else {
resp.sendRedirect("http://localhost:8080/JavaWebPro_war_exploded/purchasefail.jsp?flag=false");
}
}
} catch (ClassNotFoundException | SQLException e) {
try {
connection.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
}
}
}
登录
package com.example.javawebpro;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;
@WebServlet(name = "signin",value = "/Signin")
public class Signin extends HelloServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String username=req.getParameter("username");
String pswd= req.getParameter("pswd");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/steam?useUnicode=true&characterEncoding=utf8&useSSL=true";
String user="root";
String password="123456";
Connection connection = DriverManager.getConnection(url,user,password);
Statement statement=connection.createStatement();
String usersql="select * from user where username='"+username+"'&&user.pswd='"+pswd+"';";
ResultSet resultSet=statement.executeQuery(usersql);
if(resultSet.next()){
req.getSession().setAttribute("error",null);
req.getSession().setAttribute("username",username);
String chasql="SELECT administrators FROM `user` WHERE username='"+username+"'";
int a=2;
ResultSet resultSet1=statement.executeQuery(chasql);
if(resultSet1.next()){
a=resultSet1.getInt(1);
}
if(a==1){
String isadmin="yes";
req.getSession().setAttribute("isadmin",isadmin);
resp.sendRedirect("/JavaWebPro_war_exploded/administratorpage");
}else {
String isadmin="no";
req.getSession().setAttribute("isadmin",isadmin);
resp.sendRedirect("/JavaWebPro_war_exploded/homepage.jsp");
}
}else {
req.getSession().setAttribute("error","true");
resp.sendRedirect("/JavaWebPro_war_exploded/signin.jsp");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}