`

spring hibernate struts 整合开发(6) - 额外功能

阅读更多
一. spring hibernate struts 整合开发(1) - 搭建环境
二. spring hibernate struts 整合开发(2) - Spring集成的Hibernate编码和测试
三. spring hibernate struts 整合开发(3) - Struts集成Spring
四. spring hibernate struts 整合开发(4) - Struts与Spring集成2
五. spring hibernate struts 整合开发(5) - Hibernate二级缓存
六. spring hibernate struts 整合开发(6) - 额外功能


Spring提供的CharacterEncoding和OpenSessionInView功能。

这里通过一个表单页面,提交数据,由struts封装数据,并由action调用业务层持久化数据,来引出乱码问题。

1. 创建index.jsp页面

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html:form action="/person/dispose">
	<html:text property="name" />
	<html:hidden property="method" value="add" />
	<html:submit value="Submit" />
</html:form>


2. 配置struts-config.xml

添加action和form-bean:

	<form-beans>
		<form-bean name="personForm" type="com.john.web.formbean.PersonForm" />
	</form-beans>
	<action-mappings>
		<!-- Let the action be managed by spring, thus type property is eliminated -->
		<action path="/person/dispose" name="personForm" scope="request" parameter="method" validate="false">
			<forward name="message" path="/WEB-INF/pages/message.jsp"/>
		</action>
	</action-mappings>


Note: 这里的action和form-bean都是用type来表示类的全限定名的,不是className。

3. 配置beans.xml

添加action bean:
<bean name="/person/dispose" class="com.john.web.action.PersonDisposeAction"/>


4. 创建PersonForm和PersonDispatchAction类

public class PersonForm extends ActionForm {
   private Integer id;
   private String name;
   // getters and setters are omitted
}


// Utilize DispatchAction to execute specified method
public class PersonDisposeAction extends DispatchAction{
	// Since this action is managed by spring, we could
	// inject the business bean
	@Resource PersonService personService;
	
	public ActionForward add(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		PersonForm personForm = (PersonForm)form;
		personService.save(new Person(personForm.getName()));
		request.setAttribute("result", "Saved successfully!");
		return mapping.findForward("message");
	}
}


5. 创建结果显示页面message.jsp

<body>
${result}
</body>


开启服务,打开index.jsp页面,输入名称,提交。

6. 使用spring解决struts1.3乱码问题

如果输入的名称是中文,保存到数据库后是乱码,可以使用spring提供的方法:

在web.xml加入:
  <filter>
  	<filter-name>encoding</filter-name>
  	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>UTF-8</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>encoding</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>


7. 使用spring解决hibernate因session关闭导致的延迟加载例外问题

在web.xml加入:
  <filter>
  	<filter-name>OpenSessionInViewFilter</filter-name>
  	<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>OpenSessionInViewFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>


整理自:传智播客spring教程
分享到:
评论

相关推荐

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

    最近温习ssh2整合编程,顺便浏览下struts2有什么更新的消息,下载了新版本的struts2的2.1.8.1版,使用的是MyEclipse8.0开发,但是问题就随之而来了。MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5...

    struts+spring+hibernate基础整合包+数据库Mysql+C3p0

    资源中包含ssh整合的基础java包可以进行基础开发,如果需要额外的功能,则需加入对应依赖的包。数据库的链接包是MySQl数据库,链接使用的C3P0 SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种...

    Struts2_Spring_Hibernate整合JAR包

    SSH三大框架整合开发的基础JAR包!共31个jar文件,基本的开发足够啦!高级开发需额外添加jar包! Struts2的版本:2.3.15 Spring的版本:3.1.1 Hibernate的版本:3.3.2

    Spring-Reference_zh_CN(Spring中文参考手册)

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.3.2.1. InternalResourceViewResolver 14.3.2.2. ResourceBundleViewResolver 14.4. Velocity和FreeMarker 14.4.1. ...

    Spring 2.0 开发参考手册

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...

    开源框架 Spring Gossip

    第一个 Struts 程式 在 Struts 中整合 Spring 第一个 JSF 程式 在 JSF 中整合 Spring &lt;br&gt; 其它 Spring 提供了简化且一致的方式,让您在使用一些 API 或服务时更加简单。 远程...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    Spring API

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...

    Spring中文帮助文档

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...

    本科毕业设计开题报告(食得客快餐店订餐系统的设计与实现)

    MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。因此在开发本系统时我把它...

Global site tag (gtag.js) - Google Analytics