Spring集成Struts与Hibernate入门详解

网友投稿 225 2023-06-03


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

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 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 AutoTCDlTKo-generated method stub

getHbernateTemplate().update(action);

}

public void delete(User userAction) {

// TODO Auto-generated method stub

getHbernateTemplate().delete(userAction);

}

@SuppressWarnings("unchecked")

public List 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"%>

第二个页面

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

pageEncoding="UTF-8"%>

${name}

${password}

配置文件

添加全局web配置文件

SpringSS

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

struts2

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

org.springframework.web.context.ContextLoaderListener

struts2

/*

Spring配置文件

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

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

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

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

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

http://springframework.org/schema/aop

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

com.mysql.jdbc.Driver

jdbc:mysql://localhost/spring

root

123456

com.action.User

org.hibernate.dialect.MySQLDialect

true

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

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

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

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

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

http://springframework.org/schema/aop

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

com.mysql.jdbc.Driver

jdbc:mysql://localhost/spring

root

123456

com.action.User

org.hibernate.dialect.MySQLDialect

true

Struts配置文件

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

/user.jsp

结果显示

输入页面

结果页面

数据库

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

总结

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序 跳转传参数与传对象详解及实例代码
下一篇:struts2框架入门
相关文章

 发表评论

暂时没有评论,来抢沙发吧~