Spring集成Struts与Hibernate入门详解

前言

最近将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。版本有点老,我用最新版的始终集成不正确。等搞好了再升级版本。

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

集成

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://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h1>测试</h1>

<s:form action="user">

<s:textfield name="name" label="username"></s:textfield>

<s:textfield name="password" label="password"></s:textfield>

<s:submit></s:submit>

</s:form>

</body>

</html>

第二个页面

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h1>妈的智障</h1>

${name}

${password}

</body>

</html>

配置文件

添加全局web配置文件

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

<display-name>SpringSS</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

<filter>

<filter-name>struts2</filter-name>

<filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>

</filter>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

Spring配置文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName">

<value>com.mysql.jdbc.Driver</value>

</property>

<property name="url">

<value>jdbc:mysql://localhost/spring</value>

</property>

<property name="username">

<value>root</value>

</property>

<property name="password">

<value>123456</value>

</property>

</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

<property name="dataSource">

<ref local="dataSource"/>

</property>

<property name="annotatedClasses">

<list>

<value>com.action.User</value>

</list>

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

<prop key="show_sql">true</prop>

</props>

</property>

</bean>

<bean id="userDao" class="com.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可以抽象出来,只需要单次注入,等以后再完善。

总结

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

以上是 Spring集成Struts与Hibernate入门详解 的全部内容, 来源链接: utcz.com/p/211704.html

回到顶部