1. 程式人生 > >CRM第一天:客戶關係管理系統的環境搭建和註冊

CRM第一天:客戶關係管理系統的環境搭建和註冊

子曰:學而不思則罔,為了鞏固一下學習的框架知識,同時為了增加對框架的實際應用能力,同時增加專案經驗。從今天開始做一個SSH框架的客戶關係管理系統。

目錄

1.CRM專案(客戶關係管理系統)

1.1CRM的概述(瞭解)

1.2CRM有哪些模組

2.CRM專案環境搭建

2.1第一步:建立WEB專案,引入jar包

2.2第二步:引入配置檔案

2.3第三步:建立相關的包結構

2.4第四步:建立相關的頁面

2.3第五步:建立相關的類

2.3第六步:將相關的類配置到Spring中

3.使用者模組-實現使用者註冊

3.1編寫一個註冊頁面

3.2建立資料庫表

3.3建立實體和對映

3.4編寫UserAction

3.5編寫UserService

3.6編寫UserDao

3.7配置Spring的事務管理

效果展示:


 

1.CRM專案(客戶關係管理系統)

1.1CRM的概述(瞭解)

CRM即客戶關係管理,指企業用CRM技術來管理與客戶之間的關係。它的目標是通過提高客戶的價值、滿意度、贏利性和忠實度來縮減銷售週期和銷售成本、增加收入、尋找擴充套件業務所需的新的市場和渠道。

 

1.2CRM有哪些模組

2.CRM專案環境搭建

2.1第一步:建立WEB專案,引入jar包

2.2第二步:引入配置檔案

  1. Struts2框架
      1. Web.xml

 

<!-- Struts2配置核心過濾器 -->

     <filter>

         <filter-name>struts</filter-name>

         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

     </filter>



     <filter-mapping>

         <filter-name>struts</filter-name>

         <url-pattern>/*</url-pattern>

     </filter-mapping>
      1. Struts2.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

     "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

     <!-- 配置Struts2的常量 -->

     <constant name="struts.action.extension" value="action"/>

    

    

</struts>
  1. Spring框架
  1. Jdbc.properties

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql:///crm

jdbc.username=root

jdbc.password=123456
  1. Log4j.properties

### direct log messages to stdout ###

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.err

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n



### direct messages to file mylog.log ###

log4j.appender.file=org.apache.log4j.FileAppender

log4j.appender.file.File=c\:mylog.log

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n



### set log levels - for more verbose logging change 'info' to 'debug' ###

# error warn info debug trace

log4j.rootLogger= info, stdout

 

  1. ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

     xmlns:context="http://www.springframework.org/schema/context"

     xmlns:aop="http://www.springframework.org/schema/aop"

     xmlns:tx="http://www.springframework.org/schema/tx"

     xsi:schemaLocation="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

     http://www.springframework.org/schema/aop

     http://www.springframework.org/schema/aop/spring-aop.xsd

     http://www.springframework.org/schema/tx

     http://www.springframework.org/schema/tx/spring-tx.xsd">

    

     <!-- 引入外部屬性檔案=============================== -->

     <context:property-placeholder location="classpath:jdbc.properties"/>

    

     <!-- 配置C3P0連線池=============================== -->

     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

         <property name="driverClass" value="${jdbc.driverClass}"/>

         <property name="jdbcUrl" value="${jdbc.url}"/>

         <property name="user" value="${jdbc.username}"/>

         <property name="password" value="${jdbc.password}"/>

     </bean>

    

    

     <!-- Spring整合Hibernate -->

     <!-- 引入Hibernate的配置的資訊=============== -->

     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.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.hbm2ddl.auto">update</prop>

              </props>

         </property>

        

     </bean>



    

</beans>
  1. web.xml

<!-- Spring的核心監聽器 -->

     <listener>

         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

     </listener>



     <!-- 載入Spring的配置檔案的路徑的,預設載入的/WEB-INF/applicationContext.xml -->

     <context-param>

         <param-name>contextConfigLocation</param-name>

         <param-value>classpath:applicationContext.xml</param-value>

     </context-param>
  1. Hibernate框架(交給Spring管理)

 

2.3第三步:建立相關的包結構

2.4第四步:建立相關的頁面

2.3第五步:建立相關的類

2.3第六步:將相關的類配置到Spring中

<!-- 配置Action -->

    <bean id="userAction" class="com.albertyy.crm.web.action.UserAction" scope="prototype">

    </bean>

    <!-- 配置Service -->

    <bean id="userService" class="com.albertyy.crm.serviceImpl.UserServiceImpl">

    </bean>

    <!-- 配置Dao -->

    <bean id="userDao" class="com.albertyy.crm.daoImpl.UserDaoImpl">

    </bean>

 

3.使用者模組-實現使用者註冊

3.1編寫一個註冊頁面

3.2建立資料庫表


CREATE TABLE `sys_user` (

  `user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '使用者id',

  `user_code` varchar(32) NOT NULL COMMENT '使用者賬號',

  `user_name` varchar(64) NOT NULL COMMENT '使用者名稱稱',

  `user_password` varchar(32) NOT NULL COMMENT '使用者密碼',

  `user_state` char(1) NOT NULL COMMENT '1:正常,0:暫停',

  PRIMARY KEY (`user_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

3.3建立實體和對映

實體類:User

/**  



* @Title: User.java



* @Package com.albertyy.crm.entity



* @Description: TODO



* @author yangxianyang  



* @date 2018年12月13日 上午11:40:10



* @version V1.0  



*/



package com.albertyy.crm.entity;



/**  

*   

* 專案名稱:CRM  

* 類名稱:User  

* 類描述: 使用者實體類 

* 建立人:yangyangyang  

* 建立時間:2018年12月13日 上午11:40:10  

* 修改人:yangyangyang  

* 修改時間:2018年12月13日 上午11:40:10  

* 修改備註:  

* @version   

*   

*/

/*

 * CREATE TABLE `sys_user` (

  `user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '使用者id',

  `user_code` varchar(32) NOT NULL COMMENT '使用者賬號',

  `user_name` varchar(64) NOT NULL COMMENT '使用者名稱稱',

  `user_password` varchar(32) NOT NULL COMMENT '使用者密碼',

  `user_state` char(1) NOT NULL COMMENT '1:正常,0:暫停',

  PRIMARY KEY (`user_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 */

public class User {

   private Long user_id;

   private String user_code;

   private String user_name;

   private String user_password;

   private String user_state;

public Long getUser_id() {

         return user_id;

}

public void setUser_id(Long user_id) {

         this.user_id = user_id;

}

public String getUser_code() {

         return user_code;

}

public void setUser_code(String user_code) {

         this.user_code = user_code;

}

public String getUser_name() {

         return user_name;

}

public void setUser_name(String user_name) {

         this.user_name = user_name;

}

public String getUser_password() {

         return user_password;

}

public void setUser_password(String user_password) {

         this.user_password = user_password;

}

public String getUser_state() {

         return user_state;

}

public void setUser_state(String user_state) {

         this.user_state = user_state;

}

  

}

對映檔案:User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

     <!-- 建立類與表的對映 -->

     <class name="com.albertyy.crm.entity.User" table="sys_user" >

         <!-- 建立類中的屬性與表中的主鍵對應 -->

         <id name="user_id" column="user_id" >

              <!-- 主鍵生成策略 -->

              <generator class="native"/>

         </id>

        

         <!-- 建立類中的普通的屬性和表的欄位的對應 -->

         <property name="user_code" column="user_code"  />

         <property name="user_name" column="user_name" />

         <property name="user_password" column="user_password"/>

         <property name="user_state" column="user_state"/>

     </class>

    

</hibernate-mapping>

 

3.4編寫UserAction

/**  



* @Title: UserAction.java



* @Package com.albertyy.crm.web.action



* @Description: TODO



* @author yangxianyang  



* @date 2018年12月13日 上午11:42:41



* @version V1.0  



*/



package com.albertyy.crm.web.action;



import com.albertyy.crm.entity.User;

import com.albertyy.crm.service.UserService;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;



/**  

*   

* 專案名稱:CRM  

* 類名稱:UserAction  

* 類描述: 使用者管理Action 

* 建立人:yangyangyang  

* 建立時間:2018年12月13日 上午11:42:41  

* 修改人:yangyangyang  

* 修改時間:2018年12月13日 上午11:42:41  

* 修改備註:  

* @version   

*   

*/



public class UserAction extends ActionSupport implements ModelDriven<User> {

    //模型驅動使用的物件

     private User user=new User();

     @Override

     public User getModel() {

         return user;

     }

     //注入Service

     private UserService userService;

    

     public void setUserService(UserService userService) {

         this.userService = userService;

     }





     /*

     * 使用者註冊的方法

     */

     public String register(){

         userService.register(user);

         return NONE;

     }

}

注入service:

<bean id="userAction" class="com.albertyy.crm.web.action.UserAction" scope="prototype">

       <property name="userService" ref="userService"></property>

</bean>

 

配置Action訪問:

<!-- 配置Action -->

     <package name="crm" extends="struts-default" namespace="/">

         <action name="user_*" class="userAction" method="{1}">

              <result name="login">/login.jsp</result>

         </action>

</package>

 

3.5編寫UserService

/**  



* @Title: UserServiceImpl.java



* @Package com.albertyy.crm.serviceImpl



* @Description: TODO



* @author yangxianyang  



* @date 2018年12月13日 上午11:40:55



* @version V1.0  



*/



package com.albertyy.crm.serviceImpl;



import com.albertyy.crm.dao.UserDao;

import com.albertyy.crm.entity.User;

import com.albertyy.crm.service.UserService;

import com.albertyy.crm.utils.MD5Utils;



/**

 *        專案名稱:CRM   類名稱:UserServiceImpl   類描述:   建立人:yangyangyang  

 * 建立時間:2018年12月13日 上午11:40:55   修改人:yangyangyang   修改時間:2018年12月13日

 * 上午11:40:55   修改備註:   @version       

 */



public class UserServiceImpl implements UserService {

// 注入Dao

private UserDao userDao;



public void setUserDao(UserDao userDao) {

      this.userDao = userDao;

}



// 註冊方法

@Override

public void register(User user) {

      // 對密碼進行加密處理

      user.setUser_name(MD5Utils.md5(user.getUser_password()));

      // '1:正常,0:暫停'

      user.setUser_state("1");

      // 呼叫Dao

      userDao.save(user);

}



}

注入Dao:

<!-- 配置Service -->

    <bean id="userService" class="com.albertyy.crm.serviceImpl.UserServiceImpl">

       <property name="userDao" ref="userDao"></property>

 </bean>

 

3.6編寫UserDao

整合Hibernate:

<!-- Spring整合Hibernate -->

     <!-- 引入Hibernate的配置的資訊=============== -->

     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.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.hbm2ddl.auto">update</prop>

              </props>

         </property>

        

         <!-- 引入對映檔案 -->

         <property name="mappingResources">

            <list>

                 <value>com/albertyy/crm/entity/User.hbm.xml</value>

            </list>

         </property>

</bean>

Dao中繼承HibernateDaoSupport類

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
    //儲存方法
	@Override
	public void save(User user) {
		this.getHibernateTemplate().save(user);
	}

}

 

Dao中注入SessionFactory:

 

<!-- 配置Dao -->

    <bean id="userDao" class="com.albertyy.crm.daoImpl.UserDaoImpl">

        <property name="sessionFactory" ref="sessionFactory"></property>

 </bean>

3.7配置Spring的事務管理

<!-- 配置事務管理器 -->

     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">

         <property name="sessionFactory" ref="sessionFactory"/>

     </bean>

    

     <!-- 開啟註解事務 -->

     <tx:annotation-driven transaction-manager="transactionManager"/>

 

在業務層添加註解:@Transactional

@Transactional

public class UserServiceImpl implements UserService {

    // 注入Dao

    private UserDao userDao;



    public void setUserDao(UserDao userDao) {

        this.userDao = userDao;

}

效果展示: