<?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>
<constant name="struts.devMode" value="true" /><!-- 此栏是告诉机器是什么模式,为true的时候是开发模式,
相反就是非开发模式,好处是在更改配置文件后不用重启服务器,可以重载配置文件。 -->
<package name="mypackage" extends="struts-default" namespace="/"> <!-- namespace="/"代表只能在根目录/Helloworld才指向这个action;如果namespace="/fill"代表只能在根目录/fill/HelloWorld才能指向这个action; -->
<action name="HelloWorld" class="tutorial.HelloWorld" ><!-- 静态访问: method="add",程序就会执行add方法,如果不加则默认执行execute方法;-->
<result name="success">/HelloWorld.jsp</result> <!-- 动态访问: method不加,地址栏:http://localhost:8080/exp_HelloWorld/HelloWorld!add;add是方法 -->
</action>
<action name="Login" class="tutorial.LoginOption">
<result name="success">/HelloWorld.jsp</result>
</action>
</package> <!--namespace可以不写,不写就是代表着namespace="",以此为例:它可以映射所有的以/HelloWorld结尾的action,路劲可以是http://localhost:8080/exp_HelloWorld/sdfdf/234df/HelloWorld;
<package name="mypackage" extends="struts-default">
<action name="HelloWorld" class="tutorial.HelloWorld">
<result name="success">/HelloWorld.jsp</result>
</action>
</package> -->
</struts>

以上的是配置方法和解释,但是这些都显得很麻烦,下面的方法将会把配置变得非常的简单,而且以后项目里面就用这中方法就可以了:

 <struts>
<constant name="struts.devMode" value="true" />
<package name="actions" extends="struts-default" namespace="/actions">
<action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
<result>/Student{1}_success.jsp</result>
</action> <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
<!-- {0}_success.jsp -->
</action>
</package>
</struts>

这里使用了通配符的方法,*号代表匹配全部,{1}代根据name中的*的位置顺序,这里从1开始匹配,在项目中可以根据需要来改换名字,但是一定要注意名字必须一样,一定要遵守“约定优于配置”的原则。

 <struts>
<constant name="struts.devMode" value="true" />
<include file="login.xml" /> <!--导入xml配置,这个用于导入其他xml的struts的配置,可以做到更好的项目管理-->
</struts>

在配置中写入<constant name="struts.i18n.encoding" value="UTF-8" />可以改变struts的编码方式,这个在struts乱码的时候要特别注意。

 <struts>
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index"></default-action-ref>
<!--默认的action,不管namespace后面敲入不存在的action或jsp文件什么的,就会自动跳转到默认的action,这样页面就会显示的比较友好;-->
<action name="index">
<result>/default.jsp</result>
</action>
</package>
</struts>

results的配置方法:

 <struts>
<constant name="struts.devMode" value="true" />
<package name="resultTypes" namespace="/r" extends="struts-default">
<action name="r1">
<result type="dispatcher">/r1.jsp</result> <!--正常跳转,地址栏:/r/r1;-->
</action> <action name="r2">
<result type="redirect">/r2.jsp</result> <!--更改了地址栏:/r2.jsp;-->
</action> <action name="r3">
<result type="chain">r1</result> <!--先跳转r1的action,然后执行r1的action,但地址栏不变:/r/r3;-->
</action> <action name="r4">
<result type="redirectAction">r2</result> <!--先跳转r2的action,然后执行r2的action,但是地址栏变了:/r2.jsp;-->
</action> </package>
</struts>
 <struts>
<constant name="struts.devMode" value="true" />
<package name="user" namespace="/user" extends="struts-default"> <global-results> <!--global-results:全局的results,但是相对于package的全局,如果想要在其他package中调用这个调用这个results可以用extends;-->
<result name="mainpage">/main.jsp</result> <!--作用精简代码啦~~-->
</global-results> <action name="index">
<result>/index.jsp</result>
</action> <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_success.jsp</result>
<result name="error">/user_error.jsp</result>
</action>
</package> <package name="admin" namespace="/admin" extends="user"> <!--extends:顾名思义是继承的意思,这里就是继承user的package所有配置;-->
<action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
<result>/admin.jsp</result>
</action>
</package>
</struts>
 <struts>
<constant name="struts.devMode" value="true" />
<package name="user" namespace="/user" extends="struts-default">
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result type="redirect">/user_success.jsp?t=${type}</result>
<!--由于type是redirect方式,所以客户端再次请求的是jsp页面,并不是action,所以并没有action的载值,
故在此例中jsp不能通过“<s:property value="t"/>”或则${}的方式获取值;
但是能通过环境值取值:“<s:property value="#parameters.t"/>”-->
</action>
</package>
</struts>

struts2.xml的配置与技巧的更多相关文章

  1. Struts2.xml的配置

    框架初始知识: Servlet  VS   Filter Filter的性能更强,因为Servlet能实现的,Filter都能实现. Filter还有拦截资源的作用 是Servlet所不能实现的. F ...

  2. struts2 xml配置文件配置传参数

    传参方式 重定向 第一方式: <action name="search" method="search"            class="c ...

  3. Struts2 web.xml文件配置

    在导入了项目需要使用的核心jar包之后需要在web.xml中配置Struts. 1. Struts2的知识点普及: Struts2共有5类配置文件,分别罗列如下: 1), Web.xml; 在没有使用 ...

  4. struts2在web.xml中配置详情

    web.xml是web应用中载入有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用. 通常,全部的MVC框架都须要Web应用载入一个核心控制器.那採取什么方 ...

  5. IT忍者神龟之Struts2.xml配置全然正确流程能走通可是有红叉解决

    一:Multiple annotations found at this line:Undefined actionName  parameter  Undefined actionnamespace ...

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

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

  7. struts2 在 Action 或 Interceptor 中获取 web.xml 中配置的 <context-param> 参数 (这是我的第一篇博文,哈哈。)

    最近为了改一个问题,想加一个控制开关,就在web.xml 中配置了一个 <context-param> 参数,并在 Action 或 Interceptor 中获取参数值. 1.在 web ...

  8. Struts2之环境配置

    在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计.在这儿MVC模式的好处就 ...

  9. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

随机推荐

  1. bzoj 2330 [SCOI2011]糖果(差分约束系统)

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3574  Solved: 1077[Submit][Status ...

  2. HTML全局属性

    属性 描述 accesskey 规定激活元素的快捷键. class 规定元素的一个或多个类名(引用样式表中的类). contenteditable 规定元素内容是否可编辑. contextmenu 规 ...

  3. L - Oil Deposits

    很清新的一道题,搜索里面最基础的题目,深搜广搜都可以.....不过还是喜欢深搜,写起来简单>.. //////////////////////////////////////////////// ...

  4. poj1009

    题目大意:边缘检测 IONU卫星成像公司,公司记录和储存非常大的图片使用行程编码,你需要编写一个程序读取被压缩的图像,发现图像的边缘,描述如下,并且输出另一个发现的边缘压缩图像. 一个简单的边缘检测算 ...

  5. awr报告

    BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();END;/ exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ...

  6. 关于连不上dc服务器的机器强行退出域的方法

    有时加入域的计算机无法连接到之前的域了,只能强制退出域了,有两个前提条件:   1.断开网络,就是拔掉网线或者禁用网卡.   2.使用本地管理员登陆.   然后命令行执行如下命令即可:   netdo ...

  7. Hibernate二 映射 注解 一级缓存

    Hibernate映射1.@Entity 被该注解修饰的POJO类是一个实体,可以用name属性指定该实体类的名称,系统默认以该类的类名作为实体类的名称.2.@Table 指定持久化类所映射的表,它的 ...

  8. 10个经典的Java面试题

    这里有10个经典的Java面试题,也为大家列出了答案.这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之后一定会有所提高.让我们一起来看看吧. 1.Java的HashMap是如何工作的? ...

  9. OpengGL ES2.0 Using NDK

    使用C语言在Android Studio中编写OpenGL ES,首要的任务就是配置编程环境. 在最新的Android Studio中,可以直接编译C/C++源代码.本人的版本是Android Stu ...

  10. [资源分享]神州数码 思科 UCS 虚拟化培训资料

    神州数码 思科 UCS 虚拟化培训资料   点击文件名下载 UCS统一计算平台=.pdf 云计算Demo实验教材_Nexus 5K2K实验.pdf 云计算数据中心架构与技术.pdf 云计算数据中心虚拟 ...