1. 程式人生 > >SSM項目之電商項目easymall(一)

SSM項目之電商項目easymall(一)

打包 add wire 版本 技術 mapper 分享圖片 json 查詢

一 環境準備

軟件環境:

1 jdk1.8
JAVA_HOME:是給軟件用的,各種啟動的軟件都會尋找JAVA_HOME的環境變量;
Path:給windows用的;
2 eclipse marS2/neon
解壓的無中文路徑,無空格的文件夾中;防止讀取相對路徑時出現亂碼
如果當前系統的JAVA_HOME對應版本是支持neon的啟動的,那麽就可以直接啟動eclipse
設置workspace,無中文路徑,無空格
3 maven3.5
解壓到無中文路徑,無空格的文件夾即可(後續會介紹,配置,和使用等)
4 tomcat 9
tomcat7 沒有自動處理亂碼,tomcat8以上的版本,無需管理亂碼(servlet沒有驗證)
5 mysql5.5
如果是5.5無需變動,如果不是,需要刪除重新安裝;5.0無法導入5.5備份的數據;
刪除:只裝過一次5.0,直接刪除服務(控制面板的卸載程序)
安裝sqlYog,數據庫客戶端;

二 分析SSM三大框架

Spring框架:
工廠類創建對象
加在xml的標簽創建對象
通過配置文件掃描註解
@Controller 控制層對象
@Service 業務層對象
@Component 普通對象
對象的創建交給Spring
控制反轉: 對象我框架包了

java基礎復用的方法
方法封裝被調用
子繼承父類,直接調用
Spring框架節點
Spring管理的所有對象中相互註入使用
@Resource
@Autowired
註入依賴:哪用對象,跟我說,註入就直接用

Springmvc


處理頁面和程序的交互(升級了servlet的使用)
前端控制器(springmvc,dispatcherServlet,映射mapping "/")
適配器映射器(handleMapping)(尋找RequestMapping的接收地址)
適配器協調器(handleAdapter):轉給handler
處理器(handler): 調用RequestMapping的方法所在類的對象,執行方法,返回
字符串渲染: WEB-INF/views/index.jsp
顯式頁面想添加數據: Model 模板對象 addAttribute

Springmvc為什麽和spring整合?
1 實現代碼中的三層結構;controller,service,mapper依賴註入
2 處理持久層困難(spring可以整合mybatis)
Springmvc是怎麽整合的?
需要:看到配置文件了
不需要:無縫整合;controller直接註入service使用,形成service調用mapper(前提是spring整合了mybatis),三層項目結構

mybatis:

JDBC
mybatis功能:
自動封裝(提交的參數,返回的結果,無需手動jdbc處理resultSet)
sql語句是通過映射文件xml綁定(bind)接口mapper的同名方法;
配置文件
駝峰命名,分頁插件

和spring整合
配置文件(spring_mybatis)
datasource:數據庫連接中的參數,url,username,password,數據庫連接池
sqlSession:datasource

整合一起使用的SSM框架的配置文件
spring:管理spring容器的配置文件
spring-mvc:springmvc配置文件
mybatis:mybatis持久層配置文件
spring-mybatis:整合spring和mybatis的配置文件

三 將easymall項目與SSM框架整合

3.1框架SSM結構  技術分享圖片

3.2數據庫的設計

  創建easymalldb數據庫

1 商品相關--t_product
○ 展示全部商品的分頁信息
○ 某個商品的信息
○ 後臺的商品管理增刪改查
  商品表格

  •  product_id:商品的id,全局唯一,主鍵,char,UUID
  • product_name: 商品的名稱,varchar
  • product_price: 商品價格 double
  • product_category: 商品類目
  • product_imgurl: 商品圖片的url連接地址
  • product_num: 商品的庫存
  • product_description: 商品的簡介

2 用戶相關---t_user
   ? 登錄 (查詢單個user)
   ? 註冊 (新增)
   ? 註冊的用戶名校驗(查詢)
  用戶表格

  •   user_id: 全局唯一的主鍵,uuid
  • user_name:用戶名稱
  • user_password:密碼
  • user_nickname: 昵稱
  • user_email: 用戶郵箱
  • user_type: 用戶類型,於權限有關;

3 購物車相關--t_cart
  ? 添加購物車
  ? 查詢當前用戶的所有購物車商品
   ? 修改購物車數量
   ? 刪除購物車

  購物車表格

  • id:購物車id int
  • user_id:當前商品屬於的用戶id
  • product_id:當前商品id
  • product_image:商品的圖片
  • product_name:商品名稱
  • product_price:商品價錢
  • num:購物車中商品數量

  1. user_id
  2. product_id
  3. 復合主鍵;通過2個字段的同時使用,可以唯一的定位
  4. 到一條購物車商品數據;

4 訂單相關--t_order和t_order_item(主從表的關系,order為主,item為從,1對多的關系)
? 我的全部訂單
? 新增訂單
? 刪除訂單
主表t_order

  • order_id: 主鍵,也是t_order_item關聯的鍵
  • order_money: 訂單支付金額
  • order_receiverinfo: 收信人信息
  • order_paystate: 支付狀態
  • order_time:創建時間
  • user_id: 用戶關聯的

表格代碼 可以直接通過sqlyong導入數據庫

技術分享圖片

 

四 maven工具管理項目框架

 4.1web項目的管理方式的弊端:
myeclipse生成一個web應用的項目結構,servlet直接開發代碼
如果用到三大框架的內容:
1 jar的管理不規範
把jar包先找到,完全是憑借測試和經驗完成的;
2 直接整合外界的第三方tomcat進行war包的運行

3 項目管理的結構
src:代碼
webroot:web應用相關
ssm框架的配置文件????
src管理配置文件;

4.2 maven介紹  

  Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件是一個軟件,並且可以實現各種項目結構的管理功能--工具;
快速搭建項目(java普通工程,web應用工程)
可以通過引入的各種插件完成豐富的外接功能(例如maven的tomcat插件可以直接在項目內部啟動插件的tomcat運行web工程)
對工程的管理結構非常嚴格:
java工程:
src/main/java:編寫代碼的文件夾
src/main/resouces:配置文件(ssm框架,properties等)
src/test/java:測試代碼,在打包時不會進行包裝
pom.xml:通過一小段描述來管理項目(管理依賴的jar包,是通過dependency完成)
web應用工程:
和java工程一樣:
main的文件夾下,有webapp的管理,web應用所在的路徑;
有了maven就可以方便快速的搭建我們想要的各種工程結構,從而通過對pom文件中描述信息的修改(標簽),完成項目的各種管理功能;


五 maven的安裝和環境配置

    https://www.cnblogs.com/nanlinghan/p/9968806.html

六 easymall工程的搭建

1 選擇骨架(webapp)
2 web的應用結構
src/main/java:當前easymall的ssm框架的所有運行代碼都在這個文件夾
src/main/resources: 存放配置文件的位置
src/test/java:測試內容
3 pom的依賴
maven主要就是管理jar包的依賴,當前SSM框架需要依賴的東西非常多;
spring,springmvc,mybatis,一些工具的依賴;

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jt</groupId>
  <artifactId>easymall-ssm</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>easymall-ssm Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
    <!-- spring的版本號 -->
    <spring.version>4.3.7.RELEASE</spring.version>
    <!-- mybatis的版本號 -->
    <mybatis.version>3.4.5</mybatis.version>
    <!-- log日誌管理 -->
    <slf4j.version>1.7.12</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <pagehelper.version>3.4.2</pagehelper.version>
    <jsqlparser.version>0.9.1</jsqlparser.version>
  </properties>
  <dependencies>
  <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>
    <!-- spring context -->
      <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- spring mvc -->
      <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
      <!-- spring mvc 輔助包 jackson -->
      <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.1</version>
    </dependency>
      <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.1</version>
    </dependency>
    <!--servlet依賴 -->
        <dependency>
            <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    <!-- Spring tx -->
      <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
      <!-- Spring jdbc -->
      <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
      <!-- Spring aop -->
      <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
      <!-- aspectj -->
      <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.7</version>
    </dependency>
    <!-- mybatis -->
      <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
      
      <!-- mybatis-spring -->
      <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>
      <!-- mysql 驅動 -->
      <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.0.8</version>
    </dependency>
      <!-- junit -->
      <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
      <!-- 阿裏巴巴數據庫連接池 -->
      <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.14</version>
    </dependency>
    <!-- 阿裏巴巴的json工具 -->
      <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.7</version>
    </dependency>
    
    <!-- commons fileupload -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.2</version>
    </dependency>
    <!-- jstl -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- Apache poi -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.13</version>
    </dependency>
    <!-- 分頁插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>${pagehelper.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>${jsqlparser.version}</version>
        </dependency>
    <!-- shiro -->  
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-all</artifactId>
      <version>1.2.3</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
        <plugin>
             <artifactId>maven-compiler-plugin</artifactId>
             <configuration>
                 <source>1.8</source>
                 <target>1.8</target>
             </configuration>
        </plugin>
        <plugin>
               <groupId>org.apache.tomcat.maven</groupId>
               <artifactId>tomcat7-maven-plugin</artifactId>
               <version>2.2</version>
               <configuration>
                   <port>80</port>
                   <path>/</path>
               </configuration>
        </plugin>
   </plugins>
  </build>
</project>

4 拷貝靜態資源
easymall-ssm的靜態文件拷貝到當前工程中,從navigator保存

  這裏要關閉eclipse自帶的web前端的各種校驗

  技術分享圖片
5 準備ssm框架的配置文件
spring本身的配置文件
spring整合mybatis配置文件
springmvc配置文件
mybatis配置文件

SSM項目之電商項目easymall(一)