1. 程式人生 > >ssm框架maven工程實現商品的增加

ssm框架maven工程實現商品的增加

看JSP應用開發詳解這本書的時候,27章有個購物車的例項,感覺書上寫的有些繁瑣,就自己實現了一個,功能可能沒有書上的全面,但是自己成就感還是蠻高的 實現了:使用者登入,檢視購物車,新增商品到購物車,清空購物車,增加或減少購物車商品數量工程目錄:這裡寫圖片描述 jdbc.properties是為多種關係資料庫提供統一訪問

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/{資料庫名稱}
jdbc.username=root
jdbc.password={你的資料庫密碼}
jdbc.initialSize=0
jdbc.maxActive=20

initialSize為初始化連結大小 maxActive為連線池最大數量 servlet.xml配置檔案部分:

    <!-- 配置資料來源   dbcp資料庫連線池  可以配置初始連線數量,最大連線數量等等引數-->
    <bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!-- 初始化連線大小 -->
        <property name="initialSize" value="${jdbc.initialSize}"></property>
        <!-- 連線池最大數量 -->
        <property name="maxActive" value="${jdbc.maxActive}"></property>
    </bean>

實現部分: web.xml檔案

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

spring-servlet.xml檔案:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 開啟基於註解的spring handler mapping -->
    <mvc:annotation-driven />
    <!-- 配置spring自動掃描所有的controller -->
    <context:component-scan base-package="com.controller"></context:component-scan>

    <!-- 配置spring mvc controller和view的對映關係 以及告知spring要使用jstl -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- spring配置全域性異常的處理 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.RuntimeException">error</prop>
            </props>
        </property>
    </bean>

    <!-- 配置spring檔案上傳的 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maxUploadSize" value="20000000"/>
    </bean>

    <!-- spring上配置mybatis的整合 -->
    <!-- 配置載入資料連線資原始檔的配置,把資料庫連線資料抽取到一個properties資原始檔中方便管理 -->
    <context:property-placeholder location="/WEB-INF/assets/jdbc.properties"/>

    <!-- 配置資料來源   dbcp資料庫連線池  可以配置初始連線數量,最大連線數量等等引數-->
    <bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!-- 初始化連線大小 -->
        <property name="initialSize" value="${jdbc.initialSize}"></property>
        <!-- 連線池最大數量 -->
        <property name="maxActive" value="${jdbc.maxActive}"></property>
    </bean>

    <!-- spring和MyBatis整合,mybatis配置對映檔案 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自動掃描mapping.xml檔案 -->
        <property name="mapperLocations" value="classpath:com/mapping/*.xml"></property>
    </bean>

    <!-- (事務管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- DAO介面所在包名,Spring會自動查詢其下的類 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- spring搜尋service服務類的包路徑 -->
    <context:component-scan base-package="com.service.impl"></context:component-scan>

</beans>

成功登入後:這裡寫圖片描述

檢視購物車,當前購物車無商品這裡寫圖片描述

將選定的商品新增到購物車後這裡寫圖片描述 庫存商品會相應減少

目前只實現了這幾個簡單的功能

崩潰的幾點: 1.要在資料庫中查詢Product這個表中的資料,結果連結不到,問題在。。。。。在定義Product這個類時,他的所有屬性的get,和 set方法不能寫反,屬性按照什麼順序,get方法和set方法也必須按照什麼順序。 找了好久的錯誤啊,差點摔電腦了 2.我用Map表儲存當前購物車的商品,需要將新增的商品和Map表中的比較,用carlist.containsKey(product)方法比較,如果一樣就只在數量+1,不一樣再顯示新增的商品,結果之前每次比較都是false, 會出現下面這種結果:這裡寫圖片描述 怎麼都不知道問題出在哪裡~~~結果最後自己想抽自己個嘴巴子,在定義Product類的時候沒有重寫equals();和hashCode()方法!還是要多複習啊,竟然忘記了。

--------------------- 本文來自 Hello_and_world 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/Hello_and_world/article/details/56497184?utm_source=copy