博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2与servlet的耦合
阅读量:5861 次
发布时间:2019-06-19

本文共 2007 字,大约阅读时间需要 6 分钟。

hot3.png

struts2框架有一套好用且强大的标签,并且很好的封装性,实现了表单标签,逻辑标签,显示标签,Ajax标签(基于dojo,json)。个人觉得使用起来比较顺手,也简化了许多后台实现,例如:防止表单重复提交的token,在struts2中只要适用标签和拦截器就可以实现,不需要在action中写任何的验证性代码。为项目的开发提供了便利,但是一切事物都有两面性。struts2有许多细节需要注意,有些标签的使用我有时也搞不清楚,明明在这个页面里可以使用,但是换个页面就不好使了,例如实现时间和日期选择的标签,dojo文本编辑器的标签等等。而且值得注意的是这些标签的使用还会随着主题标签的变化而变化,标签在使用时次序颠倒也会影响实现。所以对于不熟悉struts2标签的朋友来说,用这个开发是挺郁闷的。但是放弃标签不用,又不可取。因为初学的人会认为struts2的页面传值就是借助struts2的标签实现的,与之前struts1的request,response模式有别。struts2是对request,response模式进行了封装,从而借助标签实现action自动获取,这个框架的源码我也一直没看。所以不能确定其内部实现,不过也不影响我讲这个主题struts2与servlet的耦合。这个实现就使得我们可以用struts1的传值方式,来使用struts2。使得与servlet技术的耦合。          不过自从两个月前助学网停工以后,就一直没有用过struts2,所以现在感觉非常手生。好了切入正题。struts2与servlet的耦合有三种实现方案:1.ActionContext在xwork2.jar的com.opensymphony.xwork2.ActionContext中。这个是最推荐的一种实现。action不需要实现接口,只需要引入这个目录就可以。ActionContext.getContext().put("zhangsan","helloworld"); 只需要一句代码就可以放入response中,页面直接用EL表达式${requestScope.zhangsan}获取。取代了标签
2.servletActionContext在struts2-core.jar中,org.apache.struts2.ServletActionContext同样action不需要实现接口,只需要引入这个目录就可以。HttpServletResponse response = ServletActionContext.getResponse(); 实现了response对象,然后只需要像往常一样适用 Cookie cookie = new Cookie("username", this.getUsername());cookie.setMaxAge(1000);response.addCookie(cookie); 3.ServletRequestAware,ServletResponseAware接口实现首先实现接口,然后实现request或response对象。 package com.test.action;.public class LoginAction extends ActionSupport implements ServletRequestAware { private static final long serialVersionUID = 3936066275134469754L; // private HttpServletResponse response; private HttpServletRequest request; @SuppressWarnings("unchecked") public String execute() throws Exception { . } @SuppressWarnings("unchecked") public String hello() throws Exception { . request.setAttribute("zhangsan","helloworld"); . } public void setServletRequest(HttpServletRequest request) { this.request=request; }} 这个方法不推荐,配置麻烦,影响可读性和测试型。没有利用struts2中的封装实现。

转载于:https://my.oschina.net/zlp5201/blog/404236

你可能感兴趣的文章
Python学习笔记(四)—第六天,easygui
查看>>
深入理解计算机系统(1.2)---hello world的程序是如何运行的
查看>>
asp.net core 教程(六)
查看>>
利用Jmeter测试CSRF令牌验证的Web API
查看>>
Glide图片框架
查看>>
VMware网络适配器设置
查看>>
Python3学习笔记10-条件控制
查看>>
【翻译】Deft JS:通过依赖注入实现低耦合MVC
查看>>
oracle如何修改单个用户密码永不过期
查看>>
传播正能量-IT的笑傲江湖
查看>>
Linux运维基础命令笔试题--看看你会多少?
查看>>
Oracle 12c dataguard云上挖坑记--为某机场贵宾业务部署oracle 12c到云端
查看>>
Elasticsearch Index API & Aggregations API & Query DSL
查看>>
腾讯(成都)创新设计思维_ BY 高煥堂
查看>>
ospf v3 及WIN XP ipv6
查看>>
SQL Server 安装
查看>>
老生常谈一下在AD中细粒度设置密码策略
查看>>
大侠唐在飞:WIN8试用记
查看>>
MongoDB介绍
查看>>
【ZooKeeper Notes 13】ZooKeeper Watcher的事件通知类型
查看>>