一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能

Spring+Spring MVC + Hibernate

1新建WEB项目

1.1设置myeclipse编码格式,JSPworkspace

1.2新建web工程

 一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能_第1张图片

1.3避免MyEclipse验证js文件,先在web项目上单击右键,再选择“Myecplise------->open in explorer”,在下图.project文件中删除如右图代码

一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能_第2张图片

2安装HibernateSpring

2.1新建DB(在控制台这一栏右键new 数据库DB),请加上如下图代码,防止乱码:

jdbc:mysql://localhost:3306/javassh?useUnicode=true&characterEncoding=UTF-8

2.2添加hibernate

2.2.1注意取消生成factory选项

2.2.2增加hibernate的属性

format_sql=true
hbm2ddl.auto=update

2.3添加spring

2.3.1注意勾选JDBCCoreWebTesting(可选)这几个选项

 一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能_第3张图片

2.3.2把工程里面的applicationContext.xml改名为spring.xml

2.3.2src目录下拷入log4jlog4j.properties,配置为debug

3配置Spring MVC以及Spring

3.1配置web.xml



	17SSH_SpringHibernate

	
	
		contextConfigLocation
		classpath:spring.xml
	

	
	
		org.springframework.web.context.ContextLoaderListener
	

	
	
		springmvc
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:spring-mvc.xml
		
	
	
		springmvc
		/
	

	
	
		CharacterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
	
	
		CharacterEncodingFilter
		/*
	

	
	
		
			*.jsp
			true
		
	

3.2配置Spring MVC

3.2.1src目录下新建spring-mvc.xml文件,可以复制spring.xml完成

3.2.2spring-mvc.xml文件代码如下:

  
  

    
    

      
      

      
      
		  
          
        
          
        
          
	  
	
	
	  
  

3.2.3 说明:此时的工程结构如图:

 一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能_第4张图片

4下面开始写控制层

4.1src下新建controller,类名字为LoginController,添加getpost方法。

 

@RequestMapping(method=RequestMethod.GET)
	public String get(){
		return "login";
}
@RequestMapping(method=RequestMethod.POST)
	public String post(){
		return "login_success";
}

4.2jsp页面,名字login.jsp

4.2.1拷入bootstrapjqueryres目录下

4.2.2jsp页面中导入bootstrapjquery,并编写jsp页面

4.2.3增加验证码

4.3src下新建controllerbean(注意路径)bean名字为Login:添加如下属性,并提供相对应的getset方法。

 

	private String username;
	private String password;
	private String vcode;

4.4增加SpringMVC验证功能

4.3.1 Hibernate-valiation相应的jar

4.3.2login这个bean上添加如下注解(部分):

 

	@NotNull
	@Length(min=3, max=16)
	private String username;
	@NotNull
	private String password;
	@NotNull
	private String vcode;

4.3.3在控制器(LoginController)上添加如下代码:

 

@RequestMapping(method=RequestMethod.POST)
	public String post(@Valid@ModelAttribute("login")Login login,
			BindingResult errors){
		if(errors.hasErrors()){
			return "login";
		}
		return "login_success";
	}

4.3.4login.jsp页面上添加显示错误消息的代码:


<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>


4.3.5 通过 session 为中介,让验证码起作用:

//注意,先要通过post的参数传一个session进来
String sessionVcode = (String) session.getAttribute(ValidateCode.VCODE_SESSION_KEY);
		if(sessionVcode == null || !sessionVcode.toLowerCase().equals(login.getVcode().toLowerCase())){
			errors.addError(new FieldError("login", "vcode", "验证码错误"));
}

5 Springhibernate

5.1添加contexttx命名空间,见3.2.2节。

5.2hibernate.cfg.xml配置,对应地写到spring.xml文件中

 


	
		
		
		
	
	
		
		
			
				org.hibernate.dialect.MySQLDialect
				true
				update
			
		
		
	
	
	
		
	
	
	

5.3写持久化类Userbean(包名:wllfengshu.forum.po)

 

private Integer id;
	private String username;
	private String password;
	private String name;
	private String nickname;
/*给出对应地get和set方法*/

5.4User的映射文件User.hbm.xml(包名:wllfengshu.forum.po)


	
		
			
		
		
		
		
		
	

5.5UserDao(包名:wllfengshu.forum.dao)

public interface UserDao {
	public User login(String username, String password);
	public Integer save(User user);
	public void update(User user);
	public boolean validatePassword(Integer id, String password);
	public void updatePassword(Integer id, String password);
}

5.6 Spring操作hibernateAPi
5.6.1spring-mvc中加上default-autowire="byName"属性

5.6.2UserDao的实现类UserDaoImpl

(包名:wllfengshu.forum.dao.impl):

@Repository
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
	@Override
	public User login(String username, String password) {
		List users = getHibernateTemplate().find("from User where username=? and password=?", username, password);
		return users.size() > 0 ? users.get(0) : null;
	}
	@Override
	public Integer save(User user) {
		return (Integer) getHibernateTemplate().save(user);
	}
	@Override
	public void update(User user) {
		getHibernateTemplate().update(user);
	}
	@Override
	public boolean validatePassword(Integer id, String password) {
		return false;
	}
	@Override
	public void updatePassword(Integer id, String password) {
	}
}

5.7service层,UserService(包名:wllfengshu.forum.service)

public interface UserService {
	public User login(String username, String password);
	public Integer save(User user);
}

5.8UserService的实现(包名:wllfengshu.forum.service.impl)

@Service
public class UserServiceImpl implements UserService {
	@Autowired
	private UserDao userDao;
	@Override
	@Transactional(readOnly=true)
	public User login(String username, String password) {
		return userDao.login(username, password);
	}
	@Override
	public Integer save(User user) {
		return userDao.save(user);
	}
}

5.9Login的控制器层中,进行登录。

@Autowired
	private UserService userService;	
	
		User user = userService.login(login.getUsername(), login.getPassword());
		if(user == null){
			errors.addError(new ObjectError("login", "用户名或者密码错误"));
			return "login";
		}else{
//这里的SessionUser是为了把用户登录信息放到session中
			SessionUser sessionUser = SessionUser.fromUser(user);
			session.setAttribute(SessionUser.class.getSimpleName(), sessionUser);
		}
		return "login_success";

5.10Registerbeanregister的控制器,和login类似。

 本文链接:http://blog.csdn.net/tiandixuanwuliang/article/details/72598938

你可能感兴趣的:(WEB)