Spring集成Struts与Hibernate入门详解

时间:2021-05-20

前言

最近将Spring,Struts,Hiberbate基础已经学习完成。想自己把这三个框架集成一下,然后再写一个后台管理网站练练手。Spring的作用是依赖注入,而Struts是显示层的东西,这两个框架集成后是什么样子。一边学习,一边记录。上车。

Spring集成所需jar包

首先,Spring集成Struts,那么applicationContext.xml和struts.xml,web.xml肯定是不能少的。前面两个是Spring和Struts的配置文件,后面一个是整个web的全局配置文件。在每个配置文件中应该怎么配置,怎么相互关联呢。其实就是将Struts中指定的Action 类为Spring注入的类。

三大框架集成开发并不难,难的地方在于各个包的依赖要搞清楚,版本之间的差异也是一点。下面列出Spring集成Struts所依赖的包:

依赖包

此处所有依赖为Struts2.0和Spring3.0。版本有点老,我用最新版的始终集成不正确。等搞好了再升级版本。

Number Package Platform Function 1 commons-fileupload-1.2.2.jar common 文件上传功能 2 commons-io-2.0.1.jar common 3 commons-lang-2.5.jar common 4 commons-logging-1.1.1.jar common 日志 5 freemarker-2.3.16.jar Struts 模版引擎 6 javassist-3.11.0.GA.jar common 动态编程 7 ognl-3.0.1.jar common 表达式语言,提供属性,方法调用 8 org.springframework.asm-3.1.1.RELEASE.jar spring Spring独立的asm程序,Spring2.5.6的时候需要asmJar 包3.0.6开始提供他自己独立的asmJar。暂时我自己也不懂这事干嘛的。 9 org.springframework.beans-3.1.1.RELEASE.jar spring Spring IOC实现 10 org.springframework.context-3.1.1.RELEASE.jar spring Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等 org.springframework.context.support-3.1.1.RELEASE.jar spring Spring-context的扩展支持,用于MVC方面 12 org.springframework.core-3.1.1.RELEASE.jar spring Spring 核心工具包 13 org.springframework.expression-3.1.1.RELEASE.jar spring Spring表达式语言 14 org.springframework.web-3.1.1.RELEASE.jar spring Spring Web工具包 15 org.springframework.web.servlet-3.1.1.RELEASE.jar spring 基于servlet的MVC实现 16 struts2-core-2.2.3.1.jar struts Struts核心库 17 xwork-core-2.2.3.1.jar struts xwork核心库 18 struts2-spring-plugin-2.2.3.1.jar struts Spring与Struts相互集成 19 antlr-2.7.2.jar common 语言语法分析器 20 aopalliance-1.0.jar common 面向切面编程接口 21 commons-dbcp.jar common DBCP数据库连接池 22 commons-pool.jar common DBCP数据库连接池 23 dom4j-1.6.1.jar hibernate 灵活的xml框架 24 hibernate-jpa-2.0-api-1.0.1.Final.jar hibernate 注解使用类 25 hibernate3.jar hibernate 数据库核心包 26 jta-1.1.jar hibernate 分布式事务处理 27 mysql-connector-java-5.1.18-bin.jar hibernate jdbc连接器 28 org.springframework.jdbc-3.1.1.RELEASE.jar hibernate spring与jdbc集成 29 org.springframework.orm-3.1.1.RELEASE.jar hibernate 数据库集成 30 org.springframework.transaction-3.1.1.RELEASE.jar hibernate 事务集成 31 slf4j-api-1.6.1.jar common 日志系统

集成

model层

新建Usermodel,如下:

package com.action;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entity@javax.persistence.Table(name="user")public class User implements Serializable{ private static final long serialVersionUID = 1L; @Id @GeneratedValue @Column(name="id") public int id; @Column(name="name") public String name; @Column(name="password") public String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [name=" + name + ", password=" + password + "]"; }}

dao层

新建dao接口:

package com.dao.impl;import java.util.List;import com.action.User;import com.action.UserAction;public interface UserDao { public void save(User action); public User getUser(int id); public void update(User action); public void delete(User userAction); public List<User> findByName(String name);}

实现dao接口

package com.dao.impl;import java.util.List;import org.hibernate.SessionFactory;import org.springframework.orm.hibernate3.HibernateTemplate;import com.action.User;import com.action.UserAction;public class UserDaoImpl implements UserDao { private SessionFactory sessionFactory; private HibernateTemplate mHibernateTemplate; public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public HibernateTemplate getHbernateTemplate() { if (mHibernateTemplate==null) { mHibernateTemplate = new HibernateTemplate(sessionFactory); } return mHibernateTemplate; } public void save(User action) { // TODO Auto-generated method stub getHbernateTemplate().save(action); } public User getUser(int id) { // TODO Auto-generated method stub User userAction = getHbernateTemplate().get(User.class, new Integer(id)); return userAction; } public void update(User action) { // TODO Auto-generated method stub getHbernateTemplate().update(action); } public void delete(User userAction) { // TODO Auto-generated method stub getHbernateTemplate().delete(userAction); } @SuppressWarnings("unchecked") public List<User> findByName(String name) { // TODO Auto-generated method stub String queryString = "from User u where u.name like ?"; return getHbernateTemplate().find(queryString); } }

view层

显示以及action

/** * */package com.action;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.dao.impl.UserDaoImpl;import com.opensymphony.xwork2.ActionSupport;/** * @author kevin * */public class UserAction extends ActionSupport { public String name; public String password; private UserDaoImpl userDao; public String getName() { return name; } public void setUserDao(UserDaoImpl userDao) { this.userDao = userDao; } public UserDaoImpl getUserDao() { return userDao; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String execute() throws Exception { // 不能直接new 得从applicationContext中获取 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/xml;charset=UTF-8"); User user = new User(); user.name = name; user.password = password; userDao.save(user); response.getWriter().write(user.toString()); return "success"; }}

第一个页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://.dao.impl.UserDaoImpl"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean></beans>

Struts配置文件

<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="struts.objectFactory" value="spring" /> <package name="default" extends="struts-default"> <action name="user" class="userAction"> <result name="success">/user.jsp</result> </action> </package></struts>

结果显示

输入页面

结果页面

数据库

最后看起来,还是不难的嘛。其实UserDao可以抽象出来,只需要单次注入,等以后再完善。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章