zoukankan      html  css  js  c++  java
  • 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;
    
    }

    效果展示:

     

  • 相关阅读:
    为什么一段时间后网站后台自动退出 php中session过期时间设置
    php中的$_GET如何获取带有“#”的参数
    让页面在打开时自动刷新
    MySQL关联left join 条件on与where不同
    图形上下文的栈操作(保存和恢复)
    图形上下文的矩阵操作(平移-缩放-旋转)
    Quartz2D内存管理
    文字绘制-图片绘制-水印绘制思路
    UIBezierPath-完善曲线
    UIBezierPath-绘制基本图形
  • 原文地址:https://www.cnblogs.com/yangxianyang/p/13675637.html
Copyright © 2011-2022 走看看