Struts2学习day02

一、Struts2的4种结果处理方式

1、dispatcher:转发

2、redirect:重定向

3.、chain:转发至Action,格式如下:

<result name="success" type="chain">

    <param name="actionName">Demo1Action</param>

    <param name="namespace">/<param>

</result>

4、redirectAction:重定向至Action,格式如下

<result name="success" type="redirectAction">

    <param name="actionName">Demo1Action</param>

    <param name="namespace">/<param>

</result>

注:在源码内,是在ServletRedirectResult类中实现转发和重定向功能的,具体代码与在servlet中的一致,即

转发:request.getRequestDispatcher("userCreate.jsp").forward(request, response);

重定向:response.sendRedirect("indext.jsp");

二、获得ServletAPI

1、先获得当前线程的ActionContext对象

ActionContext ac = ActionContext.getContext();

2、通过ActionContext数据中心来获取ServletAPI。

常用的方法如下:

void put(String key , Object value):将key-value键值放入ActionContext中

Object get(String key):通过key获得值value;

Map<String, Object> getApplication():返回一个Application级的Map对象

Map<String , Object> getSession():返回一个Map类型的HttpSession对象

void setSession(Map<String, Object> session):设置一个Map类型的Session值

void setApplication(Map<String , Object> application):设置Application上下文

或者通过ServletActionContext这个工具类来获取,不过不推荐。

三、参数获取的方式

1、属性驱动

直接在action中定义与前端同名的一个属性。属性意味着需要有set和get方法。

这样做的理论基础:每次请求时,就会创建一个Action。故Action线程安全,可以在Action中直接定义属性。

2、对象驱动

在action中定义一个对象的属性,同时配置set/get方法,如user对象

在前端界面部分,只需要在命名时,在名字前加对象名作为前缀如,user.name

3、模型驱动

实现ModelDriven接口,实现getModel()方法,即 return user;

同时需要将user实例化,即 private User user = new User();

此时的user是一个成员变量,不需要set/get方法。

前台页面部分,与属性驱动一致,name即可,不需要user.name。

四、集合类型封装

1、List类型

list与属性驱动的方式一致,首先创建一个list属性及其get/set方法,其次在前端页面命名为list,即可获得相应的值。

区别:前端页面可以设置将对应的值存在list的第几个元素,如<input type="text" name="list[3]" />,可将该文本框内的内容填入list[3]中,之前元素均为null。

2、Map类型

后端部分一致,也是属性驱动。

前端:需要设置key。如

<input type="text" name="map["haha"]" />

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值