拦截器和文件上传和Struts2AJAX学习笔记

来源:互联网 发布:北斗测亩仪软件下载 编辑:程序博客网 时间:2024/05/24 07:43

什么是拦截器
拦截器也是一个类,可以在action被调用之前和之后执行的代码,而框架的很多功能也是通过拦截器实现的
拦截器的特点
拦截器可以自由组合,可以拦截action的请求,可以在action执行之前和之后执行代码,实现某些功能.
在哪里用拦截器?
Struts2大部分是用拦截器实现的
如:在接收参数,数据验证,文件上传,国际化
应用程序:需在action执行的前后执行特定的功能
action执行时间统计,访问权限管理
action添加功能
action的执行过程是一个递归的过程
Struts-2.0自带的拦截器如参数拦截器等
拦截器器栈
拦截器的配置和使用
实现方法:
1/通过继承AbstractInterceptor实现拦截器类
重写intercept()方法
2/实现Interceptor接口
init方法:初始化拦截器所需要的资源
destroy:释放init中分配的资源
intercept:实现拦截器功能
3/继承MethodFilterInterceptor类
指定拦截的方法和不拦截的方法

拦截器只能拦截action
重写后在sturts配置文件里配置

<interceptors> //拦截器配置块儿           <interceptor name="timeIt" class="cn.zhr.intercept.TimeInterceptor"></interceptor>//拦截器配置           <interceptor-stack name="myIt" >               <interceptor-ref name="timeIt"></interceptor-ref>               <interceptor-ref name="defaultStack"></interceptor-ref>           </interceptor-stack>//拦截器栈配置       </interceptors>       <default-interceptor-ref name="timeIt"></default-interceptor-ref>      特别提示:拦截器配置顺序要在开头 ,否则报错.Caused by: org.xml.sax.SAXParseException: 元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)"

Ajax使用
1/添加jar包 ,idea里面需要加以一个json插件的包
2/需要在想使用的action所在的package里继承 json-default
3/返回类型type是json,指定返回结果

     <result name="json" type="json">               <param name="includePreperties">                    house.*                </param>            </result>
  public String getJson()throws Exception{        System.out.println("json方法");        house = new House();        house.setHouseId(1);        house.setAddDate(new Date());        house.setHouseType(new HouseType(1,"单身公寓"));        house.setTitle("单身公寓,为你开启爱的空间");        Street street = new Street(1,"中关村大街",new District(1,"海淀区"));        house.setStreet(street);        return "json";    }
<body><button id="submit">获取数据</button></body><script type="text/javascript">    $(submit).bind("click",function(){        $.getJSON("${pageContext.request.contextPath}/house/house!getJson",function(date){            alert(date.house.houseType.typeId);        })    });</script>

总结我觉得sturts2的ajax使用真累

原创粉丝点击