`

spring 3.0.5 + jotm 实现的的spring mvc 的例子

阅读更多

1.web.xml

 

<servlet>
		<servlet-name>Dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Dispatcher</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

 2.加入编码格式

<filter>
		<filter-name>Set Character 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>Set Character Encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 3.由于spring 3.0 里不在提供对jotm的封装,我们可以手动的编写加入代码如下

 

/*
 * Copyright 20010-2011
 */

package com.demo.spring.jotm;

import javax.naming.NamingException;
import javax.transaction.SystemException;

import org.objectweb.jotm.Current;
import org.objectweb.jotm.Jotm;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;

/**
 * @author fenglingcorp
 */
@SuppressWarnings("rawtypes")
public class JotmFactoryBean implements FactoryBean, DisposableBean {

	private Current jotmCurrent;

	private Jotm jotm;

	public JotmFactoryBean() throws NamingException {
		// Check for already active JOTM instance.
		this.jotmCurrent = Current.getCurrent();

		// If none found, create new local JOTM instance.
		if (this.jotmCurrent == null) {
			// Only for use within the current Spring context:
			// local, not bound to registry.
			this.jotm = new Jotm(true, false);
			this.jotmCurrent = Current.getCurrent();
		}
	}

	public void setDefaultTimeout(int defaultTimeout) {
		this.jotmCurrent.setDefaultTimeout(defaultTimeout);
		// The following is a JOTM oddity: should be used for demarcation
		// transaction only,
		// but is required here in order to actually get rid of JOTM's default
		// (60 seconds).
		try {
			this.jotmCurrent.setTransactionTimeout(defaultTimeout);
		} catch (SystemException ex) {
			// should never happen
		}
	}

	public Jotm getJotm() {
		return this.jotm;
	}

	public Object getObject() {
		return this.jotmCurrent;
	}

	public Class getObjectType() {
		return this.jotmCurrent.getClass();
	}

	public boolean isSingleton() {
		return true;
	}

	public void destroy() {
		if (this.jotm != null) {
			this.jotm.stop();
		}
	}

}

 4.加入jotm事务和xpool数据源

<!-- jotm -->
	<bean id="jotm" class="com.demo.spring.jotm.JotmFactoryBean" />

	<bean id="transactionManager"
		class="org.springframework.transaction.jta.JtaTransactionManager">
		<property name="userTransaction" ref="jotm" />
	</bean>

	<!-- StandardXAPoolDataSourc 数据源 -->
	<bean id="dataSource" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource">
		<property name="dataSource">
			<bean id="innerDataSource" class="org.enhydra.jdbc.standard.StandardXADataSource">
				<property name="transactionManager">
					<ref local="jotm" />
				</property>
				<property name="driverName">
					<value>${datasource.driverClassName}</value>
				</property>
				<property name="url">
					<value>${datasource.g_db_w_url}</value>
				</property>
				<property name="user">
					<value>${datasource.g_db_w_username}</value>
				</property>
				<property name="password">
					<value>${datasource.g_db_w_password}</value>
				</property>
			</bean>
		</property>
		<property name="user">
			<value>${datasource.g_db_w_username}</value>
		</property>
		<property name="password">
			<value>${datasource.g_db_w_password}</value>
		</property>
		<property name="maxSize">
			<value>5</value>
		</property>
		<property name="minSize">
			<value>2</value>
		</property>
	</bean>

 5.加入aop支持

<aop:config>
		<aop:pointcut id="serviceMethods"
			expression="execution(* com.demo.spring.dao.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
	</aop:config>
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="add*" rollback-for="Exception" />
			<tx:method name="insert*" rollback-for="Exception" />
			<tx:method name="save*" rollback-for="Exception" />
			<tx:method name="update*" rollback-for="Exception" />
			<tx:method name="del*" rollback-for="Exception" />
			<tx:method name="remove*" rollback-for="Exception" />
			<tx:method name="*" read-only="true" rollback-for="Exception" />
		</tx:attributes>
	</tx:advice>

编写登入的类

package com.demo.spring.actions;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.demo.spring.forms.LoginForm;
import com.demo.spring.service.LoginServiceInterface;
import com.demo.spring.util.Constants;

@SuppressWarnings("deprecation")
public class LoginAction extends SimpleFormController {

	private LoginServiceInterface loginservice;

	public LoginServiceInterface getLoginservice() {
		return loginservice;
	}

	public void setLoginservice(LoginServiceInterface loginservice) {
		this.loginservice = loginservice;
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		LoginForm loginForm = (LoginForm) command;
		if (isValid(loginForm)) {
			request.getSession().setAttribute(Constants.USERNAME_KEY,
					loginForm.getUsername());
			request.getSession().getServletContext()
			.getRequestDispatcher("/list.do?method=list")
			.forward(request, response);
			return null;
		} else {
			Map modle = errors.getModel();
			modle.put("loginForm", loginForm);
			return new ModelAndView(getFormView(), modle);
		}
	}

	public boolean isValid(LoginForm loginForm) {
		if (loginservice.isValid(loginForm.getUsername(),
				loginForm.getPassword())) {
			return true;
		} else {
			return false;
		}
	}
}

  

完整代码在附件中

5
10
分享到:
评论
1 楼 果果啊啊 2015-07-07  
jar包呢

相关推荐

    MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案

    本方案提供了一种集成化的开发环境,即"MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案",它将多个流行的技术框架整合在一起,为Web应用程序开发提供了一个强大的平台...

    Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解

    【Spring MVC 3.0.5 + Spring 3.0.5 + MyBatis3.0.4 全注解实例详解】 Spring MVC 3.0.5 是Spring框架的一个重要版本,它引入了对RESTful风格的支持,使得构建Web应用更加灵活。REST(Representational State ...

    Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解完整版

    7、Spring MVC 3.0.5 详解Spring MVC 是 Spring 框架的一部分,用于构建 Web 应用。3.0.5 版本引入了对 RESTful 风格的支持,使得 API 设计更加简洁。通过注解,如 `@Controller`、`@RequestMapping`、`@Autowired` ...

    Spring Framework 3.0.5+Spring Security 3.0.5+ mybatis 3.0.5+ Struts 2.2.3整合代码

    标题中的"Spring Framework 3.0.5+Spring Security 3.0.5+ mybatis 3.0.5+ Struts 2.2.3整合代码"涉及到四个关键的Java开发框架,它们分别是Spring Framework、Spring Security、MyBatis和Struts 2。这四个框架在...

    Spring+MVC+3.0.5+Spring+3.0.5+MyBatis3.0.4全注解实例详解

    在本教程中,我们将深入探讨如何使用Spring、Spring MVC 3.0.5以及MyBatis 3.0.4这三个流行的Java框架构建一个全注解的Web应用程序。这个实例详解将帮助开发者理解如何有效地集成这三个组件,实现高效的数据访问和...

    Spring3.0.5+Mybatis3.0.5+Struts2.0.6整合

    本文将深入探讨如何将Spring 3.0.5、Mybatis 3.0.5和Struts2.0.6这三个流行框架整合在一起,以实现一个完整的MVC(Model-View-Controller)架构。这些框架分别负责依赖注入、持久层操作和业务逻辑控制,通过它们的...

    基于Django3.0.5+Python3.7+SQLite的博客系统源码.zip

    基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于...

    Spring 3.0.5+MyBatis3.0.4整合例子

    总结来说,"Spring 3.0.5+MyBatis3.0.4整合例子"展示了如何利用这两个框架的优势,实现一个可扩展、易维护的企业级应用。这个例子涵盖了Spring的DI和AOP特性,以及MyBatis的SQL映射和数据访问能力,是学习和实践Java...

    CXF2.7+SPRING3.0.5+HIBERNATE3.6final+STRUTS2

    标题中的"CXF2.7+SPRING3.0.5+HIBERNATE3.6final+STRUTS2"代表了一个集成开发环境,其中包含了四个关键的技术框架:Apache CXF 2.7、Spring 3.0.5、Hibernate 3.6 Final以及Struts2。这些框架在Java Web开发中起着...

    JSP+Struts2.2.1+Spring3.0.5+Hibernate3学习示例

    通过学习这个JSP+Struts2.2.1+Spring3.0.5+Hibernate3的学习示例,你可以掌握如何在实际项目中有效地整合这些框架,理解它们如何协同工作以提升开发效率和代码质量。这将为你在Java Web开发领域打下坚实的基础。

    Struts2 2.1.8 + Spring 3.0.5 + Hibernate 3.6.0 + JPA2 jar

    Struts2 2.1.8 + Spring 3.0.5 + Hibernate 3.6.0 + JPA2的jar包整合到一起了 里面还有JSON的jar包,是SS2H+JPA的学习必备. 这里面都是jar包,如果想查看web.xml,struts.xml,application.xml,persistense.xml的写法,...

    Spring3.0.5+Hibernate3.3 开发用到的lib

    本资源包"Spring3.0.5+Hibernate3.3 开发用到的lib"显然是一组用于构建基于Spring MVC和Hibernate的项目的库文件集合。下面将详细介绍这两个框架的版本3.0.5和3.3以及它们的关键特性。 **Spring框架3.0.5** Spring...

    jsf1.2+Spring3.0.5+Mybatis

    Spring 3.0.5是Spring框架的一个稳定版本,它支持JSF集成,允许开发者利用Spring的强大功能来处理服务层和数据访问层的逻辑。Spring的IoC(Inversion of Control,控制反转)容器使得对象之间的依赖关系可以通过配置...

    Struts 1.3.10+Spring3.0.5+Mybatis3.1.1框架整合全部jar包

    Struts 1.3.10、Spring 3.0.5 和 Mybatis 3.1.1 是三个经典的Java Web开发框架,它们在企业级应用中被广泛使用。这三者的整合使得开发者能够实现MVC(Model-View-Controller)架构、依赖注入以及灵活的数据持久化。...

    zkoss CE6.0+spring3.0.5+hibernate3.6+oracle10g+mysql5最全包

    这是一个关于企业级应用开发的集成环境包,包含了前端框架ZKoss CE6.0、后端框架Spring3.0.5、ORM框架Hibernate3.6,以及两种数据库Oracle10g和MySQL5。这个组合是早期Java开发中的常见配置,对于理解当时的软件架构...

    Spring3.0.5源码+lib包(全)

    Spring框架是Java开发中最常用的轻量级框架之一,它的3.0.5版本是一个重要的里程碑,在这个版本中,Spring引入了许多新特性和改进。这里,我们主要探讨Spring 3.0.5的核心概念、设计原则以及它在lib包中的依赖。 **...

    activiti+spring+srping Mvc+mybatis+maven整合

    本项目是关于"activiti+spring+spring Mvc+mybatis+maven"的整合,旨在创建一个基于Activiti工作流引擎、Spring、Spring MVC、MyBatis以及Maven的开发环境。下面将详细介绍这些技术及其整合过程。 首先,`activiti`...

Global site tag (gtag.js) - Google Analytics