CRM客户管理系统综合练习总结(一)

一、搭建开发环境

1、第一步:创建web项目,引入jar包

2、第二步:引入配置文件

struts2的框架:

  • web.xml:配置struts2的核心过滤器
<!--Struts2的核心过滤器 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		<!--修改常量======== -->
		<!-- <init-param> <param-name>struts.action.extension</param-name> <param-value>xyz</param-value> 
			</init-param> -->
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  • struts.xml

spring的框架:

  • jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/crm
jdbc.username=root
jdbc.password=123456
  • log4j.properties
  • applicationContext.xml–引入外部属性文件、配置C3P0连接池
<!--通过context标签引入外部属性文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />
	<!--配置C3P0 连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 属性注入(name与前面两个连接池不一样了) -->
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
  • web.xml:配置spring的核心监听器
<!--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的框架:

  • hibernate.cfg.xml --交给spring管理

3、第三步:创建相关包结构

在这里插入图片描述

4、第四步:引入相关页面

5、第五步:创建相关的类

在这里插入图片描述

第六步:将相关的类配置到Spring中

	<!--配置Action -->
	<bean id="userAction" class="crm.web.action.UserAction" scope="prototype">
	
	</bean>

	<!--配置Service -->
	<bean id="userService" class="crm.service.impl.UserServiceImpl">
	
	</bean>

	<!--配置DAO -->
	<bean id="userDao" class="crm.dao.impl.UserDaoImpl">
	
	</bean>

二、用户模块-用户注册代码实现

1、提供一个注册页面

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、创建映射

<?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="crm.domain.User" table="sys_user">
		<!--建立类中属性与表中的主键对应 -->
		<id name="user_id" column="user_id">
			<generator class="native"></generator>
		</id>
		<!--建立类中的普通属性与表中的字段对应,非主键用property -->
		<property name="user_code" column="user_code"></property>
		<property name="user_name" column="user_name"></property>
		<property name="user_password" column="user_password"></property>
		<property name="user_state" column="user_state"></property>
	</class>
</hibernate-mapping>

4、编写Action

编写regist的方法

public class UserAction extends ActionSupport implements ModelDriven<User> {

	private User user = new User();

	@Override
	public User getModel() {
		return user;
	}

	private UserService userService;

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	/**
	 * 用户注册的方法:regist
	 * 
	 * @return
	 */
	public String regist() {
		// 修正:用户名或密码不能为空;密码至少是6位且不低于12位

		userService.regist(user);
		return LOGIN;
	}
}

在Action中注入Service

在这里插入图片描述

配置Action的访问

在这里插入图片描述

编写Service

/**
 * 用户业务层接口
 * 
 * @author Administrator
 *
 */
public interface UserService {
	void regist(User user);
}
public class UserServiceImpl implements UserService {
	private UserDao userDao;

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	@Override
	// 业务层注册用户的方法
	public void regist(User user) {
		// 对密码进行加密处理
		String password = MD5Utils.md5(user.getUser_password());
		user.setUser_password(password);
		user.setUser_state("1");
		// 调用DAO
		userDao.save(user);
	}
}

MD5加密算法

public class MD5Utils {
	/**
	 * 使用md5的算法进行加密
	 */
	public static String md5(String plainText) {
		byte[] secretBytes = null;
		try {
			secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
		} catch (NoSuchAlgorithmException e) {
			throw new RuntimeException("没有md5这个算法!");
		}
		String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
		// 如果生成数字未满32位,需要前面补0
		for (int i = 0; i < 32 - md5code.length(); i++) {
			md5code = "0" + md5code;
		}
		return md5code;
	}
}

在Service中注入UserDao

在这里插入图片描述

编写DAO

  • 整合Hibernate
<!--配置SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<!--注入连接池 -->
		<property name="dataSource" ref="dataSource"></property>
		<!--配置Hibernate的相关属性 -->
		<property name="hibernateProperties">
			<props>
				<!-- 配置Hibernate的方言 -->
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<!-- 打印SQL -->
				<prop key="hibernate.show_sql">true</prop>
				<!-- 格式化SQL -->
				<prop key="hibernate.format_sql">true</prop>
				<!-- 自动创建表 -->
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>

		<!--引入映射文件 -->
		<property name="mappingResources">
			<list>
				<value>crm/domain/User.hbm.xml</value>
			</list>
		</property>
	</bean>
  • 在DAO中继承HibernateDaoSupport类
/**
 * 用户实体的DAO接口
 * 
 * @author Administrator
 *
 */
public interface UserDao {
	void save(User user);
}

/**
 * 用户实体的DAO实现类
 * 
 * @author Administrator
 *
 */
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

	@Override
	// DAO中保存用户的方法
	public void save(User user) {
		this.getHibernateTemplate().save(user);
	}
	
}
  • 在DAO中注入sessionFactory
    在这里插入图片描述

5、配置Spring的事务管理

配置事务管理器

在这里插入图片描述

开启注解事务

在这里插入图片描述

在业务层添加事务注解

在这里插入图片描述

三、用户模块-用户登录代码实现

1、修改登录页面

在这里插入图片描述

2、编写Action中的login方法

	/**
	 * 用户登录的方法:login
	 * 
	 * @return
	 */
	public String login() {
		// 调用业务层查询用户
		User existUser = userService.login(user);
		if (existUser == null) {
			// 登录失败
			// 添加错误信息:
			this.addActionError("用户名或者密码错误!");
			return LOGIN;
		} else {
			// 登录成功
			// ServletActionContext.getRequest().getSession().setAttribute("existUser",existUser);
			ActionContext.getContext().getSession().put("existUser", existUser);
			return SUCCESS;
		}
	}

3、编写Service

@Override
	//业务层用户登录的方法
	public User login(User user) {
		String password=MD5Utils.md5(user.getUser_password());
		user.setUser_password(password);
		user.setUser_state("1");
		//调用DAO
		return 	userDao.login(user);
	}

4、编写DAO

@Override
	// DAO中根据用户名和密码进行查询的方法
	public User login(User user) {
		List<User> list = (List<User>) this.getHibernateTemplate()
				.find("from User where user_code=? and user_password=?", 
	user.getUser_code(), user.getUser_password());
		// 判断一下
		if (list.size() > 0) {
			return list.get(0);
		}
		return null;
	}

5、配置页面的跳转

在这里插入图片描述

6、在页面中显示数据

  • 在成功页面上显示用户信息
    在这里插入图片描述
  • 在失败的页面上显示错误信息
    在这里插入图片描述

总结:注册和登录部分功能还缺少拦截器的代码以及对用户名和密码数据进行校验的代码。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值