`
tianhei
  • 浏览: 211629 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring+struts

阅读更多

在spring和struts整合之前,需要导入spring和struts的jar包

 

原理:

1、用spring来管理struts的action:
     在spring的配置文件中配置action和action所依赖的业务逻辑对象。

2、因为Action要调用业务逻辑对象,将业务逻辑对象注入到Action中,从而避免在Action类中直接进行代码查找:

     因此Action中要有业务逻辑对象的声明和此对象的set方法

     在spring的配置文件中配置他们之间的依赖关系

3、在struts的配置文件里把action的type改成spring的一个代理类:
     org.springframework.web.struts.DelegatingActionProxy
     此代理类功能:创建BeanFactory、到IoC容器里查找用户请求的Action。
     根据<action>中的path属性值到IoC容器中取得本次请求对应的Action。
4、在spring的配置文件中定义struts的action.注意:必须使用name属性
     将Action的 scope设置为prototype多粒模式
     必须注入业务逻辑对象

 

部署描述符 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">
    
    <!-- 定义spring的配置文件,此文件会被spring的监听器获得 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <!-- ContextLoaderListener默认监听spring的applicationContext.xml配置文件 -->
    <!-- 当spring的配置文件改名了,就需要有上面的<context-param>配置 -->
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
	<!-- 配置Struts ActionServlet -->
	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>2</param-value>
		</init-param>
		<init-param>
			<param-name>detail</param-name>
			<param-value>2</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<!-- 配置Struts ActionServlet 的请求路径-->
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	
	<!-- 欢迎页面 -->
	<welcome-file-list>
		<welcome-file>login.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 

spring的配置文件 applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    
    <bean id="uManage" class="com.cos.manager.UserManager"/>
    <!-- 把userManage注入进来、一定要用name不要用id、多粒模式 -->
    <bean name="/login" class="com.cos.action.LoginAction" scope="prototype">
        <property name="userManager" ref="uManage"/>
    </bean>
</beans>

struts的配置文件 struts-config.xml:

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE struts-config SYSTEM "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
	<form-beans>
		<form-bean name="userForm" type="com.cos.form.UserForm"></form-bean>
	</form-beans>
	<action-mappings>
		<!-- 当一个.do请求过来,先进入struts的配置文件,将此action代理给spring的action管理 -->
		<!-- DelegatingActionProxy类使用映射名称path查找Spring环境中的动作名称name -->
		<!-- path的值要和spring action中的name值相同 -->
		<!-- type的值是spring的代理action: DelegatingActionProxy -->
		<!-- 此代理类完成了BeanFactory的创建、根据path值到IoC容器里的查找本次请求对应的Action -->
		<action path="/login"
			type="org.springframework.web.struts.DelegatingActionProxy"
			scope="request" 
			name="userForm">
			<forward name="success" path="/success.jsp" />
		</action>
	</action-mappings>
</struts-config>

此处一定要把type值配置成DelegatingActionProxy:

把用户的请求提交给spring的action,spring的action创建BeanFactory,再由spring的action调用struts的action。

 

登录页面 login.jsp:

<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
    <form action="login.do" method="post">
	    <table>
	        <tr>
	            <td>用户名:</td><td><input type="text" name="username"></td>
	        </tr>
	        <tr>
	          <td>密&nbsp;&nbsp;码:</td><td><input type="password" name="password"></td>
	        </tr>
	        <tr>
                <td><input type="submit" value="提交"></td>
                <td><input type="reset" value="重置"></td>
            </tr>
	    </table>
    </form>
  </body>
</html>

 LoginAction.java:

package com.cos.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.cos.form.UserForm;
import com.cos.manager.UserManager;

public class LoginAction extends Action {

    //把此对象注入进来,用set()方法
    private UserManager userManager;
    
    public ActionForward execute(ActionMapping mapping, ActionForm actionfrom,
            HttpServletRequest request, HttpServletResponse response) {
        UserForm loginForm = (UserForm)actionfrom;
        userManager.createUser(loginForm.getUsername(), loginForm.getPassword());
        return mapping.findForward("success");
    }
    //set()方法
    public void setUserManager(UserManager userManager) {
        this.userManager = userManager;
    }
}

struts的FormBean: UserForm.java

package com.cos.form;

import org.apache.struts.action.ActionForm;

public class UserForm extends ActionForm {

    private static final long serialVersionUID = 1L;
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

业务处理类 UserManager.java:

package com.cos.manager;

//业务逻辑处理
public class UserManager {

    public void createUser(String username, String password) {
        System.out.println("业务逻辑处理:用户名:" + username + ",密码:" + password);
    }
}

成功页面 success.jsp:

<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
	            登录成功。<a href="login.jsp">返回</a>    
  </body>
</html>

 

运行结果:跳转到成功页面success.jsp、控制台打印出 "业务逻辑处理:用户名:xxx,密码:xxx"

 

优点:

在LoginAction中没有和业务逻辑对象UserManager耦合,即:没有 new UserManager();

 

注:

如果spring没有使用默认的配置文件名称:applicationContext.xml,那么一定要在web.xml文件中配置:

    <!-- 定义spring的配置文件,此文件会被spring的监听器获得 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <!-- <param-value>classpath:applicationContext-*.xml</param-value> -->
        <param-value>/WEB-INF/applicationContext-*.xml</param-value>
    </context-param>

 如果使用了默认名称,则可以不添加<context-param>这段代码。

 

 

 

 

0
1
分享到:
评论

相关推荐

    图书管理系统spring+struts+hibernate

    《图书管理系统spring+struts+hibernate》是一款基于Java技术栈开发的图书管理软件,其核心框架包括Spring、Struts和Hibernate。该系统利用MySQL作为数据库存储数据,提供了完整的数据库备份,确保了数据的安全性与...

    spring+struts2+hibernate+mybatis

    一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去

    一个spring+struts+hibernate的例子

    一个spring+struts+hibernate的例子,是eclipse的工程,用tomcat5和mysql,文件夹下包含所有的源码和库,另外还有一个.sql的文件用于建立数据库。大家觉得它有什么不好,欢迎交流

    spring+struts2+ibatis整合的jar包

    在Java Web开发中,Spring、Struts2和iBatis是三个非常重要的框架,它们各自在不同的层面上提供了强大的功能。Spring是一个全面的后端应用框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等功能;Struts...

    ssh框架整合详细步骤(spring+struts2+hibernate)

    ### SSH框架整合详细步骤(spring+struts2+hibernate) #### 一、整合概述 在现代Web应用开发中,SSH(Struts2、Spring、Hibernate)框架因其各自独特的功能和优势,常被组合使用以构建高效、稳定且易于维护的系统...

    spring+struts2+ibatis简单登录实例--特别适新人学习

    一个简单的spring+struts+ibatis整合的实例,实现了用户登录,用户登录成功则显示欢迎信息,失败则显示用户名或密码错误,该实例非常简单基础,特别适合新人学习,工程包含了必要的资源包,部署到服务器中及可运行,...

    spring +struts + hibernate 例子

    在学习和使用Spring+Struts+Hibernate的例子时,要注意理解每个框架的核心概念,熟悉它们的配置方式,以及如何通过XML或注解进行组件装配。同时,实践中应注重代码的规范性和可读性,遵循良好的编程习惯,这样才能更...

    Spring+Struts+ibatis讲解

    在Spring+Struts+ibatis这种经典的Java Web开发框架组合中,主要涉及到三层架构:表现层(Action)、业务逻辑层(Service)和数据访问层(DAO)。这些组件协同工作,实现了应用程序的功能。以下是对各部分的详细解释...

    spring+struts+ibatis

    标题中的"spring+struts+ibatis"是指一种经典的Java Web开发架构,也被称为SSM框架。这个架构结合了Spring框架、Struts2框架和iBatis(现在称为MyBatis)来构建高效且可维护的Web应用。下面将详细阐述这三个框架以及...

    spring+struts1+hibernate+jbpm实例

    标题中的"spring+struts1+hibernate+jbpm实例"揭示了这是一个基于Java技术栈的Web应用程序开发实例,其中涉及四大核心技术:Spring、Struts1、Hibernate和JBPM。接下来,我们将深入探讨这些技术及其在实际项目中的...

    spring+struts2+mybatis实例

    标题中的"spring+struts2+mybatis实例"是指一种常见的Java Web开发框架组合,通常称为SSM框架。SSM是Spring、Struts2和MyBatis三个开源框架的缩写,它们各自负责应用程序的不同部分,协同工作以构建高效、模块化的...

    Spring + Struts +Hibernate简单学习源码

    Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们各自负责应用程序的不同层面:Spring作为全面的容器和依赖注入框架,负责管理对象和提供事务处理;Struts则是一个MVC(模型-视图-控制器)框架,主要...

    Spring+Struts2+MyBatis完整框架

    Spring、Struts2和MyBatis是Java Web开发中非常流行的三大开源框架,它们各司其职,共同构建了一个高效、灵活的企业级应用框架。在这个"Spring+Struts2+MyBatis完整框架"中,我们可以看到这三者是如何协同工作的。 ...

    Spring+Struts2+JPA

    **Spring+Struts2+JPA 整合详解** 在Java Web开发中,Spring、Struts2和JPA是三个非常重要的框架。Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;Struts2是一个强大的MVC框架...

    Spring+Struts2+Hibernate三大框架开发校园精品课程网源代码

    本项目以"Spring+Struts2+Hibernate"三大框架为核心,旨在实现一个校园精品课程网的后台系统,提供丰富的功能和良好的用户体验。下面将详细介绍这三个框架以及它们在该项目中的应用。 1. Spring框架:Spring是Java...

    Spring+Struts2+Mybatis增删改查的例子

    Spring+Struts2+Mybatis的一个增删改查的例子,本例子使用 Spring+Struts2 + Mybatis 框架整合,实现了对用户表数据的增、删、改、查的功能, 基于 Spring 注解实现, 省去了 Spring 繁琐的 bean 手工配置。

    Spring+Struts2+iBatis简要说明

    Spring+Struts2+iBatis是一个经典的Java轻量级开发框架组合,主要用于构建Web应用程序。这三个框架协同工作,提供了一种高效、灵活的解决方案,帮助开发者实现MVC(Model-View-Controller)架构。 首先,Spring框架...

    spring+struts+hibernate框架

    "Spring+Struts+Hibernate"(SSH)框架是Java Web开发中的经典组合,被誉为"三剑客"。这个框架集合提供了全面的企业级应用解决方案,帮助开发者构建高效、可扩展且易于维护的Web应用程序。 Spring框架是核心,它...

    自己的spring+struts2+mybatis Demo

    标题 "自己的spring+struts2+mybatis Demo" 暗示了这是一个使用Spring、Struts2和MyBatis三个框架构建的Web应用程序示例。这个项目可能是为了教学或者实践目的,展示了如何将这三个流行的技术集成在一起以创建一个...

    spring+Struts2+mybatis的demo

    一个简答的spring+Struts2+mybatis框架整合的demo

Global site tag (gtag.js) - Google Analytics