jq AJAX拦截器

jq AJAX拦截器,第1张

参考文档:

>

mybatis自定义拦截器(一)基本使用

mybatis自定义拦截器(二)对象详解

1 不同拦截类型执行顺序:

2 多个插件拦截的顺序?

需要注意的是,因为拦截器Aa和拦截器Bb均是拦截的StatementHandler对象,所以拦截器B在此获取StatementHandler的时候,获取的是代理对象。

3 多个插件plugin()和intercept()方法的执行顺序

先执行每个插件的plugin方法,若是@Intercepts注解标明需要拦截该对象,那么生成类型对象的代理对象。(即使该插件需要拦截该类型对象,但是依旧会执行下一个插件的plugin方法)。知道执行完毕所有的plugin方法。在执行每个Intercept方法。

自定义拦截器必须使用mybatis提供的注解来声明我们要拦截的类型对象。

Mybatis插件都要有Intercepts [in特赛婆斯] 注解来指定要拦截哪个对象哪个方法。我们知道,Pluginwrap方法会返回四大接口对象的代理对象,会拦截所有的方法。在代理对象执行对应方法的时候,会调用InvocationHandler处理器的invoke方法。

具体规则如下:

如果我们的拦截器需要一些变量对象,而且这个对象是支持可配置的。

类似于Spring中的@Value("${}")从 applicationproperties 文件中获取。

使用方法:

方法中获取参数: propertiesgetProperty("username");

问题:但是为什么不直接使用@Value("${}") 获取变量?

解答:因为mybatis框架本身就是一个可以独立使用的框架,没有像Spring这种做了很多的依赖注入。

这个方法的作用是就是让mybatis判断,是否要进行拦截,然后做出决定是否生成一个代理。

需要注意的是:每经过一个拦截器对象都会调用插件的plugin方法,也就是说,该方法会调用4次。根据@Intercepts注解来决定是否进行拦截处理。

解答:判断是否拦截这个类型对象(根据@Intercepts注解决定),然后决定是返回一个代理对象还是返回原对象。

故我们在实现plugin方法时,要判断一下目标类型,是本插件要拦截的对象时才执行Pluginwrap方法,否则的话,直接返回目标本身。

我们知道,mybatis只能拦截四种类型的对象。而 intercept 方法便是处理拦截到的对象。比如我们要拦截 StatementHandler#query(Statement st,ResultHandler rh) 方法,那么 Invocation 就是这个对象, Invocation 中有三个参数。

orgapacheibatisreflectionSystemMetaObject#forObject :方便的获取对象中的值。

案例:将参数拼接到sql语句。

因为已经执行了ParameterHandler拦截器,故Statement对象已经是完全拼接好的SQL语句。

一个MappedStatement对象对应Mapper配置文件中的一个select/update/insert/delete节点,主要描述的是一条sql语句。其属性为:

>

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

额,1楼在误导LZ,楼主根本没学过struts,所以就别再让他使用ActionForm啦!而且用ActionForm的话,还得自己去建form的po,很麻烦。 还有2楼的朋友,你看看他贴出来到代码,他用的是struts1而不是struts2,所以不会有那些属性的get和set方法了。

你要取得表单的值,直接在execute方法里面用requestgetParameter()这个方法去取就行了,比如:

String userName = requestgetParameter("userName");

后面的那个userName是页面表单组件里面的name属性,比如:

<input type="text" name="userName" size="30" />

其它的值都是以此类推的。 在Java中取得form表单里的值是很简单的,只是你不熟悉而已,熟悉了就知道了。 希望对你能有所帮助!

spring mvc 的工作流程:

1、用户发送请求至前端控制器DispatcherServlet。

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet调用HandlerAdapter处理器适配器。

5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、Controller执行完成返回ModelAndView。

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、ViewReslover解析后返回具体View。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户。

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。

SpringMVC是一种web层的mvc框架,用于替代servlet(处理响应请求,获取表单参数,表单验证等)。

MVC即Model-View-Controller,将应用按照Model(模型)、View(视图)、Controller(控制)这样的方式分离。

视图(View):代表用户交互界面,对于Web应用来说,可以是HTML,也可能是jsp、XML和Applet等。

一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。

模型(Model):是业务的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。

MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,抽象与具体不能隔得太远,也不能太近。

MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。

控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。

划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。

以上就是关于jq AJAX拦截器全部的内容,包括:jq AJAX拦截器、什么是拦截器,如何配置拦截器,如何使用拦截器、mybatis(3)—自定义拦截器(上)基础使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10136180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存