提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
基于javaweb的购物车系统前言
开发环境:idea、mysql数据库、tomcat主要分为四个java包分别是:entity、filter、Servlet、util。 另外把MySQL建表语句在:database.sql文件
一、建立包和文件
一、java类 1.首先:entity里面建立四个类:Cart、Order、Product、User 2.filter里面建立:EncodingFilter的java类 3.Servlet里面建立:CartServlet、LoginServlet、LogoutServlet、OrderServlet、ProductServlet、UserServlet 4.util里面建立:JDBCUtil、MD5Util 至此把与java相关的文件已经建好了 二、web 1.建立jsp文件包:建立所有关于html页面的jsp文件(即后缀名为jsp)二、所有代码
1.粘贴到相关的文件里
Cart代码如下(示例):
package entity;
import java.io.Serializable;
public class Cart implements Serializable {
private int order;
private int id;
private String name;
private int num;
private double price;
public Cart() {
super();
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
Order代码如下(示例):
package entity;
public class Order {
private int id;
private int count;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
Product代码如下(示例):
package entity;
import java.io.Serializable;
public class Product implements Serializable {//序列化
private Integer id;
private String name;
private String price;
public Product() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
User代码如下(示例):
package entity;
public class User {
public User(String username, String phone, String address) {
super();
this.username = username;
this.phone = phone;
this.address = address;
}
public User() {
}
private String id;
private String username;
private String password;
private String phone;
private String address;
public String getId() {
return id;
}
public void setId(String 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 getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
EncodingFilter代码如下(示例):
package filter;
import javax.servlet.*;
import java.io.IOException;
public class EncodingFilter implements Filter {
private FilterConfig filterConfig;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
String encoding=filterConfig.getInitParameter("encoding");
servletRequest.setCharacterEncoding(encoding);
servletResponse.setContentType("text/html;charset="+encoding);
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
CartServlet代码如下(示例):
package Servlet;
import entity.Cart;
import entity.User;
import util.JDBCUtil;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class CartServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path=req.getServletPath();
System.out.println(path);
if("/untitled1/add.Cart".equals(path)){
add(req,resp);
System.out.println("添加成功");
}
if("/untitled1/show.Cart".equals(path))
{
show(req,resp);
}
if("/modify.Cart".equals(path))
{
modify(req,resp);
System.out.println("修改成功");
}
if("/untitled1/clear.Cart".equals(path))
{
clear(req,resp);
System.out.println("清除成功");
}
if("/untitled1/delete.Cart".equals(path))
{
delete(req,resp);
System.out.println("删除成功");
}
if("/untitled1/deletesome.Cart".equals(path))
{
remove(req,resp);
System.out.println("删除成功");
}
return;
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("正在删除");
}
private void remove(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
HttpSession session=req.getSession();
User u=(User) session.getAttribute("User");
String ids=req.getParameter("id");
String ids1=ids.substring(0, ids.length()-1);
String[] s=ids1.split(",");
for (int i = 0; i < s.length; i++) {
int id=Integer.parseInt(s[i]);
String sql="delete from t_cart where c_ID=? and userid=?";
Object[] obj={id,u.getId()};
JDBCUtil.executeUpdata(sql,obj);
System.out.println(s[i]);
}
resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
}
private void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
System.out.println("正在删除");
String name=req.getParameter("name");
HttpSession session=req.getSession();
User u=(User)session.getAttribute("User");
name = new String(name.getBytes("ISO8859-1"),"UTF-8");
System.out.println(name);
String sql="delete from t_cart where productid=(select id from t_protect where name=? ) and userid=?";
Object[] obj={name,u.getId()};
JDBCUtil.executeUpdata(sql,obj);
resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
}
private void clear(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException {
HttpSession session=req.getSession();
User u=(User)session.getAttribute("User");
String sql="delete from t_cart where userid=?";
Object[] obj={u.getId()};
JDBCUtil.executeUpdata(sql,obj);
resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
}
private void modify(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
HttpSession session=req.getSession();
System.out.println("正在修改");
User u=(User)session.getAttribute("User");
Integer num=Integer.parseInt(req.getParameter("num"));
if (num >= 1) {
System.out.println(num);
String name=req.getParameter("productname");
name = new String(name.getBytes("ISO8859-1"),"UTF-8");
System.out.println(name);
String sql3="update t_cart set c_num=? ,c_price=?*(select price from t_protect where name=?)"+"where productid=(select id from t_protect where name=? ) and userid=?";
Object[] obj={num,num,name,name,u.getId()};
JDBCUtil.executeUpdata(sql3,obj);
//resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
}
resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
}
private void show(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException {
ResultSet rs=null;
List<Cart> lists=new ArrayList<Cart>();
JDBCUtil.setConnection();
String sql="select * from t_cart left join t_protect on t_cart.productid=t_protect.id where userid=?";
HttpSession session=req.getSession();
User u=(User)session.getAttribute("User");
Object[] obj={u.getId()};
rs=JDBCUtil.executeQuery(sql,obj);
int order=1;
try {
while(rs.next())
{
String name=rs.getString("name");
int num=rs.getInt("c_num");
double price=rs.getDouble("c_price");
int id=rs.getInt("c_ID");
Cart c=new Cart();
c.setId(id);
c.setOrder(order);
c.setName(name);
c.setNum(num);
c.setPrice(price);
lists.add(c);
order++;
}
req.setAttribute("Carts", lists);
req.getRequestDispatcher("/jsp/cartlist.jsp").forward(req, resp);
} catch (SQLException e) {
e.printStackTrace();
}
}
private void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
HttpSession session=req.getSession();
User u=(User)session.getAttribute("User");
Integer productId=Integer.parseInt(req.getParameter("productid"));
String sql1="select * from t_cart where productid=? and userid=?";
String sql2="insert into t_cart (productid,c_num,c_price,userid) values(?,?,(select price from t_protect where id=?),?)";
Object[] obj={productId,u.getId()};
ResultSet rs=null;
rs=JDBCUtil.executeQuery(sql1,obj);
try {
if(rs.next())
{
String sql3="update t_cart set c_num=c_num+1 ,c_price=c_price+(select price from t_protect where id=?)"+"where productid=? and userid=?";
Object[] obj2={productId,productId,u.getId()};
JDBCUtil.executeUpdata(sql3,obj2);
}
else
{
Object[] obj1={productId,1,productId,u.getId()};
JDBCUtil.executeUpdata(sql2,obj1);
}
} catch (SQLException e) {
e.printStackTrace();
} resp.sendRedirect(req.getContextPath()+"/untitled1/list.Product");
}
}
LogingSerclet代码如下(示例):
package Servlet;
import entity.User;
import util.JDBCUtil;
import util.MD5Util;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
public class LoginSevlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ResultSet rs=null;
String id=req.getParameter("id");
String pass=req.getParameter("password");
String password= MD5Util.getMD5Str(pass);
String sql="select * from t_user where u_id=? and u_password=?";
Object[] obj={id,password};
rs= JDBCUtil.executeQuery(sql,obj);
PrintWriter out=resp.getWriter();
try {
if (rs.next())
{
HttpSession session=req.getSession();
User u=new User();
u.setId(id);
u.setUsername(rs.getString("u_name"));
u.setAddress(rs.getString("u_add"));
u.setPhone(rs.getString("u_phone"));
System.out.println(u.getUsername());
session.setAttribute("User",u);
System.out.println("2");
resp.sendRedirect(req.getContextPath()+"untitled1/list.Product");
}
else {
out.print("<h1 style='color:red;'>账户名或者密码错误</h1>" );
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
vLogoutServlet代码如下(示例):
package Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session=req.getSession();
session.removeAttribute("User");
resp.sendRedirect(req.getContextPath()+"untitled1/list.Product");
}
}
vOrderServlet代码如下(示例):
package Servlet;
import util.JDBCUtil;
import entity.Cart;
import entity.User;
import entity.Order;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class OrderServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path=req.getServletPath();
System.out.println(path);
if("/untitled1/confirm.Order".equals(path)){
confirm(req,resp);
System.out.println("确定订单");
}
if("/untitled1/generat.Order".equals(path)){
generate(req,resp);
System.out.println("生成订单");
//return;
}
if("/untitled1/history.Order".equals(path))
{
history(req,resp);
}
if("/untitled1/Detail.Order".equals(path))
{
Detail(req,resp);
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
private void Detail(HttpServletRequest req, HttpServletResponse resp) {
List<Cart> lists=new ArrayList<Cart>();
ResultSet rs=null;
Integer orderid=Integer.parseInt(req.getParameter("id"));
String sql="select * from o_detail where orderid=?";
Object[] obj={orderid};
rs= JDBCUtil.executeQuery(sql,obj);
try {
int order=1;
while(rs.next())
{
String name=rs.getString("s_name");
int num=rs.getInt("o_num");
double price=rs.getDouble("o_price");
Cart c=new Cart();
c.setOrder(order);
c.setName(name);
c.setNum(num);
c.setPrice(price);
lists.add(c);
order++;
}
req.setAttribute("id", orderid);
req.setAttribute("Carts", lists);
req.getRequestDispatcher("/jsp/orderDetail.jsp").forward(req, resp);
} catch (SQLException | ServletException | IOException e) {
e.printStackTrace();
}
}
private void history(HttpServletRequest req, HttpServletResponse resp) {
ResultSet rs=null;
HttpSession session=req.getSession();
User u=(User)session.getAttribute("User");
List<Order> lists=new ArrayList<Order>();
String sql1="select * from t_order where ow_id=?";
Object[] obj={u.getId()};
rs=JDBCUtil.executeQuery(sql1,obj);
try {
int count=1;
while(rs.next())
{
int id=rs.getInt("o_id");
System.out.println(id);
Order o=new Order();
o.setId(id);
o.setCount(count);
count++;
lists.add(o);
}
req.setAttribute("Orders", lists);
req.getRequestDispatcher("/jsp/myorder.jsp").forward(req,resp);
} catch (SQLException e) {
e.printStackTrace();
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void generate(HttpServletRequest req, HttpServletResponse resp) {
ResultSet rs=null;
JDBCUtil.setConnection();
HttpSession session=req.getSession();
User u=(User)session.getAttribute("User");
String sql1="INSERT INTO t_order(ow_id,ow_add,ow_phone) values (?,?,?)";
String sql2="insert into o_detail(orderid,s_name,o_num,o_price) values(?,?,?,?)";
Object[] obj={u.getId(),u.getAddress(),u.getPhone()};
int id=0;
try {
JDBCUtil.PSTMT= JDBCUtil.CONNECT.prepareStatement(sql1, PreparedStatement.RETURN_GENERATED_KEYS);
for(int i = 0 ;i<obj.length;i++) {
JDBCUtil.PSTMT.setObject(i+1, obj[i]);
}
JDBCUtil.PSTMT.executeUpdate();
rs=JDBCUtil.PSTMT.getGeneratedKeys();
while(rs.next())
{
id=rs.getInt(1);
}
String sql3="select * from t_cart left join t_protect on t_cart.productid=t_protect.id where userid=?";
Object[] obj1={u.getId()};
rs=JDBCUtil.executeQuery(sql3, obj1);
while(rs.next())
{
String name=rs.getString("name");
int num=rs.getInt("c_num");
double price=rs.getDouble("c_price");
Object[] obj2={id,name,num,price};
JDBCUtil.executeUpdata(sql2,obj2);
}
String sql4="delete from t_cart where userid=?";
JDBCUtil.executeUpdata(sql4,obj1);
req.setAttribute("id", id);
req.getRequestDispatcher("/jsp/success.jsp").forward(req, resp);
} catch (SQLException | ServletException | IOException e) {
e.printStackTrace();
}
}
private void confirm(HttpServletRequest req, HttpServletResponse resp) {
ResultSet rs=null;
List<Cart> lists=new ArrayList<Cart>();
HttpSession session=req.getSession();
User u=(User)session.getAttribute("User");
String sql="select * from t_cart left join t_protect on t_cart.productid=t_protect.id where userid=?";
Object[] obj={u.getId()};
rs=JDBCUtil.executeQuery(sql, obj);
int order=1;
try {
while(rs.next())
{
String name=rs.getString("name");
int num=rs.getInt("c_num");
double price=rs.getDouble("c_price");
int id=rs.getInt("c_ID");
Cart c=new Cart();
c.setId(id);
c.setOrder(order);
c.setName(name);
c.setNum(num);
c.setPrice(price);
lists.add(c);
order++;
}
req.setAttribute("Carts", lists);
req.getRequestDispatcher("/jsp/order.jsp").forward(req, resp);
} catch (SQLException | ServletException | IOException e) {
e.printStackTrace();
}
}
}
ProductServlet代码如下(示例):
package Servlet;
import entity.Product;
import util.JDBCUtil;
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ProductServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path=req.getServletPath();
System.out.println(path);
if ("/untitled1/list.Product".equals(path)){
list(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
//查询商品信息
protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//传送信息到list.jsp
// Connection con=null;
// PreparedStatement ps=null;
ResultSet rs = null;
List<Product> products = new ArrayList<Product> ();
JDBCUtil.setConnection();
String sql = "select *from t_protect";
try {
JDBCUtil.PSTMT=JDBCUtil.CONNECT.prepareStatement(sql);
rs=JDBCUtil.PSTMT.executeQuery();
while (rs.next()){
int id=rs.getInt("id");
String name=rs.getString("name");
String price=rs.getString("price");
System.out.println(id+" "+name+" "+price);
Product s=new Product();
s.setId(id);
s.setName(name);
s.setPrice(price);
products.add(s);
}
req.setAttribute("product",products);
req.getRequestDispatcher("/jsp/list.jsp").forward(req,resp);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
UserServlet代码如下(示例):
package Servlet;
import util.JDBCUtil;
import util.MD5Util;
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 UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String u_id=req.getParameter("id");
String u_name=req.getParameter("name");
String pass=req.getParameter("password");
String u_pass= MD5Util.getMD5Str(pass);
String u_phone=req.getParameter("phone");
String u_add=req.getParameter("address");
String sql="insert into t_user(u_id,u_name,u_password,u_phone,u_add)values(?,?,?,?,?)";
Object[] obj={u_id,u_name,u_pass,u_phone,u_add};
JDBCUtil.executeUpdata(sql,obj);
System.out.println(req.getContextPath());
System.out.println("恭喜你注册成功");
resp.sendRedirect(req.getContextPath()+"/jsp/login.jsp");
}
}
JDBCUtil代码如下(示例):
package util;
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtil {
private static String DB_URL="jdbc:mysql://localhost:3306/ShopCart";
private static String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver" ;
private static String USER_NAME = "root";
private static String PWD = "123123";
public static Connection CONNECT=null;
public static PreparedStatement PSTMT=null;
static {
try {
Class.forName(DRIVER_CLASS_NAME);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void setConnection(){
try {
CONNECT= (Connection) DriverManager.getConnection(DB_URL,USER_NAME,PWD);
System.out.println("连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
}
//更新数据库
public static int executeUpdata(String sql,Object[] params){
int result=-1;
setConnection();
try {
PSTMT=CONNECT.clientPrepareStatement(sql);
if (params!=null&¶ms.length>0){
for (int i=0;i<params.length;i++){
PSTMT.setObject(i+1,params[i]);
}
}
result=PSTMT.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeResource(null);
}
return result;
}
//查询方法的封装
public static ResultSet executeQuery(String sql,Object[] params){
ResultSet rs=null;
setConnection();
try {
PSTMT=CONNECT.clientPrepareStatement(sql);
if (params!=null&¶ms.length>0){
for (int i=0;i<params.length;i++){
PSTMT.setObject(i+1,params[i]);
}
}
rs=PSTMT.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
private static void closeResource(ResultSet rs) {
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (PSTMT!=null){
try {
PSTMT.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (CONNECT!=null){
try {
CONNECT.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
JDBCUtil.setConnection();
}
}
MD5Util代码如下(示例):
package util;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
public static String getMD5Str(String str){
byte[] digest=null;
try {
MessageDigest md5=MessageDigest.getInstance("md5");
digest=md5.digest(str.getBytes("utf-8"));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String md5Str=new BigInteger(1,digest).toString(16);
return md5Str;
}
}
database.sql代码如下(示例):
create database ShopCart charset=utf8;
use ShopCart;
show tables ;
create table t_protect(
id int primary key auto_increment,
name varchar(20),
price double
);
set names gbk;
insert into t_protect(name,price)values ('牛奶',3);
insert into t_protect(name, price) values ('面包',5);
insert into t_protect(name, price) VALUES ('花生',4);
create table t_user(
u_id varchar(20) primary key,
u_name varchar(10),
u_password varchar(50),
u_phone varchar(11),
u_add varchar(50)
);
create table t_order(
o_id int primary key auto_increment,
ow_id varchar(20),
ow_add varchar(50),
ow_phone varchar(11)
);
create table t_cart(
c_ID int primary key auto_increment,
productid int,
c_num int,
c_price double,
userid varchar(20),
constraint fk_cart_product foreign key (productid) references t_protect(id),
constraint fk_cart_user foreign key (userid) references t_user(u_id)
);
create table o_detail(
o_id int primary key auto_increment,
orderid int,
s_name varchar(10),
o_num int,
o_price int,
constraint fk_order_id foreign key (orderid) references t_order(o_id)
);
2.web里面jsp包里面的代码
cartlist.jsp(示例):
<%@ page import="entity.Cart" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/17
Time: 19:43
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> <br><hr>
<table border="1">
<tr><th><input type="checkbox">全选</th><th>序号</th><th>商品</th><th>数量</th><th>价格</th><th>操作</th></tr>
<%
List<Cart> lists=(List<Cart>)request.getAttribute("Carts");
int count=1;
for(Cart c:lists){
%>
<tr>
<td><input type="checkbox" id="<%=c.getId()%>" onclick="chose(<%=c.getId()%>)"></td>
<td><%=c.getOrder() %></td>
<td><%=c.getName() %></td>
<td>
<input type="text" size="1px" onchange="change('<%=c.getName() %>',this.value )" value="<%=c.getNum()%>">
</td>
<td><%=c.getPrice() %></td>
<td><a href="#" id="<%=c.getName() %>">修改</a>
<a href="<%=request.getContextPath() %>/untitled1/delete.Cart?name=<%=c.getName() %>">删除</a>
</td>
</tr>
<%
count++;
}
%>
</table>
<script type="text/javascript">
function change(name,num){
//alert("函数执行");
// alert(name);
// alert(num);
var a=document.getElementById(name);
a.href="<%=request.getContextPath() %>/modify.Cart?num="+ num +"&productname="+name ;
}
function chose(id)
{
var a=document.getElementById("deletc");
var x=a.href;
a.href=x+id+",";
}
</script>
<br>
<hr>
<a href="<%=request.getContextPath() %>/untitled1/deletesome.Cart?id=" id="deletc">删除选中项</a><br>
<a href="<%=request.getContextPath() %>/untitled1/clear.Cart">清空购物车</a><br>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">继续购物</a><br>
<a href="<%=request.getContextPath() %>/untitled1/confirm.Order">结算</a><br>
</body>
</html>
list.jsp(示例):
<%@ page import="java.util.*" %>
<%@ page import="entity.Product" %>
<%@ page import="entity.User" %><%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/4
Time: 9:31
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" import="java.util.*" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>商品列表</title>
</head>
<body>
<h1>商品列表</h1> <br>
<%
HttpSession Session=request.getSession();
User u=(User) Session.getAttribute("User");
%>
<%
if(u==null)
{
%>
<a href="<%=request.getContextPath() %>/jsp/regist.jsp">注册</a>
<a href="<%=request.getContextPath()%>/jsp/login.jsp">登录</a>
<% } else {%>
<%=u.getUsername()%>用户在线
<a href="<%=request.getContextPath() %>/Logout">注销</a>
<a href="<%=request.getContextPath() %>/untitled1/history.Order">我的历史订单</a>
<%} %>
<hr>
<br>
<table border="1">
<tr><th>序号</th><th>名称</th><th>价格</th><th>操作</th></tr>
<%
List<Product>products=(List<Product>) request.getAttribute("product");
int count=1;
for (Product p:products){
%>
<tr>
<td><%=p.getId()%></td>
<td>
<a href="#"><%=p.getName()%></a>
</td>
<td><%=p.getPrice()%></td>
<td>
<a href="<%=request.getContextPath() %>/untitled1/add.Cart?productid=<%=p.getId() %>" onclick="return check();">加入购物车</a>
</td>
</tr>
<%
}
%>
</table>
<script type="text/javascript">
function check(){
if (u!=null)
{
return confirm('确认加入购物车?');
}
else
{
alert("请先登录");
return false;
}
}
</script>
<br>
<a href="<%=request.getContextPath() %>/untitled1/show.Cart">查看购物车</a>
</body>
</html>
login.jsp(示例):
<%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/15
Time: 10:56
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>用户登录</h1>
<hr>
<form action="<%=request.getContextPath()%>/Login" method="post">
账号:<input type="text" name="id"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">返回</a>
</body>
</html>
myorder(示例):
<%@ page import="entity.Order" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/17
Time: 18:59
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>
<table border="1">
<tr>
<th>序号</th>
<th>订单号</th>
</tr>
<%
List<Order> lists=(List<Order>)request.getAttribute("Orders");
for(Order o:lists){
%>
<tr>
<td><%=o.getCount()%></td>
<td><a href="<%=request.getContextPath() %>/untitled1/Detail.Order?id=<%=o.getId() %>"><%=o.getId() %></a></td>
</tr>
<%
}
%>
</table>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">返回</a>
</body>
</html>
order(示例):
<%@ page import="entity.User" %>
<%@ page import="entity.Cart" %>
<%@ page import="java.util.List" %>
<%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/17
Time: 18:53
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>确认订单</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<%
HttpSession Session=request.getSession();
User u=(User) Session.getAttribute("User");
%>
<h1>确认订单</h1>
<hr>
用户名:<%=u.getUsername()%><br>
电话:<%=u.getPhone() %><br>
地址:<%=u.getAddress()%><br>
<table border="1">
<tr>
<th>序号</th>
<th>商品</th>
<th>数量</th>
<th>价格</th>
</tr>
<%
List<Cart> lists=(List<Cart>)request.getAttribute("Carts");
int count=1;
double sum=0;
for(Cart c:lists){
double x=c.getPrice();
sum=sum+x;
%>
<tr>
<td><%=c.getOrder() %></td>
<td><%=c.getName() %></td>
<td><%=c.getNum() %></td>
<td><%=c.getPrice() %> </td>
</tr>
<%
count++;
}
%>
</table>
<hr>
总计:<%=sum %>元<br>
<a href="<%=request.getContextPath() %>/untitled1/generat.Order">生成订单</a>
<a href="/untitled1/list.Product">返回</a>
</body>
</html>
orderDetail(示例):
<%@ page import="entity.Order" %>
<%@ page import="java.util.List" %>
<%@ page import="entity.User" %>
<%@ page import="entity.Cart" %><%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/17
Time: 19:09
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>
<hr>
<%
HttpSession Session=request.getSession();
User u=(User)Session.getAttribute("User");
int id=Integer.parseInt(String.valueOf(request.getAttribute("id")));
%>
<%=u.getUsername() %>用户,<%=id %>订单<br>
<table border="1">
<tr>
<th>序号</th>
<th>商品</th>
<th>数量</th>
<th>价格</th>
</tr>
<%
List<Cart> lists=(List<Cart>)request.getAttribute("Carts");
int count=1;
double sum=0;
for(Cart c:lists){
double x=c.getPrice();
sum=sum+x;
%>
<tr>
<td><%=c.getOrder()%></td>
<td><%=c.getName()%></td>
<td><%=c.getNum()%></td>
<td><%=c.getPrice()%></td>
</tr>
<%
count++;
}
%>
</table>
<hr>
共<%=count%>条,总计:<%=sum%>元<br>
<a href="<%=request.getContextPath() %>/untitled1/history.Order">返回</a>
</body>
</html>
regist(示例):
<%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/15
Time: 11:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户注册</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<script type="text/javascript">
function checkUsername(){
var u=document.getElementById("username");
var msg=document.getElementById("unMsg");
if (u.value==""){
msg.style.color="red";
msg.innerHTML="用户名不能为空";
return;
}
var xhr=new XMLHttpRequest();
xhr.open("get","<%=request.getContextPath()%>/checkUsername.uesr?username="+u.value);
xhr.onreadystatechange=function (){
if (xhr.readyState==4 && xhr.status==200){
if ("用户名可用"==xhr.responseText){
msg.style.color="green";
}else{
msg.style.color="red";
}
msg.innerHTML=xhr.responseText;
}
};
}
function cl(){
var msg=document.getElementById("unMsg");
msg.innerHTML="";
}
function fn(){
var xhr=new XMLHttpRequest();
xhr.open("post","<%=request.getContextPath()%>/fn.user");
xhr.onreadystatechange=function (){
if (xhr.readyState==4 && xhr.status==200){
var str=xhr.responseText;
console.log(typeof (str));
console.log(str);
var user=eval("("+str+")");
console.log(user.username);
console.log(user.address);
}
};
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send();
}
</script>
<body>
<h1>用户注册</h1>
<hr>
<form action="<%=request.getContextPath()%>/regist.User" method="post">
账号:<input type="text" name="id"><br>
用户名:<input id="username" type="text" name="name" onblur="checkUsername();" onfocus="cl();"><br>
<span id="unMsg"></span>
密码:<input type="password" name="password"><br>
电话:<input type="text" name="phone"><br>
地址:<input type="text" name="address"><br>
<input type="submit" value="注册">
</form>
<%
String msg=(String) request.getAttribute("msg");
if(msg!=null){
out.print("div style='color:red;'>"+msg+"</div>");
}
%>
<a href="<%=request.getContextPath()%>/untitled1/list.Product">返回</a>
</body>
</html>
success(示例):
<%--
Created by IntelliJ IDEA.
User: meet
Date: 2021/6/17
Time: 19:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>成功</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<%
int id=Integer.parseInt(String.valueOf(request.getAttribute("id")));
%>
<h1>订单</h1>
<hr>
<h1>订单生成成功,订单号<%=id %></h1>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">继续购物</a>
</body>
</html>
WEB-INF下面的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">
<display-name></display-name>
<servlet>
<servlet-name>ProductServlet</servlet-name>
<servlet-class>Servlet.ProductServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>Servlet.UserServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>CartServlet</servlet-name>
<servlet-class>Servlet.CartServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>LoginSevlet</servlet-name>
<servlet-class>Servlet.LoginSevlet</servlet-class>
</servlet>
<servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>Servlet.LogoutServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>OrderServlet</servlet-name>
<servlet-class>Servlet.OrderServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProductServlet</servlet-name>
<url-pattern>*.Product</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>*.User</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CartServlet</servlet-name>
<url-pattern>*.Cart</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginSevlet</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/Logout</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>OrderServlet</servlet-name>
<url-pattern>*.Order</url-pattern>
</servlet-mapping>
<!-- 字符集过滤器-->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
所有的源代码都在这里啦,sql语句现在数据库里面执行才能调用哦
总结
有问题可以在下面留言给我哦