CRM第一天:客戶關係管理系統的環境搭建和註冊
阿新 • • 發佈:2018-12-15
子曰:學而不思則罔,為了鞏固一下學習的框架知識,同時為了增加對框架的實際應用能力,同時增加專案經驗。從今天開始做一個SSH框架的客戶關係管理系統。
目錄
1.CRM專案(客戶關係管理系統)
1.1CRM的概述(瞭解)
CRM即客戶關係管理,指企業用CRM技術來管理與客戶之間的關係。它的目標是通過提高客戶的價值、滿意度、贏利性和忠實度來縮減銷售週期和銷售成本、增加收入、尋找擴充套件業務所需的新的市場和渠道。
1.2CRM有哪些模組
2.CRM專案環境搭建
2.1第一步:建立WEB專案,引入jar包
2.2第二步:引入配置檔案
- Struts2框架
-
- 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>
-
-
- 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>
- Spring框架
- Jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///crm
jdbc.username=root
jdbc.password=123456
- 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
- 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>
- 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>
- 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;
}
效果展示: