快速学习SSH框架

       SSHstruts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。

【框架介绍】

Spring

   单单说SpringSSH中的作用。①管理Struts:在xml配置文件中为strutsaction进行注入。②管理hibernate:在xml配置文件中配置hibernate的配置信息(dataSourcesessionFactory),为hibernatedao操作注入sessionFactory属性值。

Struts

   用来响应用户的action,对应到相应的类进行处理。

Hibernate

   用来把实体类对应到数据库。提供增删改查的基本底层操作。

【搭建开发环境--jar包】

SpringStrutsHibernate相关的jar包,springstruts整合的包,以及mysqljdbc驱动包。

Struts:

jar:

struts-2.3.15.3\apps\struts2-blank.war\WEB-INF\lib\*.jar

struts-2.3.15.3\lib\struts2-json-plugin-2.3.15.3.jar

struts-2.3.15.3\lib\struts2-spring-plugin-2.3.15.3.jar

 

Spring:

<Spring3.2开发最基本jar>

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

com.springsource.org.apache.log4j-1.2.15.jar

<AOP开发>

spring-aop-3.2.0.RELEASE.jar

spring-aspects-3.2.0.RELEASE.jar

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

<Spring Jdbc开发>

spring-jdbc-3.2.0.RELEASE.jar

spring-tx-3.2.0.RELEASE.jar

<Spring事务管理>

spring-tx-3.2.0.RELEASE.jar

<Spring整合其他ORM框架>

spring-orm-3.2.0.RELEASE.jar

<Springweb中使用>

spring-web-3.2.0.RELEASE.jar

<Spring整合Junit测试>

spring-test-3.2.0.RELEASE.jar

 

Hibernate:

jar:

hibernate-distribution-3.6.10.Final\hibernate3.jar

hibernate-distribution-3.6.10.Final\lib\required\*.jar

hibernate-distribution-3.6.10.Final\lib\jpa\*.jar

【搭建开发环境--配置文件】

1Web.xml



org.springframework.web.context.ContextLoaderListener

 

contextConfigLocation
classpath:applicationContext.xml

 


struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


 

struts2
/*

2struts.xml:






/WEB-INF/jsp/index.jsp


3applicationContext.xml

 











 







org.hibernate.dialect.MySQLDialect
true
true
false
update





cn/itcast/shop/user/vo/User.hbm.xml


 

 





 


 

 


 





 




 




【业务逻辑部分-以用户注册为例】

1.首先完成hibernate的操作部分。设计一个User实体类,该类中包含数据库中User表的所有字段。

package cn.itcast.shop.user.vo;
/**
 * 用户模块实体类
 * @author happy
 *
 */
public class User {

	public Integer getUid() {
		return uid;
	}
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public Integer getState() {
		return state;
	}
	public void setState(Integer state) {
		this.state = state;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	private Integer uid;
	private String username;
	private String password;
	private String name;
	private String email;
	private String phone;
	private String addr;
	private Integer state;
	private String code;
}
2.新建一个User.hbm.xml文件,实现实体类与数据库的关联。



    

	
		
			
		
		
		
		
		
		
		
		
		
	
3.接下来实现Dao层的操作。设计一个类UserDao,继承了HibernateDaoSupport类。

package cn.itcast.shop.user.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.itcast.shop.user.vo.User;

/**
 * 用户模块持久层代码
 * 
 * @author happy
 * 
 */
public class UserDao extends HibernateDaoSupport {
	// 按名称查询是否有该用户:
	public User findByUsername(String username) {
		String hql = "from User where username = ?";
		List list = this.getHibernateTemplate().find(hql, username);
		if (list != null && list.size() > 0) {
			return list.get(0);
		}
		return null;
	}

	// 注册用户存入数据库代码实现
	public void save(User user) {
		this.getHibernateTemplate().save(user);
	}
}

4.接下来Service层的操作。

package cn.itcast.shop.user.service;

import org.springframework.transaction.annotation.Transactional;

import cn.itcast.shop.user.dao.UserDao;
import cn.itcast.shop.user.vo.User;
import cn.itcast.shop.utils.MailUitls;
import cn.itcast.shop.utils.UUIDUtils;

/**
 * 用户模块业务层代码
 * 
 * @author happy
 * 
 */
@Transactional
public class UserService {
	// 注入UserDao
	private UserDao userDao;

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

	// 按用户名查询用户的方法:
	public User findByUsername(String username) {
		return userDao.findByUsername(username);
	}

	//业务层完成用户注册代码:
	public void save(User user) {
		//将数据存入到数据库
		user.setState(0);//0代表用户未激活,1代表用户已经激活
		String code=UUIDUtils.getUUID()+UUIDUtils.getUUID();
		user.setCode(code);
		userDao.save(user);
	}

}
5.定义UserAction类。

package cn.itcast.shop.user.action;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import cn.itcast.shop.user.service.UserService;
import cn.itcast.shop.user.vo.User;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
 * 用户模块Action的类
 * 
 * @author happy
 * 
 */
public class UserAction extends ActionSupport implements ModelDriven {
	// 模型驱动使用的对象
	private User user = new User();
	// 注入UserService
	private UserService userService;

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

	public User getModel() {
		return user;
	}

	/**
	 * 跳转到注册页面的执行方法
	 */
	public String registPage() {
		return "registPage";
	}

	/**
	 * AJAX进行一步校验用户名的执行方法
	 * 
	 * @throws IOException
	 */
	public String findByName() throws IOException {
		// 调用Service进行查询
		User existUser = userService.findByUsername(user.getUsername());
		// 获得response对象,向叶面输出:
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("text/html;charset=UTF-8");
		// 判断
		if (existUser != null) {
			// 查询到该用户:用户名已经存在
			response.getWriter().println("用户名已经存在");
		} else {
			// 没查询到该用户:用户名可以使用
			response.getWriter().println("用户名可以使用");
		}
		return NONE;
	}

	/**
	 * 用户注册的方法:
	 */
	public String regist() {
		userService.save(user);
		this.addActionMessage("注册成功,情趣邮箱激活!");
		return "msg";
	}
}
6.前台的jsp

      首先引用struts2的标签


<%@ taglib uri="/struts-tags" prefix="s"%>

      然后,在页面设计中调用user_regist.action方法即可

        其他一些边边角角的基础代码没有贴出来,大致框架就是这样。






你可能感兴趣的:(【SSH】)