基于SSH框架实现的水果商城系统

项目介绍

本系统使用Struts2+Spring+Hibernate架构,数据库使用MySQL,连接池使用c3p0实现的水果商城,该系统包含商品模块,搜索模块,分类模块,订单模块,用户模块,意见反馈等重要板块,分为前端用户页面和后台管理页面,适用于鲜花电商,水果电商,校园售卖等多种应用场景.

开发环境

  1. jdk 8
  2. intellij idea
  3. tomcat 8.5.40
  4. mysql 5.7

所用技术

  1. Struts2+Spring+Hibernate
  2. js+ajax
  3. easyUI

项目架构

基于SSH框架实现的水果商城系统

项目截图

  • 首页
    基于SSH框架实现的水果商城系统

  • 注册
    基于SSH框架实现的水果商城系统

  • 商品详情
    基于SSH框架实现的水果商城系统

  • 商品搜索
    基于SSH框架实现的水果商城系统

  • 购物车
    基于SSH框架实现的水果商城系统

  • 意见反馈
    基于SSH框架实现的水果商城系统

  • 管理端-订单管理
    基于SSH框架实现的水果商城系统

  • 管理端-类别管理
    基于SSH框架实现的水果商城系统

  • 管理端-商品管理
    基于SSH框架实现的水果商城系统

  • 管理端-用户管理
    基于SSH框架实现的水果商城系统

数据库配置

<!-- c3p0 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl"
        value="jdbc:mysql://localhost:3306/fruitStore?useUnicode=true&amp;characterEncoding=utf8" />
    <property name="user" value="root" />
    <property name="password" value="root123" />
    <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
    <property name="initialPoolSize" value="1" />
    <!--连接池中保留的最小连接数。 -->
    <property name="minPoolSize" value="1" />
    <!--连接池中保留的最大连接数。Default: 15 -->
    <property name="maxPoolSize" value="300" />
    <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
    <property name="maxIdleTime" value="60" />
    <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
    <property name="acquireIncrement" value="5" />
    <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
    <property name="idleConnectionTestPeriod" value="60" />
</bean>

关键代码

  1. 分页对象
public class PageModel<T> {
	// 当前页号
	private int pageNo = 1;
	// 每页记录数
	private int pageSize = 10;
	// 总记录数
	private int recordCount;
	// 总页数
	private int pageCount;
	// 存放分页数据的集合
	private List<T> datas;
}
  1. struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<!-- 配置根元素 -->
<struts>
	<!--使用spring创建管理struts2的action操作 -->
	<constant name="struts.objectFactory" value="spring" />
	<!-- 设置struts2的编码为UTF8 -->
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<!-- 不使用浏览器缓存 -->
	<constant name="struts.serve.static.browserCache" value="false"></constant>
	<!-- 每次重新加载xml配置文件 -->
	<constant name="struts.configuration.xml.reload" value="true"></constant>
	<!-- 启用开发者模式 -->
	<constant name="struts.devMode" value="true"></constant>
	<!-- 不使用struts2提供的主题ui -->
	<constant name="struts.ui.theme" value="simple"></constant>
	<!-- 提供对通配符的支持 -->
	<constant name="strutsenableDynamicMethodInvocation" value="true" />

	<!-- 需要拦截未登录用户的包 -->
	<package name="login" namespace="/" extends="struts-default">
		<!-- 配置拦截未登录用户的拦截器 -->
		<interceptors>
			<interceptor name="userInter"
				class="com.fruitStore.tool.UserInterceptor"></interceptor>
			<interceptor-stack name="userStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="userInter"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 需要拦截的action 注销 和 提交订单 -->
		<!-- 设置默认拦截器 -->
		<default-interceptor-ref name="userStack"></default-interceptor-ref>
		<!-- 拦截结果处理 -->
		<global-results>
			<result name="login" type="redirect">/jsp/login/login.jsp</result>
		</global-results>
		<!-- 注销 -->
		<action name="logout" class="userAction" method="logout">
			<result name="success">/jsp/index/index.jsp</result>
		</action>
		<!-- 提交订单 -->
		<action name="addOrder" class="ordersAction" method="addOrder">
			<result name="success">/jsp/shopping/orderAdded.jsp</result>
		</action>
	</package>

	<!-- 需要进行未登录管理员拦截的包 -->

	<package name="admin" namespace="/" extends="struts-default">
		<!-- 配置拦截未登录管理员的拦截器 -->
		<interceptors>
			<interceptor name="adminInter"
				class="com.fruitStore.tool.AdminInterceptor"></interceptor>
			<interceptor-stack name="adminStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="adminInter"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 需要拦截的action 查看所有用户 查看订单 添加商品 -->
		<!-- 设置默认拦截器 -->
		<default-interceptor-ref name="adminStack"></default-interceptor-ref>
		<!-- 拦截结果处理 -->
		<global-results>
			<result name="login" type="redirect">/jsp/login/admin.jsp</result>
		</global-results>
		<!-- 查看所有用户 -->
		<action name="findAllUsers" class="userAction" method="findAllUsers">
			<result name="success">/jsp/admin/manageUsers.jsp</result>
		</action>
		<!-- 查看订单 -->
		<action name="findAllOrders" class="ordersAction" method="findAllOrders">
			<result name="success">/jsp/admin/manageOrders.jsp</result>
		</action>
		<!-- 添加商品 -->
		<action name="addGoods" class="goodsAction" method="addGoods">
		</action>
	</package>
	<!-- 其余包 -->
	<package name="default" namespace="/" extends="struts-default,json-default"
		strict-method-invocation="false">
		<global-results>
			<result name="jsonMap" type="json">
				<param name="root">pageMap</param>
			</result>
			<result name="stream" type="stream">
				<param name="inputName">inputStream</param>
			</result>
		</global-results>
		<!-- 商品分类 -->
		<action name="category_*" class="categoryAction" method="{1}">
			<result name="findCategories_success">/jsp/index/header.jsp</result>
		</action>
		<!-- 商品信息 -->
		<action name="goods_*" class="goodsAction" method="{1}">
			<result name="findGoodsByCategory_success">/jsp/index/contentByCategory.jsp</result>
			<result name="findAllGoods_success">/jsp/index/content.jsp</result>
			<result name="findOne_success">/jsp/shopping/product.jsp</result>
			<result name="findGoodsByKey_success">/jsp/shopping/searchResult.jsp</result>
			<result name="findGoodsByKeys_success">/jsp/shopping/searchResult.jsp</result>
		</action>
		<!-- 用户 -->
		<action name="user_*" class="userAction" method="{1}">
			<result name="checkUser_success">/jsp/index/index.jsp</result>
			<result name="checkUser_error">/jsp/login/login.jsp</result>
			<result name="checkAdmin_success">/jsp/admin/main.jsp</result>
			<result name="checkAdmin_error">/jsp/login/admin.jsp</result>
			<result name="addUser_success">/jsp/index/index.jsp</result>
			<result name="updateUser_success">/jsp/login/userinfocenter.jsp</result>
		</action>
        <!-- 订单 -->
        <action name="orders_*" class="ordersAction" method="{1}">
            <result name="addToCart_success">/jsp/shopping/showCart.jsp</result>
            <result name="myOrder">/jsp/shopping/myOrder.jsp</result>
            <result name="updateCart_error">/jsp/shopping/showCartErro.jsp</result>
            <result name="login" type="redirect">/jsp/login/login.jsp</result>
        </action>

        <!-- 意见反馈 -->
        <action name="feedback_*" class="feedbackAction" method="{1}">
            <result name="toAddPage">/jsp/feedback/addPage.jsp</result>
        </action>
	</package>
</struts>

项目后续

其他ssm,springboot,jsp+servlet 版本后续迭代更新,持续关注

上一篇:跟着Alex老师学习抄了一遍shopping_list的购物程序


下一篇:PAT 甲级 1044 Shopping in Mars (25分)