rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » JavaEE

自学Struts2点滴(1)

1     Struts.xml配置中的包的介绍:

<package name="test" namespace="/test" extends="struts-default">

    <action name="first" calss="com.action.HelloWord" meth="execute">

           <reslut name="success">/success.jsp</reslut>

    </action>

</package >

namespace:减少重复代码

struts1中Action的配置

<action name="loginForm"  path="/user/login"  scope="request" type="com.web.action.LoginAction" >
等同于Struts2

<package name="test" namespace="/test" extends="struts-default">

<action name="loginForm"  path="login"  scope="request" type="com.web.action.LoginAction" >

</action>

</package >

extends="struts-default":只有当包继承struts-default时才能使用Struts2所提供的核心功能。

 2  action中的 HelloWord类中方法书写。

public  String execute()//返回值是String类型

      return "success"; //返回到界面struts.xml中的reslut 的name。

3关于action的搜索顺序

http://localhost:8080/MyStruts2/test/myFirstStruts

test是namespace,myFirstStruts是action的name。要是用http://localhost:8080/MyStruts2/test/sdsd/dsd/myFirstStruts

也能找到与第一个网址相同的action。

1)获得请求路径的URL,例如url是:http://server/Struts2/path1/path2/path3/test.action

 2)首先寻找namespace为 /path1/path2/path3的package,如果不存在这个package则执行步凑3;如果存在这个package则在这个package里找test的action,当package下寻找不到action时就会直接跑到默认namespace的package里去寻找action(默认的命名空间为空字符串“”),如果默认的namespace的package还是找不到action,页面提示找不到action。

3)寻找namespace为/path1/path2的package,如果不存在这个package,则转至步凑4;如果存在这个package,则在这个package中寻找名为test的action,当在package中找不到action的就会直接跑到默认namespace的package找名为test的action,在默认的namespace中还是找不到这个action,页面会提示找不到action。

4)寻找namespace中的名为/path1的package,如果找不到这个package,则转到步凑5,如果存在这个package,则在这个package中寻找名为test的action,当在package中找不到action时就会直接跑到默认的namespace的package找名为test的action,在默认的namespace的package中找不到名为test的action方法,则在页面上提示找不到action。

5)寻找namespace为“/”的package,如果存在这个package就在这个package中寻找名为test打action,如果该package中寻找不到action时,就会在默认的namespace中去寻找test的action如果不存在则会在界面上显示找不到action。

4 Action的各项默认值

<action name="first" >

           <reslut>/success.jsp</reslut>

    </action>

如果没有指定Action的calss默认为ActionSupport

如果没有指定Action的method默认为execute()

如果没有指定Reslut的name默认是success

5关于重定向,和转发

在Struts一中配置如下:

<forward  name="login">/login.jsp</forward>

<forward  name="login"  redirect="true" >/login.jsp</forward>

Struts2中Action的各种转发类型(dispatcher默认,redirect , redirectAction,plainText):

<reslut type="redirect">/login.jsp</reslut>

redirect :重定向;redirect

redirect Action重定向到Action

<reslut type="redirect">action</reslut>

//action是Action的name。并在同一个包中!

要是再别的包中如何处理啊!

 <result name="success" type="redirectAction" >
                          <param name="actionName">xxx</param>//xxx表示Action的name,actionName是Struts2核心属性
                           <param name="namespace">/test/mytest</param>//namespace是Struts2核心属性/test/mytest是包的
namespace

   </result>

plainText用于显示原始文件内容,例如:当我们需要原样显示jsp文件源代码的时候,我们可以使用此类型。

<reslut name="source" type="plainText">

         <param name="location">/xxx.jsp</param>

        <param name="charSet">UTF-8</param>

</reslut>

公共使用的视图配置在

<global-results>

 <result></result>//和其他一样

</global-results>

不过这个有个缺点只能在自己包中使用!

要是想让整个项目都使用视图和Action!用这些共用的建一个包然后其他包继承extends=“base”

<package name="base"  extends="struts-default">
    <global-results></global-results>
    <action name=""></action>
</package>

顶一下
(0)
踩一下
(0)