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;
}
}
}
完整代码在附件中
分享到:
相关推荐
本方案提供了一种集成化的开发环境,即"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框架的一个重要版本,它引入了对RESTful风格的支持,使得构建Web应用更加灵活。REST(Representational State ...
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整合代码"涉及到四个关键的Java开发框架,它们分别是Spring Framework、Spring Security、MyBatis和Struts 2。这四个框架在...
在本教程中,我们将深入探讨如何使用Spring、Spring MVC 3.0.5以及MyBatis 3.0.4这三个流行的Java框架构建一个全注解的Web应用程序。这个实例详解将帮助开发者理解如何有效地集成这三个组件,实现高效的数据访问和...
本文将深入探讨如何将Spring 3.0.5、Mybatis 3.0.5和Struts2.0.6这三个流行框架整合在一起,以实现一个完整的MVC(Model-View-Controller)架构。这些框架分别负责依赖注入、持久层操作和业务逻辑控制,通过它们的...
基于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的DI和AOP特性,以及MyBatis的SQL映射和数据访问能力,是学习和实践Java...
标题中的"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的学习示例,你可以掌握如何在实际项目中有效地整合这些框架,理解它们如何协同工作以提升开发效率和代码质量。这将为你在Java Web开发领域打下坚实的基础。
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"显然是一组用于构建基于Spring MVC和Hibernate的项目的库文件集合。下面将详细介绍这两个框架的版本3.0.5和3.3以及它们的关键特性。 **Spring框架3.0.5** Spring...
Spring 3.0.5是Spring框架的一个稳定版本,它支持JSF集成,允许开发者利用Spring的强大功能来处理服务层和数据访问层的逻辑。Spring的IoC(Inversion of Control,控制反转)容器使得对象之间的依赖关系可以通过配置...
Struts 1.3.10、Spring 3.0.5 和 Mybatis 3.1.1 是三个经典的Java Web开发框架,它们在企业级应用中被广泛使用。这三者的整合使得开发者能够实现MVC(Model-View-Controller)架构、依赖注入以及灵活的数据持久化。...
这是一个关于企业级应用开发的集成环境包,包含了前端框架ZKoss CE6.0、后端框架Spring3.0.5、ORM框架Hibernate3.6,以及两种数据库Oracle10g和MySQL5。这个组合是早期Java开发中的常见配置,对于理解当时的软件架构...
Spring框架是Java开发中最常用的轻量级框架之一,它的3.0.5版本是一个重要的里程碑,在这个版本中,Spring引入了许多新特性和改进。这里,我们主要探讨Spring 3.0.5的核心概念、设计原则以及它在lib包中的依赖。 **...
本项目是关于"activiti+spring+spring Mvc+mybatis+maven"的整合,旨在创建一个基于Activiti工作流引擎、Spring、Spring MVC、MyBatis以及Maven的开发环境。下面将详细介绍这些技术及其整合过程。 首先,`activiti`...