zoukankan      html  css  js  c++  java
  • Spring -- spring整合struts2

    1. 概述

    spring和struts整合:
    	1.创建web程序
    	2.引入struts2类库.
    	3.创建HelloWorldAction
    		package cn.itcast.struts2.action;
    		import com.opensymphony.xwork2.ActionSupport;
    		/**
    		 * HelloWorldAction
    		 */
    		public class HelloWorldAction extends ActionSupport {
    			private static final long serialVersionUID = 6480501738385774728L;
    			public String reg() {
    				System.out.println("hello world");
    				return SUCCESS;
    			}
    		}
    	3.配置web.xml
    		<?xml version="1.0" encoding="UTF-8"?>
    		<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    			xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    			http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    			<filter>
    				<filter-name>action</filter-name>
    				<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    			</filter>
    			<filter-mapping>
    				<filter-name>action</filter-name>
    				<url-pattern>/*</url-pattern>
    			</filter-mapping>
    			<welcome-file-list>
    				<welcome-file>index.jsp</welcome-file>
    			</welcome-file-list>
    		</web-app>
    	4.配置struts.xml
    		<?xml version="1.0"?>
    		<!DOCTYPE struts PUBLIC
    			"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    			"http://struts.apache.org/dtds/struts-2.1.7.dtd">
    		<struts>
    			<constant name="struts.devMode" value="true" />
    			<package name="helloworldPkg" extends="struts-default">
    				<action name="HelloWorldAction_*" class="cn.itcast.struts2.action.HelloWorldAction" method="{1}">
    					<result name="success">/index.jsp</result>
    				</action>
    			</package>
    		</struts>
    
    	5.引入spring类库 + struts2-spring-plugin-2.1.8.1.jar
    	6.配置web.xml
    		<!-- 通过上下文参数指定spring配置文件的位置 -->
    		<context-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>classpath:beans.xml</param-value>
    		</context-param>
    		
    		<!-- 上下文载入器监听器,确保web服务器启动时,直接完成spring容器的初始化,将ac放到application范围中 -->
    		<listener>
    			<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    		</listener>
    
    	7.修改struts.xml配置文件中的action
    		把action的class改成bean的id.
    		<!-- class:指定action在spring容器的id -->
    		<action name="HelloWorldAction_*" class="helloWorldAction" method="{1}">
    		
    
    struts2加载顺寻:
    	1.struts-core.jar/struts.xml
    	2.xxx-plugin.xml / struts-plugin.xml
    	3.project/struts.xml
    
    ac = new Classpathxmlac(new String[]{a.xml,b.xml});


    2. 示例代码

    HelloWorldService.java, service接口

    public interface HelloWorldService {
    	public void sayHello();
    }

    HelloWorldServiceImpl.java, service实现

    //方式二:注解配置
    @Service("helloWorldService")
    public class HelloWorldServiceImpl implements HelloWorldService {
    	public void sayHello() {
    		System.out.println("this is a service");
    	}
    }

    HelloWorldAction.java, 处理请求的action

    /**
     * HelloWorldAction, 方式二:注解配置
     */
    @Controller("helloWorldAction")
    @Scope("prototype")
    public class HelloWorldAction extends ActionSupport {
    	private static final long serialVersionUID = 6480501738385774728L;
    	
    	@Resource()
    	private HelloWorldService hws ;
    	
    	public HelloWorldAction(){
    		System.out.println("new HelloWorldAction()");
    	}
    	public String reg() {
    		ServletActionContext.getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
    		hws.sayHello();
    		System.out.println("hello world");
    		return SUCCESS;
    	}
    }

    beans.xml,spring配置bean, 只配置bean

    <?xml version="1.0"?>
    <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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
        <!--  多个配置文件的情况,action,service配置分开
        <import resource="actions.xml" />
        -->
        <!-- helloWorldService 方式一,xml配置
        <bean id="helloWorldService"
            class="cn.itcast.struts2.service.HelloWorldServiceImpl">
        </bean>
         -->
         <!-- 组件扫描  方式二,注解配置 -->
         <context:component-scan base-package="cn.itcast.struts2.action,cn.itcast.struts2.service" />
    </beans>

    actions.xml,spring配置action

    <?xml version="1.0"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
        <!-- helloworldAction -->
        <bean id="helloWorldAction"
            scope="prototype"
            class="cn.itcast.struts2.action.HelloWorldAction">
            <property name="hws" ref="helloWorldService" />
        </bean>
    </beans>

    struts.xml, struts配置

    <?xml version="1.0"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
        "http://struts.apache.org/dtds/struts-2.1.7.dtd">
    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="helloworldPkg" extends="struts-default">
    		<!--class 应该设置为action.xml中对应的ID,才能有spring的注入属性-->
            <action name="HelloWorldAction_*" class="helloWorldAction" method="{1}">
                <result name="success">/index.jsp</result>
            </action>
        </package>
    </struts>

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <!-- 通过上下文参数指定spring配置文件的位置 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:beans.xml</param-value>
        </context-param>
        
        <!-- 上下文载入器监听器,确保web服务器启动时,直接完成spring容器的初始化,并把ac保存到application中 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <filter>
            <filter-name>action</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>action</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>







     

  • 相关阅读:
    mini-web框架-WSGI-mini-web框架-多进程,面向对象的服务器(5.1.1)
    遍历对象打印对象中的值
    原型的使用和我对原型的理解
    上下高度固定中间自适应的布局方式
    高度固定,左右宽度300,中间自适应
    promise.all方法合并请求接口的两个值
    bus实现兄弟组件传值
    数组对象里面的值处理
    pre标签
    Script标签
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648139.html
Copyright © 2011-2022 走看看