struts2--(3)一些小知识点

来源:互联网 发布:软件关键技术怎么写 编辑:程序博客网 时间:2024/06/05 14:42

1.namespace

       struts2中,将通过namespace来查找struts.xml中package配置。默认可以配置成"",表示此package将处理所有action.也可以配置成"/", "/xxx", "/xxx/yyy", 对应的访问路径则为/index.action, /xxx/index.action, /xxx/yyy/index.action.

接受所有action

<package name="default" extends="struts-default">
 即浏览器地址栏中输入/index.action, /xxx/index.action, /xxx/yyy/index.action,都可以访问

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

2. action

      在处理action后,具体视图的返回可以有用户定义的action来返回。用户自定义action可以通过三种方法来实现。

a. 用户手动编写一个action,实现其中的execute方法(struts配置中的action默认指定此方法来处理action请求,当然也可以实现action标签中method属性指定的方法)

public class MyAction {private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String execute() throws Exception {// TODO Auto-generated method stubUserService service = new UserService();if(service.userValidator(user)>0){return "success";}else{return "error";}}}

b. 用户通过编写一个action,此action实现了Action接口

c. 用户编写一个action,此action继承了ActionSupport类,通常都用此中方法,因为它可以直接使用struts2封装好的方法。其execute方法默认返回success.

public class MyAction2 extends ActionSupport {}

    3. path路径问题,在浏览器地址上输入要访问的内容,首先去查找web.xml配置文件,交给struts2处理,利用解析到的namespace,利用此名字空间去struts.xml查找对应的package配置,要是没找到,将会调回到web.xml配置文件,利用下面的index页面来回显信息:

<welcome-file-list>        <welcome-file>index.html</welcome-file>    </welcome-file-list>
    struts2中的路劲问题是根据action的路劲而不是根据jsp本身的路劲来确定的,所以尽量别使用相对路劲,而应该使用绝对路劲。在Jsp中用request.getContextRoot来拿到webapp的路劲,或者使用myeclipse,通过指定basepath来获取webapp路劲。

     4.使用通配符配置

        -------使用通配符来配置action
 使用通配符匹配来配置action,可以讲配置降到最低。甚至可以只编写一个action配置,来满足所有action请求及未来的添加的action请求。
 
 使用通配符来配置action,所有action需要遵循一定的规范。下面是一个例子,它通过一个配置来满足所有遵循下面规则的action请求处理。
 
 此例子的规范:
  配置中所有action名称的命名格式:
   action名_method名
   如Test_add, 它的Test为class指定的action名,add为其中的一个方法。
  配置如下:
   

<action name="*_*" class="cn.itcast.action.{1}Action" method="{2}">            <result name="success">                /WEB-INF/jsp/{1}_{2}_success.jsp            </result>            <result name="error">             /WEB-INF/jsp/{1}_{2}_error.jsp            </result>        </action>

        
     两个action示例:
      

public class UserAction extends ActionSupport {     public String write(){      return SUCCESS;     }          public String read(){      return ERROR;     }   }      public class TestAction extends ActionSupport {     public String add(){      return SUCCESS;     }          public String update(){      return ERROR;     }   }


   
   URL:访问示例
    http://localhost:8080/Struts2_0001/test/User_read  将访问UserAction的read方法
    http://localhost:8080/Struts2_0001/test/User_write 将访问UserAction的write方法
    http://localhost:8080/Struts2_0001/test/Test_update  将访问TestAction的update方法
    http://localhost:8080/Struts2_0001/test/Test_add   将访问TestAction的add方法
   
   对上面的访问,配置都无需改变,更可贵的是,在后续添加新的action及方法时,只要按照上面的命名约定,此配置都可以支持,不需
   要做任何变动。
   
   这种方法的唯一要求就是要遵循相关约定。只有都遵循了相关约定,配置文件可以做到很简单。这一点在实际开发中很重。

 

0 0