Javaweb在线购物商城-完整源代码

一、项目简介

这是一个基于JavaWeb的在线购物商城系统。
主要用 servlet+jsp 实现,数据库用的 mysql
下面一张图告诉你,系统有哪些功能!
如果需要完整源代码,可以直接 跳转到文章尾部
在这里插入图片描述

二、项目实现效果

2.1登录页面

这就是一个简单的登录页面,左边是一个轮播图,右边是一个输入信息的表单!
可以选择不同身份进行登录。
在这里插入图片描述

2.2 用户主页面

在用户登录之后,便可以进入到这个页面里面了。
用户可以通过商品名称进行查询,也可以通过左边的商品分类按钮进行分类查询商品信息。
用户也可以在这里修改信息,查看自己的收藏等信息!
在这里插入图片描述
在这里插入图片描述

2.3 用户个人信息页面

这里是用户的个人信息页面,用户可以在这里面查看自己的信息,也可以进行修改。
关键是可以进行修改密码!!!
在这里插入图片描述

2.4 用户购物车页面

这里是用户个人的购物车页面,可以在这里面进行商品结算,也可以修改购物车中商品的数量。
在这里插入图片描述

2.6 商品结算页面

这里是进入到了商品订单结算页面,在这里可以看出来这次订单的商品信息,以及购买人的信息。
在这里插入图片描述

2.7 管理员页面

这里就是进入到了管理员的视角,
可以看到所有的商品信息,并且可以对商品进行管理,比如增删改查
在这里插入图片描述

2.8 发布商品页面

这里面可以进行商品发布!
在这里插入图片描述

三、部分代码展示

3.1 商品数据库

在这里插入图片描述

3.2 数据库连接池

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config> <!--默认配置 -->
    <default-config>
        <!--initialPoolSize:连接池初始化时创建的连接数,default : 3,取值应在minPoolSize与 maxPoolSize之间-->
        <property name="initialPoolSize">10</property>
        <!-- maxIdleTime:连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。如果为0,则永远不会断开连接,即回收此连接。default : 0 单位 s -->
        <property name="maxIdleTime">30</property>
        <!--maxPoolSize:连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15-->
        <property name="maxPoolSize">100</property>
        <!--minPoolSize:连接池保持的最小连接数,default : 3-->
        <property name="minPoolSize">10
        </property>
        <!--maxStatements:连接池为数据源缓存的PreparedStatement的总数。由于PreparedStatement属于单 个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement 来计算-->
        <property name="maxStatements">200</property>
    </default-config> <!--配置连接池oracle -->
    <!-- 配置mysql-->
    <named-config name="mysql-book">
	    <!--mysql需要使用的驱动类-->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
		<!--连接语句-->
        <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/mydemo1?useUnicode=true&amp;characterEncoding=utf8</property>
		<!--mysql的用户名-->
        <property name="user">root</property>
		<!--我的mysql的密码:根据自己机器进行修改-->
        <property name="password">123456</property>
		<!--连接池初始化时创建的连接数:10-->
        <property name="initialPoolSize">10</property>
		<!--maxIdleTime:连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。-->
        <property name="maxIdleTime">30</property>
		<!--连接池中拥有的最大连接数-->
        <property name="maxPoolSize">100</property>
		<!--连接池保持的最小连接数-->
        <property name="minPoolSize">10</property>
		<!--连接池为数据源缓存的PreparedStatement的总数-->
        <property name="maxStatements">200</property>
    </named-config>
</c3p0-config>

3.3 登录注册

package action;

import bean.User;
import biz.UserBiz;
import dao.UserDao;
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;
import java.io.PrintWriter;
import java.sql.SQLException;


@WebServlet("/user.let")
public class UserServlet extends HttpServlet {

    // 构建UserBiz的对象
    UserBiz userBiz = new UserBiz();

    @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 {
        HttpSession session = req.getSession();
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();

        //1.判读用户请求的类型为login
        String method = req.getParameter("type");
        switch (method) {
            case "login":
                // 从 login.html中 拿 账号,密码等数据
                String name = req.getParameter("name");
                String pwd = req.getParameter("pwd");

                String option = req.getParameter("option");
                int temp = -1;
                //  调用UserBiz的getUser方法,根据 网页中 输入的账号密码,获取相应对象
                User user = userBiz.getUser(name,pwd);
                if(option.equals("option1")){  // 用户登录
                    if (user == null) {
                        out.println("<script>alert('用户名或密码不存在');location.href = 'login.html';</script>");
                    }else {
                        session.setAttribute("user",user);//user-->Object
                        req.getRequestDispatcher("/UserShow").forward(req, resp);

                    }
                }else if(option.equals("option2")){  // 管理员登录
                    try {
                        temp = new UserDao().getManage(name,pwd);
                    } catch (SQLException throwables) {
                        throwables.printStackTrace();
                    }
                    if (temp == 1){
                        out.println("<script>alert('用户名或密码不存在');location.href = 'login.html';</script>");
                    }else{
                        req.getRequestDispatcher("/index").forward(req, resp);
                    }
                }

                 break;
            case "register" :

                // 从 login.html中 拿 账号,密码等数据
                String name1 = req.getParameter("name");
                String pwd1 = req.getParameter("pwd");
                String phone = req.getParameter("phone");
                String address = req.getParameter("address");
                UserDao userDao = new UserDao();
                try {
                    userDao.setUser(name1,pwd1,"imgs/touxiang.jpg",phone,address);
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
                out.println("<script>alert('注册成功');location.href = 'login.html';</script>");
                break;

        }

    }

}

四、项目完整源代码

下面是完整代码的资料!如果项目在部署环节出问题了,可以联系我远程部署,一直在线!
也可以直接 点我跳转到项目完整代码
链接:https://pan.baidu.com/s/1nlvozPOMFZZ_yAtGqNd0ww?pwd=baoz
提取码:baoz

这是一个基于JavaWeb的购物商城系统,主要分为管理员和普通用户两个角色。用户可以注册登录,浏览商品,将商品加入购物车并查看商品详情。管理员可以对商品进行增删改查,包括发布商品、下架商品、修改商品和搜索商品等功能。以下是该系统的实现方式和技术栈: 1.前端技术栈:HTML、CSS、JavaScript、jQuery等。 2.后端技术栈:Java、ServletJSPMySQL等。 3.框架:SSM框架(Spring、SpringMVC、MyBatis)。 4.实现方式:MVC架构模式。 5.具体实现细节: - 用户注册登录:用户可以通过注册页面进行注册,注册成功后可以通过登录页面进行登录。 - 商品浏览:用户可以在商品列表页面浏览所有商品,也可以通过搜索功能查找特定商品。 - 商品详情:用户可以点击商品列表中的商品进入商品详情页面,查看商品的详细信息。 - 购物车:用户可以将商品加入购物车,也可以在购物车页面查看已加入的商品并进行结算。 - 商品管理:管理员可以在后台管理页面对商品进行增删改查等操作。 - 数据库设计:系统使用MySQL数据库,包括用户表、商品表、购物车表等。 以下是一个简单的JavaWeb购物商城系统的代码实现,仅供参考: ```java // 用户登录 @RequestMapping(value = "/login", method = RequestMethod.POST) @ResponseBody public Map<String, Object> login(@RequestBody User user) { Map<String, Object> map = new HashMap<>(); User loginUser = userService.login(user); if (loginUser != null) { map.put("code", 200); map.put("msg", "登录成功"); map.put("data", loginUser); } else { map.put("code", 500); map.put("msg", "用户名或密码错误"); } return map; } // 商品列表 @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody public List<Product> productList() { return productService.getProductList(); } // 商品详情 @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) @ResponseBody public Product productDetail(@PathVariable("id") int id) { return productService.getProductById(id); } // 加入购物车 @RequestMapping(value = "/cart/add", method = RequestMethod.POST) @ResponseBody public Map<String, Object> addToCart(@RequestBody Cart cart) { Map<String, Object> map = new HashMap<>(); if (cartService.addToCart(cart)) { map.put("code", 200); map.put("msg", "添加成功"); } else { map.put("code", 500); map.put("msg", "添加失败"); } return map; } // 购物车列表 @RequestMapping(value = "/cart/list", method = RequestMethod.GET) @ResponseBody public List<Cart> cartList() { return cartService.getCartList(); } // 商品管理 @RequestMapping(value = "/admin/product", method = RequestMethod.POST) @ResponseBody public Map<String, Object> addProduct(@RequestBody Product product) { Map<String, Object> map = new HashMap<>(); if (productService.addProduct(product)) { map.put("code", 200); map.put("msg", "添加成功"); } else { map.put("code", 500); map.put("msg", "添加失败"); } return map; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值