struts.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<!--第一行必须这样写,这句话必须放在第一行-->
<!-- -->
<!--验证文件,xsd和dtd是xml的验证文件,struts的配置文件是要dtd的,文件来源:
        jar包中struts-core______struts-2.3.dtd
        -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

    <!-- 更改Struts默认后缀,这是其中一种方式,还有一种方式是新建配置文件 -->
    <constant name="struts.action.extension" value="action"/>

    <!--struts标签下有个package标签, extends="struts-default"一般要与
        jar包中struts-core____struts-default.xml中的package中的name属性一致-->
    <package name="proejctPackage" namespace="/project" extends="struts-default">

        <!-- name="list"是url中请求的名字
            class="com.kaishengit.action.HomeAction"对应的类的完全限定名
            method表示请求Action中的方法,不写默认为execute
                result中写请求的响应地址,分为success等..-->
        <action name="list" class="com.kaishengit.action.HomeAction" method="list">
            <result name="success">/WEB-INF/views/list.jsp</result>
        </action>
    </package>

    <!-- <param name="actionName">list</param> 表示重定向list.action中,不用写list.action
        当修改了后缀为其他的时候,也不用在这里修改,struts会自动更换

        namespace命名空间,没有定义的时候默认的就是/
            package中的属性namespace 请求的url要这样写localhost/task/home.action
            result中的<param name="namespace">/project</param> 表示重定向的位置是
            localhost/project/list.action

            传参:只要name值不是actionName,namespace,suppressEmptyParameters,parse,anchor这
                五个值都会自动当参数传过去
                <param name="id">${projectId}</param> -->
    <package name="taskPackage" namespace="/task" extends="struts-default">

        <action name="home" class="com.kaishengit.action.HomeAction">
            <result type="redirectAction">
                <param name="actionName">list</param>
                <param name="namespace">/project</param>
                <param name="id">${projectId}</param>
            </result>
            <!--
            <result type="redirect">index.jsp</result>
            <result name="success">/WEB-INF/views/home.jsp</result>
             -->
        </action>

        <!--使用通配符,了解即可 -->
        <action name="*_*" class="com.kaishengit.action.{1}Action" method="{2}">
            <result>/WEB-INF/views/list.jsp</result>
        </action>

    </package>

</struts>    

 过滤器中  给struts.xml配置 ,不用在程序中写死哪些需要过滤,哪些不需要

<interceptor-ref name="login">
            <param name="namespace">/admin</param>
            <param name="actionNames">home,login</param>
            <param name="sessionName">curr_Admin</param>
</interceptor-ref>

这时候就要在LoginInterceptor中修改

private List<String> actionNameList = new ArrayList<String>();
        private String namespace;
        private String actionNames;
        private String sessionName;

        @Override
        public String intercept(ActionInvocation invocation) throws Exception {
            ActionProxy proxy = invocation.getProxy();
            String namespace = proxy.getNamespace();
            String actionName = proxy.getActionName();

            if(this.namespace.equals(namespace) && actionNameList.contains(actionName)) {
                return invocation.invoke();
            } else {
                ActionContext actionContext = invocation.getInvocationContext();
                Map<String, Object> session = actionContext.getSession();

                Object currAdmin = session.get(sessionName);
                if(currAdmin == null) {
                    return Action.LOGIN;
                } else {
                    return invocation.invoke();
                }
            }
        }

    //要生成他们的get和set 其中actionNames的要修改成
        public void setActionNames(String actionNames) {
            if(actionNames.indexOf(",") != -1) {
                String[] array = actionNames.split(",");
                for(String name : array) {
                    actionNameList.add(name);
                }
            } else {
                actionNameList.add(actionNames);
            }
        }

配置文件越来越大,导致修改不便,查看不容易

每个模块的放在一个.xml中,例如struts-admin.xml

<package name="AdminPackage" namespace="/admin" extends="basePackage">

</package>

struts.xml成了主配置文件,里面是一些公共的配置,还有对其他.xml的导入

<struts>

    <!-- 更改Struts默认后缀 -->
    <constant name="struts.action.extension" value="action"/>
    <!--<constant name="struts.multipart.maxSize" value="10485760"/>是修改默认文件上传大小限制-->
    <constant name="struts.multipart.maxSize" value="10485760"/>
<!--导入其他xml配置-->
    <include file="struts-admin.xml"/>
    <include file="struts-product.xml"/>
    <include file="struts-file.xml"/>
    <include file="struts-json.xml"/>

    <package name="basePackage" extends="struts-default" abstract="true">
        <interceptors>
            <interceptor name="myTimer" class="com.kaishengit.interceptor.TimerInterceptor"/>
            <interceptor name="login" class="com.kaishengit.interceptor.LoginInterceptor"/>
            <interceptor-stack name="myStack">
                <interceptor-ref name="defaultStack"/>
                <interceptor-ref name="login">
                    <param name="namespace">/admin</param>
                    <param name="actionNames">home,login</param>
                    <param name="sessionName">curr_Admin</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="myStack"/>

        <global-results>
            <result name="login" type="redirectAction">
                <param name="actionName">home</param>
                <param name="namespace">/admin</param>
                <param name="error">1002</param>
            </result>
        </global-results>
    </package>
</struts>
时间: 2024-08-30 13:43:18

struts.xml的配置的相关文章

JavaWeb_(SSH)struts.xml核心配置、动态方法调用、结果集的处理

前导博文 JavaWeb_(SSH)使用Struts框架实现用户的登陆 传送门 JavaWeb_(SSH)Struts创建Action的三种方式 传送门 核心配置 动态方法调用 结果集处理 一.核心配置 struts.xml <!-- name:配置包名 namespace:给action的访问路径定义一个命名空间 --> <package name="MyPackage" namespace="/user" extends="strut

Struts2 struts.xml相关配置

<?xml version="1.0" encoding="UTF-8" ?> <!--指定struts2配置文件的DTD信息--> <!DOCTYPE struts PUBLIC "-//apache Software Foundation//DTD Struts Configuation 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd&quo

ssh框架中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"> <!-- <?xml ?>中的为

Structs 在Struts.xml中配置action时,action的name属性最好首字母大写

<action name="Login" class="com.struts_learn.action.LoginAction"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/

struts.xml配置详解

1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件. 比如一个网上购物程序,可以把用户配置.商品配置.订单配置分别放在3个配置文件user.xml.goods.xml和order.xml中,然后在struts.xml中将这3个配置文件引入: struts.xml: 1 2 3 4 5 6 7 8 9 10 <?xml version="1.0

struts.xml 配置详解

struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件. 比如一个网上购物程序,可以把用户配置.商品配置.订单配置分别放在3个配置文件user.xml.goods.xml和order.xml中,然后在struts.x

[转] struts.xml配置详解

转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件. 比如一个网上购物程序,可以

[学习笔记]struts.xml配置详解(所有基本配置,包括通配符)

1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件.比如一个网上购物程序,可以把用户配置.商品配置.订单配置分别放在3个配置文件user.xml.goods.xml和order.xml中,然后在struts.xml中将这3个配置文件引入: struts.xml: [html] view plaincopy <?xml version="1.0

二、struts.xml配置及例程

1.配置文件的优先级 在struts2中一些配置(比如常量)可以同时在struts-default.xml(只读性),strtus-plguin.xml(只读性),struts.xml,struts.properties和web.xml文件中配置,它们的优先级逐步升高,即是说后面的配置会覆盖掉前面相同的配置. 2.配置形式 下面以对struts.i18n.encoding=UTF-8的配置为例进行说明: 在struts.xml配置形式如下: <constant name="struts.i