环境搭建 + 用户登录注册| CRM客户关系管理系统项目实战一(Struts2+Spring+Hibernate)解析+源代码
发布日期:2021-06-29 15:02:24 浏览次数:2 分类:技术文章

本文共 9426 字,大约阅读时间需要 31 分钟。

一、搭建开发环境

1、创建项目crm并引入jar

在这里插入图片描述

2、引入配置文件

(1)struts2框架的
  • web.xml:配置Struts2的核心过滤器
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
  • struts.xml
    在src下创建struts.xml
(2)Spring框架的
  • jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///crm jdbc.username=rootjdbc.password=root
  • log4j.properties
### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{
ABSOLUTE} %5p %c{
1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c\:mylog.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.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 tracelog4j.rootLogger= info, stdout
  • applicationContext.xml
  • web.xml
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
(1)Hibernate框架的
  • Hibernate.cfg.xml ————交给Spring管理(不需要配置)在Spring当中需要配置jdbc.properties

3、创建包结构

在这里插入图片描述

4、创建JSP页面

在这里插入图片描述

页面下载地址:

在这里插入图片描述

5、创建相关的类

(1)创建domain下创建User
package com.itzheng.crm.domain;/* * 用户的实体 */public class User {
}
(2)创建UserDao接口以及实现类
package com.itzheng.crm.dao;/* * 用户管理的Dao的接口 */public interface UserDao {
}
package com.itzheng.crm.dao.impl;import com.itzheng.crm.dao.UserDao;/* * 用户管理的Dao的实现类 */public class UserDaoImpl implements UserDao {
}
(3)创建UserService接口和实现类
package com.itzheng.crm.service;/* * 用户管理的Service的接口 */public interface UserService {
}
package com.itzheng.crm.service.impl;import com.itzheng.crm.service.UserService;/* * 用户管理的Service的接口的实现类 */public class UserServiceImpl implements UserService {
}
(4)在action包下创建UserAction
package com.itzheng.crm.web.action;import com.itzheng.crm.domain.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/* * 用户管理的Action的类 */public class UserAction extends ActionSupport implements ModelDriven
{
private User user = new User(); @Override public User getModel() {
// TODO Auto-generated method stub return user; }}

6、将相关的类配置到Spring当中

在applicationContext.xml当中

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

1、注册的页面(在login.jsp页面添加一个按钮跳转到注册页面)

在这里插入图片描述

在这里插入图片描述

2、在regist.jsp页面上修改form表单,以及input标签

在这里插入图片描述

在这里插入图片描述

3、创建表和实体

(1)创建表
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;/*Data for the table `sys_user` */LOCK TABLES `sys_user` WRITE;INSERT  INTO `sys_user`(`user_id`,`user_code`,`user_name`,`user_password`,`user_state`) VALUES (5,'m0003','小军','123','1'),(6,'m0001','小红','123','1'),(7,'m0001','小明','123','1'),(8,'m0001','小红','123','1');UNLOCK TABLES;

在这里插入图片描述

(2)创建实体(完善上面的User.java)
package com.itzheng.crm.domain;/* * 用户的实体 */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; } public User(Long user_id, String user_code, String user_name, String user_password, String user_state) {
super(); this.user_id = user_id; this.user_code = user_code; this.user_name = user_name; this.user_password = user_password; this.user_state = user_state; } @Override public String toString() {
return "User [user_id=" + user_id + ", user_code=" + user_code + ", user_name=" + user_name + ", user_password=" + user_password + ", user_state=" + user_state + "]"; }}
(3)创建实体的映射

在domian下创建User.hbm.xml

4、编写业务层实现类

(1)编写UserAction,UserService,UserServiceImpl

编写regist方法

package com.itzheng.crm.web.action;import com.itzheng.crm.domain.User;import com.itzheng.crm.service.UserService;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/* * 用户管理的Action的类 */public class UserAction extends ActionSupport implements ModelDriven
{
//模型驱动使用的对象(自动封装表单提交的数据) private User user = new User(); @Override public User getModel() {
// TODO Auto-generated method stub return user; } //注入Service private UserService userService; public void setUserService(UserService userService) {
this.userService = userService; } /* * 用户注册的方法:regist */ public String regist() {
userService.regist(user); return NONE; }}

在这里插入图片描述

在这里插入图片描述

(2)在Action当中注入Service

在这里插入图片描述

(3)编写Service实现类(业务层代码)
  • 在业务层注册账号的时候,需要对账号密码进行加密
    使用一个简单的算法进行加密导入这个工具类
    创建utils包将这个类放入到其中
package com.itzheng.crm.utils;import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Utils {
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�������� for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = "0" + md5code; } return md5code; } public static void main(String[] args) {
System.out.println(md5("123")); }}
  • 编写Service实现类注入UserDao
package com.itzheng.crm.service.impl;import com.itzheng.crm.dao.UserDao;import com.itzheng.crm.domain.User;import com.itzheng.crm.service.UserService;import com.itzheng.crm.utils.MD5Utils;/* * 用户管理的Service的接口的实现类 */public class UserServiceImpl implements UserService {
//注入DAO: 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); }}
(4)注入Dao

在applicationContext.xml的UserService当中注入UserDao

在这里插入图片描述

5、编写DAO

(1)整合Hibernate
  • 在applicationContext.xml配置sessionFactory,注入连接池,引入映射文件
org.hibernate.dialect.MySQLDialect
true
true
update
com/itzheng/crm/domain/User.hbm.xml
(2) 在Dao当中继承HibernateDaoSupport类,保存user并注入sessionFactory

在UserDaoImpl 当中HibernateDaoSupport向数据库当中保存dao

package com.itzheng.crm.dao.impl;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.itzheng.crm.dao.UserDao;/* * 用户管理的Dao的实现类 */import com.itzheng.crm.domain.User;public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
@Override //DAO 当中保存用户的方法 public void save(User user) {
this.addActionMessage("注册成功!请登录!"); this.getHibernateTemplate().save(user); }}

在applicationContext.xml当中配置注入sessionFactory

6、配置Spring的事务管理

(1)配置事务管理器

在applicationContext.xml当中

(2)开启注解事务

在applicationContext.xml当中

(3)在业务层添加事务注解(事务在当前类当中被添加)

在这里插入图片描述

7、完善Action

(1)struts.xml当中配置

在这里插入图片描述

(2)修改UserAction当中的regist方法

在这里插入图片描述

8、测试

访问regist.jsp

在这里插入图片描述
注册成功
在这里插入图片描述

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

1、修改登录页面login.jsp

在这里插入图片描述

在这里插入图片描述

2、编写Action中的login方法

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、完善UserService,UserServiceImpl以及UserDao以及UserDaoImpl

UserService

在这里插入图片描述
UserServiceImpl
对登录的密码进行加密处理(和数据库当中的加密的密码进行对比)
在这里插入图片描述
UserDao
在这里插入图片描述
UserDaoImpl

@Override	//DAO 中根据用户名和密码进行查询的方法:	public User login(User user) {
// TODO Auto-generated method stub List
list = (List
) 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; }

4、配置页面的跳转

在这里插入图片描述

5、在页面中显示数据

(1)在成功的页面上显示用户信息

在top.jsp

在这里插入图片描述

(2)在失败的页面上显示错误的信息login.jsp

在这里插入图片描述

在这里插入图片描述

转载地址:https://code100.blog.csdn.net/article/details/107441916 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程
下一篇:SVN:自己搭建源代码的版本控制系统(服务端VISUALSVN+客户端TortoiseSVN安装和使用)模拟客户使用的过程(使用大全)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月25日 04时59分13秒