Java ee購物商城
前臺頁面效果圖及程式碼
登入介面
登入校驗檔案:
系統一般都以登入作為訪問的入口,所以登入驗證就顯得尤為重要,一般的都會採用雙重驗證的包括客戶端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();
}