<?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>

struts.xml的配置的更多相关文章

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

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  2. 学习Struts--Chap03:struts.xml常用配置(基础)

    1.package属性 name:包名 用来唯一的指定一个package.package可以扩展,当一个package扩展自 另一个package时该package会在本身配置的基础上加入扩展的pac ...

  3. Struts2学习-struts.xml文件配置

    学习框架过程中,一直对框架中的配置文件比较难理解,特搜集资料简要记录一下struts.xml文件遇到的问题. <?xml version="1.0" encoding=&qu ...

  4. mzy,struts学习(二):struts.xml的配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...

  5. struts.xml详细配置

    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quo ...

  6. ssh框架中struts.xml 的配置参数详解

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...

  7. 在struts.xml中配置默认action遇到的问题

    初始代码: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC & ...

  8. struts.xml配置详解 内部资料 请勿转载 谢谢合作

    1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件 ...

  9. struts.xml配置详解

    struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用includ ...

随机推荐

  1. android解决内存溢出的问题(没有从根本上解决)

    Android游戏虚拟机算法JNI 尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完 ...

  2. ANDROID对文件的操作

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...

  3. Windows 配置JAVA的环境变量

    Java是由Sun公司开发的一种应用于分布式网络环境的程序设计语言,Java语言拥有跨平台的特性,它编译的程序能够运行在多种操作系统平台上,可以实现“一次编写,到处运行”的强大功能. 工具/原料 JD ...

  4. Spring学习之Aop的各种增强方法

    AspectJ允许使用注解用于定义切面.切入点和增强处理,而Spring框架则可以识别并根据这些注解来生成AOP代理.Spring只是使用了和AspectJ 5一样的注解,但并没有使用AspectJ的 ...

  5. python10min系列之多线程下载器

    今天群里看到有人问关于python多线程写文件的问题,联想到这是reboot的架构师班的入学题,我想了一下,感觉坑和考察的点还挺多,可以当成一个面试题来问,简单说一下我的想法和思路吧,涉及的代码和注释 ...

  6. MVC-06 安装部署

    部署网站往往是一件麻烦事,因为在安装部署的过程中,经常有许多步骤要运行,对于许多不太熟悉IIS/SQL的新手来说,部署网站编程一件非常困难且危险的事.Visual Studio 2012在ASP.NE ...

  7. TCP/IP笔记 三.运输层(4)——TCP链接管理与TCP状态机

    1. 建立连接 三次握手 (1)A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x. (2)B 的 TCP ...

  8. java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决方案

    在Myeclipse中运行小应用程序时出现如下异常的解决办法 java.lang.UnsupportedClassVersionError: Bad version number in .class ...

  9. elk 分布式数据同步

    zjtest7-redis:/elk/elasticsearch/data/es_cluster/nodes/0/indices/library# strings ./1/index/_3.cfs | ...

  10. Windows Azure 即将更名

     今天我们宣布自2014 年4 月3 日起,WindowsAzure 将更名为Microsoft Azure.这一更名反映了Microsoft 的战略,并显示了Microsoft 专注于将Azur ...