目的:联系使用Spring和Struts整合开发
时间:2009年8月8日下午
参考:javaeye和CSDN的博客文章
内容:Spring与struts整合主要有三种方式,通过Spring的ActionSupport类,通过Spring的DelegatingRequestProcessor类、
通过Spring的DelegatingActionProxy类。
第一中方式: 通过Spring的ActionSupport类。方法是Action不在继承Struts提供的Action,而是继承于Spring提供的
ActionSupport类。然后在Action中获得Spring的ApplicationContext。
这里以最简单的登录的程序的例子来演示,就是想让不了解的人也是给自己记录一下。
过程我就不说了,我使用MyEclipse+Tomcat6.0来开发的,主要演示一下各个部分的功能。
login.jsp的文件
<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for LoginForm form</title>
</head>
<body>
<html:form action="login.do" method="post">
username : <html:text property="username"/><html:errors property="username"/><br/>
password : <html:password property="password"/><html:errors property="password"/><br/>
<html:submit value="确定" property="submit"/>
<html:cancel value="取消" property="cancel"/><br>
</html:form>
</body>
</html>
successLogin.jsp的文件
<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'successLogin.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body><h1 align="center">Success To Login!!!<br></h1><div align="center">
</div></body>
</html>
loginFail.jsp的文件
<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'failLogin.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1 align="center">Fail To Login!!!<br></h1>
</body>
</html>
struts-config.xml的文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="LoginForm" type="com.test.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards>
<forward name="success" path="/successLogin.jsp"/>
<forward name="fail" path="/failLogin.jsp"/>
</global-forwards>
<action-mappings >
<action
attribute="LoginForm"
name="LoginForm"
path="/login"
scope="request"
type="com.test.struts.action.LoginAction" />
</action-mappings>
<message-resources parameter="com.test.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/>
</plug-in>
</struts-config>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="loginServiceImpl" class="com.test.spring.impl.LoginServiceImpl"/>
</beans>
LoginAction.java
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.test.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.web.struts.ActionSupport;
import com.test.spring.User;
import com.test.spring.impl.LoginServiceImpl;
import com.test.struts.form.LoginForm;
/**
* MyEclipse Struts
* Creation date: 08-08-2009
*
* XDoclet definition:
* @struts.action path="LoginAction" name="LoginFrom" input="/login.jsp" scope="request" validate="true"
*/
public class LoginAction extends ActionSupport {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
LoginServiceImpl lsi =(LoginServiceImpl)getWebApplicationContext().getBean("loginServiceImpl");
User user = new User();
user.setUsername(loginForm.getUsername());
user.setPassword(loginForm.getPassword());
if(lsi.checkUser(user)){
return mapping.findForward("success");
}
else
return mapping.findForward("fail");
}
}
LoginServiceImpl.java
package com.test.spring.impl;
import com.test.spring.LoginService;
import com.test.spring.User;
public class LoginServiceImpl implements LoginService {
public boolean checkUser(User user) {
// TODO Auto-generated method stub
boolean result = false;
String username = user.getUsername();
String password = user.getPassword();
if("admin".equals(username)&&"admin".equals(password)){
result = true;
}
else
result = false;
return result;
}
}
分享到:
相关推荐
以下将详细阐述Spring与Struts整合的三种方式: 1. **使用Spring的ActionSupport** 这种方式是通过让Struts的Action类继承Spring的`ActionSupport`类,使Action类能够访问Spring的ApplicationContext。首先,在`...
具体实现方法是让自定义的Action继承自`org.springframework.web.struts.ActionSupport`类,这样就可以在Action中使用Spring的依赖注入和其他特性了。 **示例代码**: ```java public class LoginAction extends ...
接下来,有三种整合Spring和Struts的方法: 1. **继承Spring的ActionSupport类**:Action直接继承Spring的`ActionSupport`,并通过`ApplicationContext`获取服务。这种方式简单,但存在几个缺点:首先,Action与...
例如,创建一个Action类的Bean,这个类可能继承自`org.apache.struts.action.ActionSupport`,以便利用其内置的错误处理和国际化支持: ```xml ``` 这里的`MyAction`类需要实现`execute`方法,这是Struts1中...
下面我们将详细探讨Spring与Struts整合的三种方式。 **一、使用Spring的ActionSupport** Spring的ActionSupport类是实现Struts 1或2的Action接口的一个便捷选项,它提供了一些便利的功能,如国际化支持和模型驱动...
无论是通过ContextLoaderPlugin还是继承ActionSupport类,开发者都可以根据项目的需求选择最合适的整合策略。通过利用Spring的DI和AOP特性,以及Struts的MVC架构,企业级应用的开发变得更加高效、可维护和可扩展。
这种方法是让 Struts 的 Action 类不再继承自 Struts 的 `Action` 类,而是继承 Spring 提供的 `ActionSupport` 类。这样,Action 类可以访问 Spring 容器,但同时也意味着 Action 类与 Spring 有较高的耦合度,且 ...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的不同层面上发挥作用,共同构建出高效、可维护的Web应用。Struts2作为MVC(Model-View-Controller)架构的实现,主要负责控制流程和视图...
3. **Action 类**:这些类继承自 `ActionSupport` 或自定义的 Struts2 动作类,并且被声明为 Spring Bean。Struts2 通过 ActionProxy 将请求转发到 Spring 容器来创建动作类实例。 4. **Service 类**:这些类通常...
3. **配置Struts2**:创建Struts2的配置文件,如`struts.xml`,定义Action及其对应的处理方法,Action类应继承自Spring的ActionSupport。别忘了配置Spring插件,让Struts2知道如何与Spring集成。 4. **配置...
- **ActionSupport 方式**:将 Struts Action 类继承自 Spring 的 ActionSupport 类,但这样会导致 Struts Action 与 Spring 紧耦合,不利于后期扩展或更换框架。 - **DelegatingRequestProcessor 方式**:解决了 ...
通过这种方式整合Struts 2和Spring,我们可以充分利用Spring的依赖注入特性来管理Action和Service,使得代码更加解耦,同时利用Struts 2的强大控制器功能来处理用户请求。这种集成方式对于大型复杂项目尤其有用,...
通过上述三种不同的整合方式,我们可以根据项目的具体需求选择最合适的方法来实现Spring和Struts框架的有效集成。每种方法都有其特点和适用场景,理解它们的工作原理可以帮助我们更好地设计和开发出高效、灵活的Java...
综上所述,Struts 2、Spring和Hibernate是构成J2EE技术栈的重要组成部分,掌握这些框架的基本原理和使用方法对于开发高质量的企业级应用至关重要。通过深入理解这些框架的特点和应用场景,可以有效地提升开发效率和...
4. 创建Action类,如LoginAction,继承自ActionSupport,并定义业务相关的属性和方法,如获取和设置用户名和密码,以及执行方法execute(),返回SUCCESS表示操作成功。 5. 编写Action对应的视图页面,如login_success...
- **其他插件**:根据项目需求,可能会包含如`struts2-json-plugin.jar`用于JSON处理,`struts2-spring-plugin.jar`用于与Spring框架的整合等。 在实际开发中,我们需要将这些jar包添加到项目的类路径中,然后按照...
"ibatis+spring+struts2 整合开发例子"就是一个典型的Java Web应用集成开发案例,旨在帮助开发者理解和掌握这三大框架的协同工作原理。接下来,我们将详细讨论这三个组件以及它们的整合过程。 Ibatis是一个轻量级的...