`
z276356445t
  • 浏览: 152309 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Struts2+Spring2.5.6+Hibernate3+Freemarker整合(二)

阅读更多
上一篇文章继续接下来的配置,上次已经将spring与hibernate的整合做了一个简单的配置,现在开始融入struts2,struts2采用零配置,所以必须得首先配置struts2.xml。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<!-- 国际化编码 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<!-- 定位视图资源的根路径。默认值为/WEB-INF/content -->
	<constant value="/WEB-INF/templates" name="struts.convention.result.path" />
	<!-- 指定convention扫描以xxx结尾的包 -->
	<constant value="action" name="struts.convention.package.locators" />
	<!-- 是否将Action类转换成小写 -->
	<constant value="false" name="struts.convention.package.lowercase" />
	<!-- 是否将actionName分割,去掉action部分,以大写字母作为分割 -->
	<constant value="" name="struts.convention.action.name.separator" />
	<!-- 设置默认的父包 -->
	<constant value="MAIN" name="struts.convention.default.parent.package" />
	<package name="MAIN" extends="struts-default" namespace="/">
	</package>
</struts>    

struts.xml的一些零配置变量已经注册好,既然使用的spring,那当然得让spring来帮我们管理action咯,不然就失去s2sh整合的意义咯。下面我们来看看如何让struts2融入到这个框架中,首先得在lib包中加上struts2-convention-plugin-2.2.1.jar与struts2-spring-plugin-2.1.8.1.jar两个包,分别是零配置与spring插件。接下来配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:applicationContext*.xml</param-value>
	</context-param>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

配置文件已经写好了,下面来写一个Action类
/**
 * 
 */
package com.action;

import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.opensymphony.xwork2.ActionSupport;
import com.service.HibernateTemplateService;

/**
 * 
 * @author 张廷 2011-3-19下午07:36:40
 * 
 */
@ParentPackage("MAIN")
@Action("RegistAction")
@Results( { @Result(name = "list", location = "list.ftl", type = "freemarker") })
@Component("RegistAction")
@Scope("prototype")
public class RegistAction extends ActionSupport {

	private static final long serialVersionUID = 773060530483225473L;

	@Resource(name = "hibernateTemplateServiceImpl")
	private HibernateTemplateService hibernateTemplateService;

	private Student student;

	private Logger logger = Logger.getLogger(this.getClass());

	private List<Student> stuList;

	@SuppressWarnings("unchecked")
	public String findStu() {
		stuList = hibernateTemplateService.findAllStu("from Student");
		return "list";
	}


	public List<Student> getStuList() {
		return stuList;
	}

	public void setStuList(List<Student> stuList) {
		this.stuList = stuList;
	}

	public HibernateTemplateService getHibernateTemplateService() {
		return hibernateTemplateService;
	}

	public void setHibernateTemplateService(HibernateTemplateService hibernateTemplateService) {
		this.hibernateTemplateService = hibernateTemplateService;
	}

}

一个简单Action类已经写好了,在这说明一下其中的注释,@ParentPackage是指明继承于哪个包,@Action注册一个action组件,在注册action中的name一定要和@Component的组件名相同,不然Spring是找不到相应的action与之对应的。因为struts2本身就支持freemarker,而且freemarker是struts2的依赖包,固然struts2支持freemarker的返回类型,所以在Result中我们将返回的类型设置为freemarker,视图则指定为相应的ftl文件。万事具备,只欠freemarker模板了,下面来看看如何写一个freemarker。在WEB-INF下创建一个templates文件夹,在该文件夹目录下创建list.ftl文件。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>list display</title>
</head>
	<body>
	<#--当前时间:${date}-->
		<table border=1>
            <tr>
	            <th>学号</th>
	            <th>姓名</th>
	            <th>年龄</th>
	            <th>生日</th>
	            <th>性别</th>
            </tr>
			<#list stuList as stu>
			<tr>
				<td>${stu.stuNumber}</td>
				<td>${stu.stuName}</td>
				<td>${stu.age}</td>
				<td>${stu.birth}</td>
				<td>${stu.sex.sexName}</td>
			</tr>
			</#list>
		</table>
     </body>
</html>

这只是一个简单的freemarker模版,这不做深入讲解。当然还要配置相应的freemarker.properties文件,不然出现乱码哦。
freemarker.properties
template_update_delay=1
datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
number_format=0.######;
boolean_format=true,false
whitespace_stripping=true
locale=zh_CN
default_encoding=UTF-8
url_escaping_charset=UTF-8

classic_compatible=true 

一切都已就绪,访问一下试试看吧,输入http://localhost:8080/S2SH_FreeMarker/RegistAction!findStu,看一下结果吧。

结果是已经成功了,s2sh+freemarker的整合就已经完成了。
  • 大小: 31.8 KB
2
1
分享到:
评论
5 楼 781063931 2013-03-11  
很好的资料,学习下,楼主能把你的源码发给我一份吗?谢谢~  我的邮箱:781063931@qq.com
4 楼 amwons 2012-04-02  
很奇怪,配置文件的内容不变,就是先删掉一些事务管理的内容就可以了,后来再加上事务管理的配置信息也OK 。问题虽然解决了,但没明白是哪里出的问题,郁闷
3 楼 amwons 2012-04-02  
请教一下,我按您写的步骤,自己配置了一下sshf,在输入输入http://localhost:8080/S2SH_FreeMarker/RegistAction!findStu却出现下面的错误提示:
NoSuchMethodException: $Proxy15.findStu()

不知道是哪里的配置出了问题。能指教一下吗?谢谢
2 楼 z276356445t 2011-03-29  
stevensinclair 写道
/**
 * 
 */
package com.action;

import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.opensymphony.xwork2.ActionSupport;
import com.service.HibernateTemplateService;

/**
 * 
 * @author 张廷 2011-3-19下午07:36:40
 * 
 */
@ParentPackage("MAIN")  //可以不要
@Action("RegistAction") //可以不要
@Results( { @Result(name = "list", location = "list.ftl", type = "freemarker") })
@Component("RegistAction")//可以不要
@Scope("prototype") //可以不要
public class RegistAction extends ActionSupport {

	

由于采用的是struts2的零配置,在struts2.xml中并没有声明Action,所以在文件中得用@Action来映射这个类了,@Component是将此Action是一个组件,是将该Action交给Spring来管理,@Scope则是指明此Action的生命周期,每访问此Action则由Spring来创建一个实例。@ParentPackage是根据需要来选择吧。只不过还是谢谢你的提醒。
1 楼 stevensinclair 2011-03-28  
/**
 * 
 */
package com.action;

import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.opensymphony.xwork2.ActionSupport;
import com.service.HibernateTemplateService;

/**
 * 
 * @author 张廷 2011-3-19下午07:36:40
 * 
 */
@ParentPackage("MAIN")  //可以不要
@Action("RegistAction") //可以不要
@Results( { @Result(name = "list", location = "list.ftl", type = "freemarker") })
@Component("RegistAction")//可以不要
@Scope("prototype") //可以不要
public class RegistAction extends ActionSupport {

	private static final long serialVersionUID = 773060530483225473L;

	@Resource(name = "hibernateTemplateServiceImpl")
	private HibernateTemplateService hibernateTemplateService;

	private Student student;

	private Logger logger = Logger.getLogger(this.getClass());

	private List<Student> stuList;

	@SuppressWarnings("unchecked")
	public String findStu() {
		stuList = hibernateTemplateService.findAllStu("from Student");
		return "list";
	}


	public List<Student> getStuList() {
		return stuList;
	}

	public void setStuList(List<Student> stuList) {
		this.stuList = stuList;
	}

/**
	public HibernateTemplateService getHibernateTemplateService() {
		return hibernateTemplateService;
	}

	public void setHibernateTemplateService(HibernateTemplateService hibernateTemplateService) {
		this.hibernateTemplateService = hibernateTemplateService;
	}**/

}

相关推荐

    struts2+spring2.5.6+hibernate3.0+ext整合开发

    在"struts2+spring2.5.6+hibernate3.0+ext"的整合开发中,通常会使用Spring来管理Struts2的Action类,实现业务逻辑的解耦。同时,Spring可以作为Hibernate的事务管理器,处理数据库操作。Ext则用于创建前端用户界面...

    Struts2+Spring2.5.6+Hibernate3 用到的jar包

    Struts2+Spring2.5.6+Hibernate3 用到的jar包 antlr-2.7.6.jar asm.jar backport-util-concurrent.jar cglib-nodep-2.1_3.jar commons-collections-3.1.jar commons-dbcp.jar commons-fileupload-1.2.1.jar commons-...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合

    ### Struts2.1.6 + Spring2.5.6 + Hibernate3.3.1 整合 在本文中,我们将详细介绍如何将Struts2.1.6、Spring2.5.6以及Hibernate3.3.1进行整合,并构建一个简单的MVC应用。通过这个过程,读者将了解到这三种框架的...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解

    在深入探讨Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解的实现细节之前,我们先回顾一下这三个框架的基本概念及其在JavaEE企业级开发中的作用。 ### Struts2框架 Struts2是一个开源的Web应用框架,它遵循MVC...

    struts2.1.8+spring2.5.6+hibernate3.3.2整合项目开发

    在"struts2.1.8+spring2.5.6+hibernate3.3.2整合项目开发"中,首先我们需要理解这三个框架的基本概念和用法: 1. **Struts2**:Struts2是一个基于MVC设计模式的Web应用框架,用于构建可维护性和可扩展性高的应用...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解,涉及的是JavaEE开发中常见的SSH框架(Struts2、Spring、Hibernate)的整合,尤其强调了注解在开发中的应用,旨在简化配置,提高开发效率。SSH框架的组合在...

    Struts2.0.14+Spring2.5.6+Struts.1.3.8+Hibernate3.2

    Struts2.0.14、Spring2.5.6、Struts1.3.8以及Hibernate3.2是四个非常关键的Java Web开发框架,它们在2000年代末到2010年代初广泛应用于企业级应用中。这个压缩包文件包含了这些框架的核心组件,对于学习和理解SSH...

    SSH框架配置Struts2.1.6+Spring2.5.6+Hibernate3.3.1 2

    - 将Struts2、Spring和Hibernate的配置文件整合在一起,实现请求分发、业务逻辑处理和数据持久化。 - 在Struts2的Action中,可以通过Spring的@Autowired注解来注入服务层对象,实现依赖注入。 - 使用Hibernate的...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)

    在这个全注解实例中,我们将深入理解如何利用Struts2.1.6、Spring2.5.6和Hibernate3.3.1构建应用程序,避免传统的XML配置文件,转而采用注解方式来提高开发效率。 **开发环境**: - JDK 1.6.0_18 - Eclipse 3.2.1 -...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例

    在Spring2.5.6中,`spring-context`、`spring-beans`、`spring-aop`等核心模块是基础,`struts2-spring-plugin`则是Struts2与Spring整合的关键,确保Action类能在Spring容器中被管理。 **Hibernate**作为持久层框架...

    struts2.14+hibernate3.3.2+spring2.5.6整合

    在“Struts2.14+Hibernate3.3.2+Spring2.5.6整合”项目中,首先我们需要了解每个框架的核心功能和特点: 1. Struts2:作为MVC(模型-视图-控制器)架构的一部分,Struts2负责接收用户请求,处理业务逻辑,并将结果...

    struts2+Hibernate3.3+spring2.5.6+extjs3.2 图书管理系统

    《基于Struts2+Hibernate3.3+Spring2.5.6+ExtJS3.2的图书管理系统详解》 在当今信息化社会,图书管理系统的构建是图书馆自动化、网络化的重要一环。本系统采用了一套经典的Java技术栈,即Struts2作为MVC框架、...

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合jar包.zip

    Struts2、Hibernate和Spring是Java开发中三大主流框架,它们各自解决应用程序的不同问题...总的来说,Struts2.1.6、Hibernate3.3.1和Spring2.5.6的整合是Java EE开发中一个经典的架构模式,至今仍被许多项目所采用。

    ssh2(struts2+spirng2.5.6+hibernate3.2)

    SSH2 是一个流行的Java开发框架组合,由Struts2、Spring2.5.6和Hibernate3.2三个组件构成。这个框架提供了强大的功能,用于构建高效、可维护的企业级Web应用。 **Struts2** 是一个基于MVC(Model-View-Controller)...

    Struts2[1].1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解图文教程.doc

    至少需要7个核心jar包,包括commons-logging、freemarker、ognl、struts2-core、xwork以及两个特定于Struts2的插件:struts2-convention-plugin(用于注解支持)和struts2-spring-plugin(用于与Spring整合)。...

    Struts2+Spring2+Hibernate3+Annotation所需JAR包

    ### Struts2+Spring2+Hibernate3+Annotation所需JAR包详解 在Java Web开发领域,Struts2、Spring2和Hibernate3是三个非常重要的框架,它们分别负责Web层、业务逻辑层和服务持久化层的功能实现。为了更好地整合这三...

    Struts2.1.6-Spring2.5.6-Hibernate3.3.2

    Struts2.1.6、Spring2.5.6和Hibernate3.3.2是三个在Java Web开发中广泛使用的开源框架,它们分别是MVC框架、IoC/DI容器和对象关系映射(ORM)框架的代表。这些框架的组合在当时是非常流行的,用于构建高效、可扩展和...

    struts2.1.6+spring2.5+hibernate3.3.1

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1 是一个经典的JavaEE企业级开发框架组合,通常被称为SSH框架。这个组合在过去的开发中被广泛使用,提供了MVC(Model-View-Controller)架构、依赖注入(DI)以及持久化管理的...

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在...

Global site tag (gtag.js) - Google Analytics