struts2学习小结(1)


一、Action中定义多个方法

通常情况下,我们都将业务逻辑代码放在Action的execute方法中进行处理,但对于一些需要实现多个功能的Action,那么做就太不合适了。这个时候我们就需要根据不同的功能需求,在Action中定义多个方法。比如Action需要完成注册和登陆两项功能可以设计代码为:



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package  wwfy.action.user;
 
public  class  UserAction {
 
     private  String username;
     private  String password;
 
     public  String getUsername() {
         return  username;
     }  
     public  void  setUsername(String username) {
         this .username = username;
     }
     public  String getPassword() {
         return  password;
     }
     public  void  setPassword(String password) {
         this .password = password;
     }
 
 
     public  String login() {
         // 只有用户名为wwfy,密码为123456方可成功登陆
         if  (username.equals( "wwfy" ) && password.equals( "123456" )) {
             return  "loginSuccess" ;
         } else  {
             return  "loginError" ;
         }
     }
 
     public  String regist() {
         if  (username.equals( "" ) || password.equals( "" )) {
             return  "registError" ;
         } else  {
             return  "registSuccess" ;
         }
     }
}

 

在struts.xml中配置Action

 

1
2
3
4
5
6
7
8
< action  name="loginUser" class="wwfy.action.user.UserAction" method="login">
     < result  name="loginSuccess">/jsp/loginSuccess.jsp</ result >
     < result  name="loginError">/jsp/loginError.jsp</ result >
</ action >
< action  name="registUser" class="wwfy.action.user.UserAction" method="regist">
     < result  name="registSuccess">/jsp/registSuccess.jsp</ result >
     < result  name="registError">/jsp/registError.jsp</ result >
</ action >

 

注意method中选择对应的方法。


二、struts.xml中的结果类型与视图

实际上在Struts2框架中,一个完整的结果视图配置文件应该是:

1
2
3
4
5
< action  name="Action名称" class="Action类路径" method="方法名">
     < result  name="逻辑视图名称" type="结果类型">
         < param  name="参数名称">参数值</ param >
     </ result >
</ action >


结果类型的作用:返回类型在struts2框架下的struts-default.xml中可以找到所支持的结果类型。

常用的主要有三种:请求转发、重定向、Action链接

1、请求转发(dispatcher)

这是Struts2的默认结果类型。


    • 请求转发只能请求转发至同一个web应用。
    • 利用请求转发浏览器地址栏不会发生变化。
    • 利用请求转发调用者与被调用者之间共享相同的request对象和response对象,他们属于同一个访问请求和响应。

    2、重定向(redirect)

    • 重定向不仅可以指定到一个web应用,还能够制定到任何JSP资源。
    • 重定向的访问结束后,浏览器的地址栏中显示URL变化。
    • 重定向的调用者与被调用者使用各自的的request对象和response对象,他们属于两个独立的访问请求和响应过程。

    重定向之后会丢失前一次访问的数据信息。

    3、Action链(chain)

    Action链是通过一个chain的拦截器实现的。

    第一个Action执行成功后有chain拦截器负责发出第二个Action的请求,Action链中所有Action都共享一个值栈,当执行Action的时候,会将自身的数据全部压入值栈。


    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    package  wwfy.action.user;
     
    public  class  UserAction {
     
         private  String username;
         private  String password;
     
         public  String getUsername() {
             return  username;
         }
     
         public  void  setUsername(String username) {
             this .username = username;
         }
     
         public  String getPassword() {
             return  password;
         }
     
         public  void  setPassword(String password) {
             this .password = password;
         }
     
     
         public  String login() {
             // 只有用户名为wwfy,密码为123456方可成功登陆
             if  (username.equals( "wwfy" ) && password.equals( "123456" )) {
                 return  "loginSuccess" ;
             } else  {
                 return  "loginError" ;
             }
         }
     
         public  String regist() {
             if  (username.equals( "" ) || password.equals( "" )) {
                 return  "registError" ;
             } else  {
                 return  "registSuccess" ;
             }
         }
    }

     

    在struts.xml中配置Action

     

    1
    2
    3
    4
    5
    6
    7
    8
    < action  name="loginUser" class="wwfy.action.user.UserAction" method="login">
         < result  name="loginSuccess">/jsp/loginSuccess.jsp</ result >
         < result  name="loginError">/jsp/loginError.jsp</ result >
    </ action >
    < action  name="registUser" class="wwfy.action.user.UserAction" method="regist">
         < result  name="registSuccess">/jsp/registSuccess.jsp</ result >
         < result  name="registError">/jsp/registError.jsp</ result >
    </ action >

     

    注意method中选择对应的方法。

    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值