struts2页面跳转的方式
①转发
②重定向 转发到自己的action type变为chain
<result name="success" type="redirectAction">
<param name="actionName">targetAction_login</param>
<param name="namespace">/</param>
</result>
③转发自己的action
<result name="success" type="chain">
<!--跳转到下一个action的action的名字-->
<param name="actionName">targetAction</param>
<!--跳转到下一个action的命名空间-->
<param name="namespace">/</param>
</result>
④不跳转 接受Ajax请求
1)适用原生的servletAPI
ActionContext在strus2中 我们把他叫做数据中心
Request 原生对象
Response 原生对象
Session 原生对象
session Context 原生对象
Request 域 Map struts2不建议使用,如果要用就用ActionContext对象
Session 域 Map
sessionContext 域 Map Application
Attr 域 Map
actionContext生命周期:
所有的servelt对象都存在,他的生命周期是随其中最短的人而创建和销毁。也就是request对象。
每次请求到来action Content都会重新创建。
所以他解决了线程安全,使用ServeltApi响应请求
首先获得response对象(两种方法)然后回到原生态servelt响应中
Action方法中的返回值必须是NONE(如果设置为none那么在strits.xml重就不用写了)
2)Stream
①在Action类中创建一个InputStream对象
②给这个对象添加一个get方法
③strtus.xml中的result中的标签中设置type = stream
④Action最总可以将json字符串转化为inputStream流
3)使用json插件
①导包
②建立一个action类
定义你想要返回的json的键名
生成get set 方法
然后在action访问的方法为这个json键名的对象进行赋值
③配置struts.xml文件
重新建package extends 继承不能写 struts-default 要写 json-default(在struts-json-plugin包中)
action不变
result name 属性不变type 属性名变为json(在strut-json-plugin 的struts-plugin.xml中)
1. 属性驱动
原因:struts2是线程安全
在action类中直接定义属性名 然后设置get set 方法
在访问的地方传入对应的属性名和值,struts2自动接受
2. 对象驱动
定义一个bean类 在Action
定义一个对象 并且加上get set 方法
并且再去请求的地方 请求参数键值有规定,必须按照规定的对象名 属性名传递
3. 模版驱动
实现ModuleDriver<user>接口
重写方法
在action 中创建一个user对象,并且要new对象
请求的地方还是按照对象属性传递