前台页面效果图及代码
登录界面
登录校验文件:
系统一般都以登录作为访问的入口,所以登录验证就显得尤为重要,一般的都会采用双重验证的包括客户端js文件验证和服务器端文件验证,提高了系统的安全性能,下面就是服务器端基本校验文件
用户注册
用户注册:
为了保证用户输入的信息都是有效性,必须设计输入验证策略,同样也有客户端校验文件和服务端的校验文件,验证信息的正确格式就显得尤为重要,在很多商务网站都没有防护网络爬虫,爬虫技术不能忽视,为了限制网络爬虫,该网站设计了验证码,可以提高安全性能,下面就是生成验证码的核心代码
同时注册使用AJAX异步校验用户名: 采用AJAX主要是提高用户体验和节省流量一个重要的操作
为了提高用户的信息真实度,很多网站都是采用手机号码验证手机号码信息,但是由于开通短信接口需要缴费,故该商城采用邮箱认证用户的邮箱真实度,主要采用腾讯旗下的QQ邮箱为服务器,采用本人的qq邮箱作为发送方;下面是发送邮箱核心代码。
商品页面:
分类页面:
服装分类:
对于一个服装商城网站来说,各种各样的服装都需要一个合理的分类,可以方便管理员更加方便的管理各类的服装,以及提高用户的体验,不用一个一个去浏览,节省了流量,所以分类是该商城的重要组成部分之一,下面是根据分类查询商品的核心代码:
商品详情页面:
购物车页面:
填写地址页面:
模拟付款操作:
由于申请支付接口需要营业执照,故无法完成正真的支付操作,该网站采用虚拟的模拟操作付款操作:下面就是支付的操作核心代码
订单页面:
后台页面效果图及代码
后台登录页面:
后台的登录入口:
作为该商城最重要的入口,拦截器的作用就显得尤为重要,比起客户端和服务端校验更加重要,也是防止非法人员对整体网站的一个防护入口,所以锁好这个登录这个门,需要考虑到服务器端的拦截器;下面是核心代码。
前台首页
用户管理页面:
一级分类管理页面:
商品管理页面:
添加商品管理页面:
订单管理页面:
对于每个客户的订单详情,该网站采用Ajax技术实现单击显示,提高了管理员体验,不用通过跳转页面详细订单详情,同时提高了数据库的响应性能。
数据库池的配置:
jdbc.properties文件内容:
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql:///shop?characterEncoding=UTF-8
jdbc.user = root
jdbc.password =root
<!-- 配置连接池: -->
<!-- 引入外部属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置C3P0连接池: -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
Hibernate的信息配置:
<!-- Hibernate的相关信息 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置Hibernate的其他的属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.connection.autocommit">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 配置Hibernate的映射文件 -->
<property name="mappingResources">
<list>
<value>com/fuzhuan/user/vo/User.hbm.xml</value>
<value>com/fuzhuan/category/vo/Category.hbm.xml</value>
<value>com/fuzhuan/product/vo/Product.hbm.xml</value>
<value>com/fuzhuan/categorysecond/vo/CategorySecond.hbm.xml</value>
<value>com/fuzhuan/order/vo/Order.hbm.xml</value>
<value>com/fuzhuan/order/vo/OrderItem.hbm.xml</value>
<value>com/fuzhuan/adminuser/vo/AdminUser.hbm.xml</value>
</list>
</property>
</bean>
事务的信息配置:
<!-- 事务管理: -->
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 开启注解事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
拦截器的信息配置:
<constant name="struts.devMode" value="false" />
<package name="shop" extends="struts-default"namespace="/">
<!-- 配置自定义拦截器 -->
<interceptors>
<interceptor name="privilegeInterceptor" class="com.fuzhuan.interceptor.PrivilegeInterceptor"/>
</interceptors>
<global-results>
<result name="msg">/WEB-INF/jsp/msg.jsp</result>
<result name="login">/admin/index.jsp</result>
</global-results>
分页组件:
publicclassPageHibernateCallback<T> implements HibernateCallback<List<T>>{
private String hql;
privateObject[] params;
privateintstartIndex;
privateintpageSize;
publicPageHibernateCallback(String hql, Object[] params,
int startIndex, int pageSize) {
super();
this.hql = hql;
this.params = params;
this.startIndex =startIndex;
this.pageSize = pageSize;
}
publicList<T> doInHibernate(Session session) throwsHibernateException,
SQLException {
//1 执行hql语句
Query query =session.createQuery(hql);
//2 实际参数
if(params != null){
for(int i = 0 ; i <params.length ; i ++){
query.setParameter(i,params[i]);
}
}
//3 分页
query.setFirstResult(startIndex);
query.setMaxResults(pageSize);
return query.list();
}