目录
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=6 DEFAULT CHARSET=utf8;
2.实体类
/**
* 用户的实体
*/
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;
}
}
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"/>
</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>
4. 相关类
4.1 dao层
public interface UserDao extends BaseDao<User> {
User login(User user);
}
public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao {
@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;
}
}
4.2 service层
public interface UserService {
void regist(User user);
User login(User user);
}
@Transactional //添加注解事务
public class UserServiceImpl implements UserService {
// 注入DAO:
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
// 业务层注册用户的方法
public void regist(User user) {
// 对密码进行加密处理:
user.setUser_password(MD5Utils.md5(user.getUser_password()));
user.setUser_state("1");
// 调用DAO
userDao.save(user);
}
//业务层用户登录
@Override
public User login(User user) {
user.setUser_password(MD5Utils.md5(user.getUser_password()));
return userDao.login(user);
}
}
4.3 web层
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;
}
/**
* 用户注册的方法:regist
*/
public String regist(){
userService.regist(user);
return LOGIN;
}
/**
* 用户登录
* @return
*/
public String login(){
User exitUser = userService.login(user);
if(exitUser == null){
//登录失败
this.addActionError("用户名或密码错误");
return LOGIN;
}else{
ActionContext.getContext().getSession().put("exitUser", exitUser);
return SUCCESS;
}
}
}
5.配置文件
applicationContext.xml
<!-- 配置用户相关的类 -->
<bean id="userDao" class="crm.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userService" class="crm.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userAction" class="crm.web.action.UserAction" scope="prototype">
<property name="userService" ref="userService"/>
</bean>
struts.xml
<!-- 处理用户 -->
<action name="user_*" class="userAction" method="{1}">
<result name="success" type="redirect">/index.jsp</result>
<interceptor-ref name="PrivilegeInterceptor">
<param name="excludeMethods">regist,login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>