配置详解,配置文件

Action
    作用:
        》》封装工作单元
        》》数据转移的场所
        》》返回结果字符串
    method属性
        >>默认值:execute
        >>更改属性实现Action中不同方法的调用
    配置默认Action/在package中定义如下:
        >> <default-action-ref name=”defaultAction”/>
//name名要和action中的name一致
           <action name=”defaultAction”>
               <result>error.jsp</result>
           </action>

method属性解决多个页面调用同一个action类的问题,减少action的数据。例如用户登录,用户注册都调用同一个action,
userAction 。 分别调用这个类中的 Login方法和 Register 方法。

package元素
package内部的name是唯一的,package要直接或者是间接继承struts-default,
除非有令人信服原因,自定义的包应该总是扩展struts-default包;
namespace表示访问的地址的根目录;

<?xml version=”1.0″ encoding=”UTF-8″ ?>
<!DOCTYPE struts PUBLIC
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“;
<struts>
<!– 创建一个default包,继承自Struts2的struts-default包 –>
<package name=”default” namespace=”/” extends=”struts-default”>
<action name=”school” class=”org.zm.test.SchoolAction”
method=”Login”>
<result type=”redirectAction”
name=”success”>${nextDispose}</result>
<result name=”error”>Register.jsp</result>
</action>
<action name=”teacher” class=”org.zm.test.teacherAction”
method=”Show”>
<result name=”success”>ok.jsp</result>
</action>
<action name=”student” class=”org.zm.test.studentAction”
method=”Show”>
<result name=”success”>no.jsp</result>
</action>
</package>
</struts>

加载顺序
struts-default.xml>>>struts-plugin.xml>>>struts.xml
struts-plugin.xml插件使用的配置文件

当调用student.action时, 执行 rg.zm.test.studentAction 类 的
Show()方法。

constant元素
<constant name=”struts.i18n.encoding” value=”UTF-8″/>
constant元素设置常量,编码格式;可以在struts2-core
核心包里,dufault.properties内查找到所有的常量

<action name=”student” class=”org.zm.test.studentAction”
method=”Show”>
<result name=”success”>no.jsp</result>
</action>

前缀文件可以通过struts2-core
核心包里的找相应版本的前缀dtd文件,注释的部分里有。

 

struts.xml
>>核心配置文件,主要负责管理Action
>>通常放在WEB-INF/classes目录下,在该目录下的struts.xml文件可以被自动加载

  • 5.1 Action
    作用:为给定的请求封装需要做的实际工作(调用特定的业务处理类)

<struts>
    <constant name=”” value=””/>
    <package name=””  namespace=”/” extends=”struts-default”>
        <action name=”” class=””>
            <result name=””></result>
        </action>
    </package>
</struts>

      1. SchoolAction

<action name=”*User” class=”org.zm.test.studentAction”
method=”{1}”>
<result name=”login”>/page/{1}.jsp</result>
<result name=”register”>/page/{1}.jsp</result>
……
</action>

1) constant元素用于配置常量例如:
处理乱码: <constant name=”struts.i18n.encoding” value=”UTF-8″
/>
设置用户界面主题: <constant name=”struts.ui.theme” value=”simple”
/>
禁止调用动态方法: <constant
name=”struts.enable.DynamicMethodInvocation” value=”false” />

提示:考虑到安全问题,通常禁止调用动态方法。

在action的name属性中使用星号, 允许这个 Action 匹配所有以 User
结束的URL。 如 loginUser.action。
配置该action元素时,还制定了method属性,该属性使用一个表达式{1},该表达式的值就是name属性值的第一个”*”的值。
{1} = login

Struts的执行过程
3.1 当Web容器接受到请求后,将强求交给 web.xml 中配置的 struts2
框架的控制器StrutsPrepareAndExecuteFilter (核心控制器)
3.2 由 StrutsPrepareAndExecuteFilter 确定请求对应的 Action
(业务控制器)
3.3 框架根据 Action 返回的结果字符串,由 StrutsPrepareAndExecuteFilter
(核心控制器)选择对应的result, 将结果呈现给用户。

3. Result
实现视图的调用,并决定视图以那些形式展现给客户端。

4. Struts 2 的配置器

5. Action配置

<struts>
<package name=”default” namespace=”/” extends=”struts-default”>
<action name=”hello”
class=”com.opensymphony.xwork2.ActionSupport”>
<!– 结果为 success 时, 跳转到 hello.jsp页面 (dispatcher 转发)
–>
<result name=”success”>hello.jsp</result>
<!– 结果为 tutorial 时, 重定向到 /tutorial/test.action (forward
重定向) –>
<result name=”tutorial”
type=”redirect”>/tutorial/test.action</result>
<!– 结果为 tutorial2 时, 重定向到test.action –>
<result name=”tutorial2″
type=”redirectAction”>/tutorial/test.action</result>
</action>
</package>
</struts>

动态方法调用(Dynamic Method Invocation, MDI) 是指表单元素的 Action
并不是直接等于某个Action的名称,而是通过在Action的名称中使用感叹号(!)来标识要调用的方法名称,格式为
actionName!methodName.action。

  • 4.2 struts-default.xml :
    Struts2框架的默认配置文件。
  • 4.3 struts-plugin.xml :
    是struts2插件使用的配置文件。
  • 5.4 Action 中通配符的使用

提示:
Struts2根据action元素的method属性查找执行方法时有两种途径。1.查找与method属性值完全一致的方法。
2.查找domethod()形式的方法。【login() / doLogin()】

  • 6.2 动态结果

//省略get set

  • 5.2 method 属性:

配置的时候不知道执行那个,在运行时才能知道哪个结果作为视图显示给用户。即在配置时使用表达式,在运行时,由框架根据表达式的值来确定要使用哪个结果。

当请求 student!login.action 时, 框架将调用
studentAction的login()方法;
当请求 student!register.action 时, 框架将调用
studentAction的register()方法;

3)package元素
name 属性为必须得并且是唯一的,用来指定包的名称
extends 属性类似Java的extends,指定用来扩展的包
namespace 属性可选。namespace=”/”代表根目录, namespace=””默认命名空间
通常会使用模块名称命名

发表评论

电子邮件地址不会被公开。 必填项已用*标注