SSH总结(一)
来源:互联网 发布:mac好用的mysql客户端 编辑:程序博客网 时间:2024/05/21 15:00
SSH总结(一)
其实学习struts等框架,不仅要知道怎么用,我们还应该多去看看框架的源码,知道为什么可以这样使用,凡事都知道为什么,以这样的态度学习,我们才能更加深一步的理解原理好实现方式,本类博客主要是个人学习总结。如有不足之处,请多多指教,以便我能更快的进步。!!!!
1、获取reqesut和response对象方法
Map request = (Map)ActionContext.getContext().get(
"request"
);
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse()
<span style=
"color: #000000;"
>
public
class
BaseAction<T>
extends
ActionSupport
implements
ModelDriven<T>,ServletRequestAware{
protected
HttpServletRequest request
@Override
public
void
setServletRequest(HttpServletRequest arg0) {
this
.request=arg0;
}
}
</span>
2、前后台传值
这里主要是实现ModelDriven接口,代码如下:
public
class
BaseAction<T>
extends
ActionSupport
implements
ModelDriven<T> {
protected
T model;
@Override
public
T getModel() {
return
model;
}
}
如果页面中input标签的name和javabean中的属性一一对应,那么只需要这样,后台就可以把值注入到实体对象中。知道了是怎么使用的,但是我们还应该知道它的原理是什么!!!
实现ModelDriven就可以注入参数,主要是struts框架中有ModelDrivenInterceptor,打开源代码,可以在源代码中看到ModelDriven的拦截器和实现代码,继续阅读struts的源代码,在下面的一段源代码中,struts拦截器把参数放入值栈中。这样就可以实现参数的注入了。再想想前台和后台的传值方法,也就不难理解他的原理啦!!!
public
class
ModelDrivenInterceptor
extends
AbstractInterceptor {
@Override
public
String intercept(ActionInvocation invocation)
throws
Exception {
Object action = invocation.getAction();
if
(action
instanceof
ModelDriven) {
ModelDriven modelDriven = (ModelDriven) action;
<span style=
"color: #000000;"
> ValueStack stack = invocation.getStack();
Object model = modelDriven.getModel();
if
(model !=
null
) {
stack.push(model);
}
</span>
if
(refreshModelBeforeResult) {
invocation.addPreResultListener(
new
RefreshModelBeforeResult(modelDriven, model));
}
}
return
invocation.invoke();
}
}
3、PreResultListener 接口
在struts框架中,拦截器分为before、after和PreResultListener 拦截器。after拦截器是指在拦截器中定义的代码,它们存在于invocation.invoke()代码执行之前,顺序执行;after拦截,是指在拦截器中定义的代码,它们存在于invocation.invoke()代码执行之后;有的时候,before拦截和after拦截对我们来说还是满足不了我们的需求,因为我们需要在Action执行完之后,还没有回到视图时执行一些操作。这就可以在Action的方法中进行注册,使用ActionInvocation.addPreResulteListener(),代码使用如下:
ActionInvocation actionInvocation = ActionContext.getContext().getActionInvocation();
actionInvocation.addPreResultListener(
new
PreResultListener(){
public
void
beforeResult(ActionInvocation action,String resultCode){
//TO-DO
}
});
- SSH总结(一)
- SSH 案例学习总结(一)
- OA项目总结 ssh 框架学习总结(一)
- SSH项目的总结一
- SSH框架的总结(hibernate)(一)
- SSH——hibernate阶段总结(一)
- SSH——Hibernate实体关联映射总结(一)
- 【Java】SSH网上商城错误及解决方案总结(一)
- 【SSH】ssh再认识(一)
- Magento 升级总结 (一) — SSH
- (转)SSH总结
- SSH 总结(1)
- SSH总结(二)
- 系统学习SSH(一)--SSH
- SSH框架总结(框架分析+环境搭建+实例源码下载)--这个很值得一读~!
- java项目部署总结(一)JDK 、git、maven、ssh等安装与配置
- SSH框架事务(一)
- SSH学习笔记(一)
- 无题
- PAT Basic 1004
- 在laravel框架中使用mongodb数据库
- Java 多线程 并发 锁 Java线程面试题 Top 50
- 算法设计步步高:1.入手从最容易想到的分析开始写代码 2.分析补缺 3.补漏及完善 4.稍事优化
- SSH总结(一)
- 《TCP/IP详解 卷1:协议》 读书笔记 第四章 ARP:地址解析协议
- object-c之UITableView的数据索引控件UISearchController
- 事业之感悟
- SSH总结(二)
- C++显性转换
- Android:代码修改layout_marginBottom的属性
- 并发框架Disruptor几个Demo
- 也说CMS