`
desert3
  • 浏览: 2143825 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Struts2 Spring3.0整合

阅读更多
web.xml
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:/applicationContext-resources.xml
            classpath:/applicationContext-dao.xml
            classpath:/applicationContext-service.xml
            classpath*:/applicationContext.xml
            /WEB-INF/applicationContext*.xml
        </param-value>
    </context-param>

    <filter>
        <filter-name>struts-prepare</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>com.desert.appfuse.webapp.action</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>com.desert.appfuse.webapp.action</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts-prepare</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


applicationContext-struts.xml
向容器注册使用的拦截器和action
<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd"
       default-lazy-init="true">

    <bean id="adminInterceptor" class="com.desert.appfuse.webapp.interceptor.UserRoleAuthorizationInterceptor">
        <property name="authorizedRoles" value="ROLE_ADMIN"/>
    </bean>
    
    <bean id="signupAction" class="com.desert.appfuse.webapp.action.SignupAction" scope="prototype">
        <property name="userManager" ref="userManager"/>
        <property name="roleManager" ref="roleManager"/>
        <property name="mailEngine" ref="mailEngine"/>
        <property name="mailMessage" ref="mailMessage"/>
        <property name="templateName" value="accountCreated.vm"/>
    </bean>
</beans>


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"
       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.xsd"
       default-lazy-init="true">

    <!-- Activates scanning of @Autowired -->
    <context:annotation-config/>

    <!-- Activates scanning of @Repository and @Service -->
    <context:component-scan base-package="com.desert.appfuse"/>

    <!-- Add new DAOs here -->

    <!-- Add new Managers here -->
</beans>


struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <!-- Constants -->
    <constant name="struts.devMode" value="false"/>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <constant name="struts.action.extension" value="html"/>
    <constant name="struts.objectFactory" value="spring"/>
    <constant name="struts.custom.i18n.resources" value="ApplicationResources,errors"/>
    <constant name="struts.multipart.maxSize" value="2097152"/>
    <constant name="struts.ui.theme" value="css_xhtml"/>
    <constant name="struts.codebehind.pathPrefix" value="/WEB-INF/pages/"/>
    <constant name="struts.enable.SlashesInActionNames" value="true"/>
    <constant name="struts.convention.action.disableScanning" value="true"/>

    <!-- Configuration for the default package. -->
    <package name="default" extends="struts-default">
        <interceptors>
            <!-- Interceptor to handle allowing only admins to certain actions -->
            <interceptor name="adminOnly" class="adminInterceptor"/>
            <!-- Copied from struts-default.xml and changed validation exclude methods -->
            <interceptor-stack name="defaultStack">
                <interceptor-ref name="exception"/>
                <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="debugging"/>
                <interceptor-ref name="profiling"/>
                <interceptor-ref name="scopedModelDriven"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="checkbox"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="params">
                    <param name="excludeParams">dojo\..*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">cancel,execute,delete,edit,list</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
            <interceptor-stack name="fileUploadStack">
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="defaultStack"/>
            </interceptor-stack>
            <interceptor-stack name="adminCheck">
                <interceptor-ref name="defaultStack"/>
                <interceptor-ref name="adminOnly"/>
            </interceptor-stack>
        </interceptors>

        <global-results>
            <result name="mainMenu" type="redirectAction">mainMenu</result>
            <result name="dataAccessFailure">/WEB-INF/pages/dataAccessFailure.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="org.springframework.dao.DataAccessException" result="dataAccessFailure"/>
        </global-exception-mappings>

        <action name="mainMenu">
            <result name="success">/WEB-INF/pages/mainMenu.jsp</result>
        </action>

        <action name="signup" class="signupAction">
            <result name="cancel" type="redirect">/</result>
            <result name="input">/WEB-INF/pages/signup.jsp</result>
            <result name="success" type="chain">saveSignup</result>
        </action>

        <action name="saveSignup" class="signupAction" method="save">
            <result name="input">/WEB-INF/pages/signup.jsp</result>
            <result name="success" type="redirectAction">/mainMenu</result>
        </action>

        <action name="editUser" class="userAction" method="edit">
            <interceptor-ref name="adminCheck"/>
            <result name="success">/WEB-INF/pages/userForm.jsp</result>
            <result name="input">/WEB-INF/pages/admin/userList.jsp</result>
        </action>

        <action name="editProfile" class="userAction" method="edit">
            <result name="success">/WEB-INF/pages/userForm.jsp</result>
            <result name="error">/WEB-INF/pages/mainMenu.jsp</result>
        </action>

        <action name="saveUser" class="userAction" method="save">
            <result name="cancel" type="redirectAction">admin/users</result>
            <result name="input">/WEB-INF/pages/userForm.jsp</result>
            <result name="success" type="redirectAction">admin/users</result>
        </action>

        <action name="uploadFile" class="com.desert.appfuse.webapp.action.FileUploadAction">
            <interceptor-ref name="fileUploadStack"/>
            <result name="input">/WEB-INF/pages/uploadForm.jsp</result>
            <result name="success">/WEB-INF/pages/uploadDisplay.jsp</result>
            <result name="cancel" type="redirectAction">mainMenu</result>
        </action>

        <action name="passwordHint" class="passwordHintAction">
            <result name="input">/</result>
            <result name="success">/</result>
        </action>

        <!-- Add additional actions here -->
    </package>

    <!-- Actions in this package will be prefixed with /admin/ -->
    <package name="admin" extends="default" namespace="/admin">
        <action name="activeUsers" class="com.opensymphony.xwork2.ActionSupport">
            <result name="success">/WEB-INF/pages/admin/activeUsers.jsp</result>
        </action>
        
        <action name="reload" class="com.desert.appfuse.webapp.action.ReloadAction">
            <interceptor-ref name="adminCheck"/>
            <!-- this should never be used, it's here to prevent warnings -->
            <result name="success">/WEB-INF/pages/mainMenu.jsp</result>
        </action>

        <action name="users" class="userAction" method="list">
            <interceptor-ref name="adminCheck"/>
            <result name="success">/WEB-INF/pages/admin/userList.jsp</result>
        </action>
    </package>
</struts>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics