Structs2配置文件相关说明

时间:2023-03-09 08:02:48
Structs2配置文件相关说明

1,structs.xml文件解析

<package name="front" namespace="/front" extends="struts-default">
  <global-results>
    <result name="error">/WEB-INF/jsp/error.jsp</result>
  </global-results>   <global-exception-mappings>
    <exception-mapping exception="java.lang.Exception" result="error"/>
  </global-exception-mappings>   <action name="helloworld">
    <result >/hello.jsp</result>
  </action>
</package>

name,对应的是前台,后台或者模块的名称,一般设置的为namespace相同
namespace:决定了action的访问路径,默认为"",可以接受所有的action,namespace可以写为/,或者/xxx,/xxx/yyy,那么对应的访问路径分别为/index.action,/xxx/index.action,或者/xxx/yyy/index.action,这里的 .action默认是可以省去的

2,执行过程

<package name="front" namespace="/front" extends="struts-default">
<action name="hello" class="test.indexaction1">
<result name="success"> /hello.jsp</result>
</action>
</package>

  进入structs.xml文件后,根据url进行匹配namespace,如果没有匹配成功,则返回到web.xml文件中,执行index.jsp文件,如果匹配成功,则进行下一步操作:匹配action,根据action的name,做进一步匹配,如果匹配不成功,仍然返回web.xml文件中进行下一步操作,如果匹配成功,开始根据class名来查找对应的class,如果没有class这个值,则默认执行的是ActionSupport这个类中的execute方法,默认返回的是"success",然后根据success来匹配action后面的result节点的name值,如果匹配到,则返回对应的jsp文件,这就是整个过程,如果没有找到,则返回404

3,路径问题
  sturcts2的路径是根据action的路径而不是jsp的路径来确定的,所以尽量不要使用相对路径虽然可以使用redirect方式解决,但redirect方式并非必要解决方法很简单,统一使用绝对路径。在jsp中用request.getContextRoot方式来拿到webapp的路径,或者使用myeclipse经常使用的,指定basePath<base href=<%=basepath%>后,相当于指定整个页面的连接的基本url

4,resulttype
这个常用的有下面的

  • dispatcher 服务器内部跳转到另外一个页面
  • redirect 浏览器页面跳转到另外一个页面
  • chain 服务器内部跳转到另外一个action
  • redirectAction 浏览器跳转到另外一个action
  • framwork
  • stream

5,structs tags
  通用标签

    • property
    • set 集合,主要用于键值对,
    • bean 实例化对象
    • include 少用
    • param
    • debug(这个是<s:debug></s:debug>)

控制标签

    • if elseif else
    • iterate 循环控制器

UI标签 结合其他框架,用的比较少

Ajax标签 用的比较少

$#%的区别 用的比较少