
Ognl是独立的项目,不是Struts2的一部分,只是经常和Struts2一起使用,获取值栈的数据。如果想要使用Ognl首先导入包。
El表达式,在jsp页面中获取域对象里面的数据,显示到页面中。
使用ognl和Struts2标签一起做下面的 *** 作
值栈是数据的中转战,类似于域对象,之前 *** 作,可以向域对象里面设置值,可以从域对象里面获取值。向域对象设置值,从域对象获取值。获取值栈的数据,可以通过struts2标签和ognl表达式获取。
每次访问action的时候,都会创建action实例,每个action实例里面只有一个值栈对象(valueStack对象)
在action实例中,值栈是如何存在的?
Struts2框架将把ValueStack对象保存在名为"strutsvalueStack",的请求属性中,request中RequestsetAttribute("strutsvalueStack")
从request域对象里面使用getAttribute获取,名称为strutsvalueStack
得到ActionContext,使用ActionContext里面的方法得到
值栈包含两部分内容
在action里面把数据放到域对象里面,这个数据存到context里面,context里面的Map结构,key名称为request、session、Application、attr、parameters
实现原理:首先增强request里面的getAttribute方法,而getAttribute方法获取域对象里面的值
增强逻辑:首先调用getAttribute获取域对象里面的值,如果获取了值,直接返回;如果获取不到域对象的值,获取到值栈对象,从值栈中把值取出来,赋值给域对象中的参数数据。所以,通过EL表达式就可以获取值栈数据。
用来获取值栈里面context里面的数据
一般使用在Struts2的表单标签里面
ognl不是Struts2表达式的一部分,是独立的项目,经常和Struts2的标签一起使用,获取值栈
类似域对象,数据的中转站,存值和取值
每个Action对象里面都只有一个值栈对象,在值栈request域里面
获取context里面数据,ognl之前写#
Root是list集合;Context是Map集合;Struts2里面默认 *** 作数据都在Root里面,把数据放到域对象里面存到context里面
Html中表单标签
Form :属性 action、method、enctype
在form里面有很多的输入项
大部分在input里面 type=””
text : 普通输入项
password :密码输入项
radio :单选输入项
checkbox:复选框
file: 文件上传项
hidden:隐藏项
button:普通按钮
submit: 提交按钮
reset: 重置按钮
select : 下拉输入框
textarea:文本域
struts2的表单标签对应的输入项,没有文件上传输入项
现象: 只是校验其中的一个输入项是否为空,但是把其他的输入项也清空了
(1) 获取隐藏项里面的uuid值
(2) 获取session域对象里面的uuid值
(3) 比较这两个值是否相同,如果相同,获取表单其他值进行 *** 作
(4) *** 作完成之后,把session域里面的值清空
(5) 如果这两个值,不相同,不进行 *** 作
使用struts2里面拦截器实现,token,这个token拦截器不是默认执行的拦截器
token拦截器不是默认的所以要声明拦截器 strutsxml
如果想将struts2 action中的某个对象,链表或是字符串传到jsp页面,只需在action中定义\x0d\这个对象,链表或字符串,然后生成get,set方法。这样页面就可以获取了。例如:\x0d\public class LoginAction extends ActionSupport{privateUseruser; // 对象privateStringusername;// 字符串publicListlist = new LinkedList();//链表public User getUser() {\x0d\return user;}\x0d\public void setUser(User user) {\x0d\thisuser = user;}\x0d\public String getUsername() {\x0d\return username;}\x0d\public void setUsername(String username){\x0d\thisusername = username;}\x0d\public List getList() {\x0d\return list;}\x0d\public void setList(List list) {\x0d\thislist = list;}}1、jsp页面获取字符串的方法\x0d\k||(g(function(){alog("speedset","lt",+new Date),e=bcreateElement(c),easync=!0,esrc=d+"v="+~(new Date/864e5)+~(new Date/864e5),f=bgetElementsByTagName(c)[0],fparentNodeinsertBefore(e,f)}),j())}}(window,document,"script","/hunter/alog/dpmobileminjs"); windowtt = 1682751680;
jsp是无法直接或取页面中js变量的值,但是可以通过间接的方法,用html的方法
例如:
<input
id="data"
type="hidden"
value="你想要的数据"
/>
在html里定义一个上面的标签,把js的值放到标签里,然后jsp去获得这个值
以上就是关于Struts2--day04全部的内容,包括:Struts2--day04、jsp如何获取struts2 action中返回的对象的值、怎么在jsp页面中获取js的变量值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)