

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Springmv(高级知识复习:SpringmvCSpringmvC 匡架:DispatcherServlet前端控制器:接受request,返回responseHandlerMapping处理器映射器:根据url查找Handler(可以通过xml配置,注解方式)HandlerAdapter处理器适配器:根据特定规则去执行Handler,编写Handler时需要按照HandlerAdapter的要求去编写。Han dler处理器(后端控制器):需要程序员去编写,常用注解开 发方式。Handler处理器执行后结果是ModelAndView,具体开发时Handler返回方法值类型包括:ModelA
2、ndView、String(逻辑视图名) 、void(通 过在Handler形参中添加request和response,类似原始servlet开发 方式:注意:可以通过制定response响应的结果类型实现json数据 输出。)View resolver视图解析器: 根据逻辑视图名生成真正的视图 (在springmvc中使用View对象表示)View视图:jsp页面,仅是数据展示,没有业务逻辑。注解开发:使用注解方式的处理器映射器和适配器:在实际开发中,使用代替上边处理器映 射器和适配器配置。controller注解必须要加,作用:标识类是一个Handler处理器。requestMapping
3、注解必须要加,作用:1、对url和Handler的方法进行映射。2、可以窄化请求映射,设置Handler的根路径,url就是跟路 径+子路劲请求方式。3、可以限制http请求的方法映射成功后,springmvc框架生成一个Handler对象,对象中只包 括一个映射成功的method。注解开发中参数绑定:将request请求过来的Key/value的数据(理解一个串),通过转 换(参数绑定的一部分),将key/value串转换成形参,将转换后的结 果传给形参(整个参数绑定过程。)Sprin gmvc所支持参数绑定:1、默认支持很多类型:HttpServletRequest、response se
4、ssionmodel/modelMap(将模型数据填充到request域)2、支持简单数据类型:整型、字符串、日期。只要保证request请求的参数名和形参名一致,自动绑定成功。如果request请求的参数名和形参名不一致,可以使用requestParam(指定request请求的参数名,requestParam加载形参的前边。)3、支持pojo类型只要保证request请求的参数名和pojo中的属性名一致,自 动将request请求参数设置到pojo属性中。注意:形参中即有pojo类型又有简单类型,参数绑定互不 影响。自定义参数绑定:日期类型绑定自定义:定义的Converterv源类型,目标
5、类型接口实现类,比如:ConvertervString,Date示:将请求的日期数据串转换成java中的日期类型。注意:要转换的目标类型一定要和接受的pojo中的属性类型一致。将定义的Converter实现类注入到处理器适配器中。Springmvc和struts2的区别:Springmvc面向方法开发(更接近service接口的开发方式),struts2面向类开发。Springmvc可以单例开发,struts2只能多例开发。1.课程安排上午:在商品查询和商品修改功能案例驱动下进行学习:包装类型pojo参数绑定(掌握)。集合类型的参数绑定:数组、list、map.商品修改添加校验,学习sprin
6、gmvc提供校验validation(使用的是hibernate校验框架)数据回显统一异常处理(掌握)下午:上传图片json数据交互RESTfu皮持拦截器2.包 装类型 pojo 参数绑定2.1 需求商品查询controller方法中实现商品查询条件传入。2.2 实现方法第一种方法:在形参中添加HttpServletRequest参数,通过request接受查询条件参数。第二种方法:在形参中让包装类型的pojo接收查询条件参数。 分析:页面传参的特点:复杂,多样性。条件包括:用户账号、商品 编号、订单信息。 。 。 。如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单 类型)中,
7、pojo类属性比较多,比较乱。建议使用包装类型的pojo,pojo属性是pojo。2.3页面参数和 controller 方法形参定义页面参数:商品名称:注意:itemsCustom和包装pojo中的属性一致即可。Controller方法形参:public ModelAndView queryItems(HttpServletRequest request, ItemsQueryVo itemsQueryVo) throwsExceptionpublic class ItemsQueryVo / /商品借息private Items items;/为了系袋可扩展性,对原始生平的M进牡 Jpri
8、vate ItemsCustom LtemsCustom;3. 集合类型绑定3.1 数组绑定3.1.1 需求商品批量删除,用户在页面选择多个商品,批量删除3.1.2 表现层实现关键:将页面选择(多选)的商品id,传到controller方法的形参, 方法形参使用数组接受页面请求的多个的商品的id。controller方法定义:/批重刪除商品信息RequestMapping(/deletItems) public String dele七“七ems( In七E名页面定义:iteui5=-,$itemsLi5t nvar=uitem_input typ=irchckboxR!n白 e“value=
9、r,$iteniid Sitem-name pricemt format Date value=w$item.createtimeupatt er n=iryyyy - MM- dd WH; w;55-7 item.detail Exceptionthrows傑改3.2 list 绑定3.2.1 需求通常在需要批量提交数据时,将提交的数据绑定到listvpoj o中,比如:成绩录入(录入多门课成绩,批量提交),本例子需求:批量商 品修改,在页面输入多个商品信息,将多个商品信息提交到controller方法中。3.2.2 表现层实现controller方法定义:1、进入批量商品修改页面(页面样式
10、参考商品列表实现)2、批量修改商品提交使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list属性public class ItemsQueryVo /商品信息private Items items j为了系统可扩展性,对原贻生感的四进行扩展prixm七e ItEinsCus七om i七EIDSCUS七om;/批里商品信息private List itemsList;)7批葩改商品握交通过工七颐叫汕斶删比里提册两吊信息*特两品信息存他到itenisQueryVoitemsListlt.public StringeditltemsAllSubmit(rtemsQue
11、ryVo itemsQueryVoJthraws Exception!peturn success1;页面定义:ttr斤性中的pojoeoff性名4. springmvc 校验4.1 校验理解项目中,通常使用较多的是前端的校验,比如页面中js校验。对于安全要求较高点建议在服务端进行校验。服务端校验:控制层controller:校验页面请求的参数的合法性。在服务端控制 层controller校验,不区分客户端类型(浏览器、手机客户端、远程tdxinput ndme=JtdXlnipmt irianie=lL inptj七namc=,rvalu= cfmt : f-oraa七c valLAB= $
12、it皤-cro-ata-timo- 1detail /X/td调用)业务层servic(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数。持久层dao: 般是不校验的。4.2springmvc 校验需求Springmvc使用hibernate的校验框架validation(和hibernate没有任何关系)校验思路:页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展现到页面上。具体需求:商品修改、添加校验(校验商品名称长度,生成日期的非空校验), 如果校验出错,在商品修改页面显示错误信息。4.3 环境准备Hi
13、bernate 的校验框架 validation 所需要的 jar 包hitn&te-validator-4. 3. D. Final, jir严i1.0. CH2. jar vd.i Jaticn-ipi-!. 0 0. GA j ar4.4 配置校验器t-寸離按您便用的溺文件,在立件中碗校脸雷逞憶却 娴|祥指宦贝僻认便用以世莎籍-约下的巾H曲七驹駅乩甲卯打廿吊 -校验皑逞信艇蛊交伴- bean id= mes SGgeSowrce rclass= *porg. spriflg/raiateworhcontextstrppwt. ft&loadabLeWesourreflud
14、IeHessageSource柑(-OX件名一 property nemie =Hbas encesclassipath:Cu s t ot Va 1 i d a t i onMe s sages t猶交件備码IS武一 A!-时资煉袁件内吝缓存时闻 里拉讪、|1/ f ha Sin 卞4.5 校验器注入到处理器适配器中4.6 在 pojo 中添加校验规则在 ItemsCustom.java 中添加校验规则:public class Items private Tn七eger id;/校验容称在1到了荐符中间/message是梶示校验出错显示的信息(fflSize(mLn=ljmessage二i
15、tems * name * length.error0)private 5七ring name;private Float price;private String pic;丰空鮭Not Nul 1 ( message=items. creat etime. isNpll) private Date crea七EtimiE;validator=ffv/atidc?tor 4.7 CustomValidationMperties在 CustomValidationMperties 中配置校验错误信息:戟忝加校验错误提交信息itemsname -lengt
16、h ,error=请输入1到宜符的商品名称items * createtime* isNUlUK输入商品的生庐日期4.8 捕获校验错误信息RequestMapping(r7editItemsSulbmit、public String editItemsSubiiiit(HttpServ let Request req ue s t j I n t ege r idValidated ItemsCustom itemsCustoimji. BindingResult bind in gResult) throws Exception 在需要校验的pojo前边添加Validated,在需要校验的p
17、ojo后边添 加Bin di ngResult接受校验出错信息。注意:Validated和Bin di ngResult是配对出现,并且形参顺序是固定 的(一前一后)4.9 在页面中显示校验错误信息在 controller 中将错误信息传到页面即可。Req u es tMa pping /edit Item s Submit allErrors = bindingFtesult, get凸llErborsO ;for(ObjectError objettError:前出t吕误信息Sy st em. ob t. pri n t lri (ob jec t E r ror. get Def sui
18、t Message ();/Fr错误信medel.addAttribute(allErTOPS, allError5)/岀辖垂新郢苗品 f 屢改贡面return匚七包皿乞/电ditTtemE;页面显示错误信息:J $ error * defaultMessage4.10 分组校验4.10.1 需求在pojo中定义校验规则,而pojo是被多个controller所共用,当不同的controller方法对同一个pojo进行校验,但是每个controller方法 需要不同的校验。解决办法:定义多个校验分组(其实就是一个java接口),分组中定义有哪些规 则每个controller方法使用不同的校验分
19、组。4.10.2 校验分组public interface ValidGroupl /接口中不需要定文任何方法,仅是对不同的校验规则进行分组/此分组只校验商品名称长度4.10.3 在校验分组规则中添加分组校验名称在1到弓蔣蒔中同/message是提示校验刿逻示的洁息/groups:此樓瞪爾于哪牛分弟,邑rou“可以走义豹吩組Size(nnin=lJDnax=30Jmessage=, items* name* lengths error11Jgroups=ValidGroupl - class)4.10.4 在 controller 方法使用指定分组的校验商品肯恳辭栓交在講朋綁职加茵边潭加弹他
20、Hdated.在爲要帕的 6!虹沁物 BindingResult bindingResuItW 按酿出钳信虫 /sig:iVa 1 id a t ed-lflBi n d i ngRe su It bindingResult是配对岀 Bb # 且开维 U 貯:?E 崖的前一居)F “111】“仆心1打bp.p 1 y“55. 数据回显5.1 什么数据回显提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。5.2 pojo 数据回显方法1. springmvc默认对pojo数据进行回显Pojo数据传入controller方法后,springmvc自动将pojo数据放到request域中,
21、key等于pojo类型(首字母小写)使用ModelAttribute指定回显到页面在request中的key2. ModelAttribute还可以将方法的返回值传到页面在商品查询列表页面,通过商品类型查询商品信息。在controller中定义商品类型查询方法,最终将商品类型传到页面/商品分类/IgnLtyp芳表示最终将方法返回值就在requ亡s t中的ky iSModelAtt ribute ( itemtypes)public N1ap gatltemTypes() Map itemTypes = new HashMap(); iteTypes.put(-101,数H);itemTypes
22、. put(11102,璋婴);return itemTypes* 页面上可以得到 itemsTypes 数据商品类型;_$itemtype . value /selec3.使用最简单方法使用model,可以不用ModelAttribute/获取校蛻蜡渓信息if (bindingResult.hasErrors 0) /输出错渓信息List allErrors = bindingResult.呂et:Al丄Errci刍();for (ObjectError object Error ; allErrors) /输出错误信息System,out,println(obje匚七广0”.冴tDe于);
23、/将错慄信息悟到页面model *addAttribute(allErrorsallErrors);/可以直接使用model将提交pg? jg回显到页面model. addAttribute(itemsT,titemsCustom);Il出错垂新到商品僮改页面return * items/edi七工七ems ;5.3 简单类型数据回显使用最简单方法使用modelmodel.addAttribute(id, id);6. 异常处理6.1 异常处理思路系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减
24、少运行时异常的发生。系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理,如下图:客户端Con troller00Servicedfl异常Dao请求.J异常Excepti onResolver异常处理器异常Sprin gmvcDispatcherServletSprinmvc提供全局异常处理器(一个系统只有一个异常处理器) 进行 统一异常处理。6.2 自定义异常类对不同的异常类型定义异常类,继承Exception不Iitle; Customtxception*Descrip
25、tion :针对预期的异常需宴在程序中牺出此类的异常/*Company: www.ltcast,com*author传智-瑯青*date 2015-4-1411: 52: 92*version 10*/public cl$5 CustomException extends Exception /异當信息public St ring messagepublic CustomException(String message)super(message); this.message = messagejpublic St ring getMessage() return message;public
26、 void setklessage(String message) this.message = messagej6.3 全局异常处理器思路:系统遇到异常,在程序中手动跑出,dao 抛给 service,service 抛给 controller,controller抛给前端控制器,前端控制器调用全局异常处理器。全局异常处理器处理思路:解析出异常类型如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面显示。如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未 知错误”)Springmvc 提供一个 HandlerException Resolver 接口publi
27、c class CustomExceptionResalver implements HandlerExceptionResolver overridepublic ModelAndView resolveExceptiQrt(HttpServletRequest request, HttpServletResponse responsejObject handlerj Exception ex) CustomException customException=null;if(ex instanceof CustomExceptionX customExeeption=(CustomExcep
28、tionelse customException=new CustomException(类曜);/指定错误佶息5tring message=customExcepticn getMessage()jModelAndView modelAndView=new ModelAndView();/将错谋信息慢到页而modelAndVi.ddCbject(messageN, messagG)/转到带误更面model And View* setViewName ( error )return modelAndView;6.4 错误页面 6.5 在 springmvc.xml中配置全局异常处理器!-全局异
29、當处律器只要实现Handle rExcept ionResolver接口就是全局异常处理1器6.6 异常测试在 controller、service、dao 中任意一处需要手动跑出异常。如果是程序中手动抛出的异常,在错误页面中显示自定义的异常信息,常说明是一个运行时异常,在跑出页面只显示“未知错误”如果不是手动跑出异在商品修改的controller方法中跑出异常I /堕nutiipu丄丄LI巴RJtU豆丙额1A1且,殳U示丄U枣烈凉冃宦八,怕词HA1且科彫釘沖疋9 public Stringedititems(Model model,(Request Pa ram (value二* idrt3
30、r equired = true ) Integer it ems_id) throws Exception /调用serviceig商品id査询商品信息ItemsCustom itemsCustom = itemsService findltemsByld(items_id);判断商品是晋为空,根据i出殳有査邨俩品帼出异當,提示用户商品信息不存在iF (itemsCustom = null) th row new Cu stomExc ept ion(修改的商品信息不存在!);在service借口中跑出异常:Overid已public ItemsCustom findltemsById(In
31、teger id) throw* Exceptiun Items items = ltemsMapper.selectByPrimaryKey(id);|if (items=:null)电IIEW忤輕w总ption(世枚的陶品信見苹存柱!如果与业务功能相关的异常,建议在service中抛出异常与业务功能没有关系的异常,建议在controller中抛出。上边的功能,建议在service中抛出异常7. 上传图片7.1 需求在修改商品的页面,添加上传商品图片功能。7.2 springmvc中对多部件类型解析在页面 form 中提交 enctype= multipart/form-data 的数据时,
32、需要 springmvc 对 multipart 类 型的数据进行解析。在 springmvc.xml 中配置 multipart 类型解析器 !-文件上馬-f dm id=,rmu L tipartResoL verJclass= org. springfromeLork. web. muLtipart .commons .CommonsMuLtipartResoLveryS242SB07.3 加入上传图片的 jar上边的解析内部使用下边的jar 包进行图片上传Oi.cons- f i 1 eupl o* 1f2 jarcommons-1o一2. 4. jM-7.4 创建图片虚拟目录存储图片
33、通过图形界面配置:也可以直接修改 tomcat 的配置在 conf/server.xml 文件,添加虚拟目录:注意:在图片虚拟目录中,一定要讲图片目录分级创建(提高 照日期(年、月、日)进行分级创建。F*thI &ciren.t BaseHoduleI Auto Ihlcidl /pieF: & il 201ipr:!-112(10utjt* j.n5pwc_nyb ! jirkers Trperties Strtrs胡io 性能),一般我们米用按=0皐通hlbifkua4 tL* Yt UadulE on Ltds sETVEF.唐hula* l-fLo-ldailg 4ri
34、fthlAd.CaarelJThii t j StarchIicincnt ffewt- |7tnp虚池目录对应的物理目录酬目录7.5 上传图片代码7.5.1 页面 input type=name=7.5.2controller 方法修改:商品修改 controller 方法iRequestMapping( /editlt emsSubmit)public String editltemsSubmit(Model modeljHttpServletRequest request,Integer id,ModelAttribute(items1*) Validated(value =Multip
35、artFile k/接收商品囹片)throws Exception String ori.getOri 呂 inmlFiLwneEw);/tm片if(itms_pic!=null 盟riglndlFilena(ne!=null & originalFilname.lngthf )0)/存帕国片的拥诬胳径String pic_path =HF : develppuplciClJteipp,hjf/m图片習稀String neMFileName = UUID randonrUUID() + originalF ilsnani. substring (originaLFilenania. l
36、a&tlrF lie newF lie = nw File(pic_path + newFilehlame);f/将内存中的数框写入皤盘it&ms_picJtrBrtsferTo(n&NFil&);F /珞新圄片名昭到it em sC us ton中it&fflsCustom .setPicfnewFismc)sValidGr8 json 数据交互8.1 为什么要进行 json 数据交互Json 数据格式在接口调用中、html 页面中较为常用,json 格式比较简单,解析比较方便。比如:webservice 接口,传输 json 数据。8.2 sprin
37、gmvc 进行 json 交互1、请求json,输出json,要求请求的是json串,所以在前段页面 中需要将请求的内容转成json,不太方便。2、请求key/value、输出json,此方法较为常用。8.3 环境准备8.3.1 加载 json 串的 jar 包Springmvc 中使用 jackson 的包进行 json 转换(requestBody 和responseBody 使用下边的 包进行 json转换),如下:恫jacksocoreaElL 9. 11. jar -矶j ackzon-mapp&r-asl-l. 9. IL jar8 3 2 配置 json 转换器在注解适配
38、器中加入messageCo nverters注意:如果使用 vmvc:annotation-driven /则不用定义上边的内容。8.4 json 交互测试8.4.1 输入 json 串,输出是 json 串841.1jsp页面使用 jquery 的 ajax 提交 json 串,对输出的 json 结果进行解析。请求json,输出是jsonfunction requestJson()$.ajax(type:posturl:r$pageConext.request.contextPath /requestJson.action13con七电门七Type:application/jsonjcha
39、rsetutf-8/数据格武是j son串*商品信息dataifnane*:手机”3price-:999success : f unction (data) :咀回j mon结畀alert(data); con troller谙求嚴卑(两品信息h輸出;U癒X商品信息)/Req uestB ody将谙求的商品信息的j急逐孵转成itemsCust口晒勺釁/Re sponse Body将it emsCustCJIT轎咸j.宝P叮輸出Req ue stMa ppi ng (11/ request Json)public. ResponsBody ItemsCus七口皿request J
40、son (RquestBody工七七oin i t emsCust om)/ResponseBodyitemgCiJS七crm成j号q口输屮|return itemsCus七cini;841.3测试结果8.4.2 输入 key/value,输出是 json 串842.1 jsp页面使用 jquery 的 ajax 提交 key/value 串,对输出的 json 结果进行解析。/ifjKkey/valuef输出是jwon function response!son()$-ajax(type:post*url:1$pageContext. request一contextPaizh /respon
41、seZJson - action11/tlRlkey/valueiafflacDntentTypei ED臧USfc Ikey/value /conizEirtTypE:1application/json; charset=utf-8 f臼日七日:手机艮pice=999)success:function(data)/返回j吕on结果alert(data)j); con trolleri青求dy/glu,jdijsonRequestMapping(/response!son)publ iu j)ftespo nmeBody ItemsCustom response son (I t
42、emsCustom itemsCustom)/RespQnseBodyiternsCustonjLSontti return itemsCustom;842.3测试Refe renhttp:/lo ca Ihost:g rnvc_nrybati312 0間s o nTest.甬pPrsgmai no-cacheContent-Type: application/x*wv;omvurlencad&d: charset=llTF*fiContent-Length: 21Connection:k&ep-aliveCacheXontrok no-cacheAccept-Langjage
43、: 2h-cn,zti;q=0.B,en-us;q=0.5,en;q=G.3Accept-Encodmg: gzip, deflateAccept:*/*岌送CookieJSESSIONID: 6066142CCA6D803GDBE17755A11F4F6佶求主体name=手坨iprice=9SSr响应头A113msTransfer-Encodings chunkedSe rve r:Apach e-Coyote/1.1Date:Tue, 14 Apr 2015 03:02:31 GMTC ontenMype:自pplicatio n/json; ch自rset=UTF9 RESTfu 皮持9
44、.1 什么是 RESTfulRESTful 架构,就是目前最流行的一种互联网软件架构。他结构清晰,符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。RESTful (即 Representational State Transfer 的缩写)其实是一个开发理念,是对http 的很好的诠释。1、对 url 进行规范,写 RESTful 格式的 url非 REST 的 url: http:/./queryltems.action?id=001 &type=OOUser-AgentAijnsX-Requested-With: XMLHtipRequestMozilla/5.0 (W
45、indows NT 61; WOWfi4; rv:34 0)Gecko/2C1001C1 Firefox/34.0Tr:nul.Fame了手机Tprioe:999Q pic:REST 的 url 风格:http:/./itmes/ 001 特点:url 简洁,将参数通过 url 传到服务器。2、 http 的方法规范不管是删除、添加、更新,使用的url 是一致的,如果进行删除,需要设置http 的方法为delete,同理添加。3、 对 http 的 contentType 规范请求时指定 contentType,要 json 数据,设置成 json 格式的 type9.2 REST 的例子9.
46、2.1 需求查询商品信息,返回 json 数据。9.2.2 controller定义方法,进行 url 映射使用 REST 风格的 url,将查询商品信息的 id 传入 controller输出 json 使用ResponseBody 将 java 对象输出 json。/査询鬲品信自/辻酊理让叩口呂里边的id表肃占谊苻.通迥审Pmth也皿命“痢站苻中的珈/如杲占怆符中的窑称和形橙启一致,柱PathVariabl亡可以革托宝容樹Requ estMapping (* / items View/)public ResponseBody ItemsCustom itemsView(9PatHVaria
47、blefid11) Integer idjthrows Exception/iSH servic eEEiSS品信息ItemsCustGRi itemsCustom = iternsService*findltemsIByld(id);return itemsCtistom;RequestMapping(value= / itemsView/id) : XXX占位符,请求的 URL 可以是“ /viewItems/1 ”或/viewItems/2 ”,通过在方法中使用PathVariable 获取XXX中的XXX变量。PathVariable 用于将请求 UR 中的模板变量映射到功能处理方法的
48、参数上。如果 RequestMapping 中表示为/ itemsView/id , id 和形参名称一致,PathVariable不用指定名称。9.2.3 REST 方法的前端控制器配置在 web.xml 中配置 sp r i ng m v c_r e s t org - sPringf ramework, webservletDispatcherServlet!- contextConfigLocationBJSspringmvctjQOWS件配畫務關験射器适即器等割=ontextConfigcontextConfigLocat ioncla5 5path: Siprdng/spFingi
49、mvfEXEIX/PB厂Em vadiiES|pringmvc_rest /9.3 对静态资源的解析配置前端控制器的url-parttern 中指定/,对静态资源的解析出现问题1: tp二二HiQCAlnoR宅二宅二BOEO/目目;parin.沪用匕沪用匕_ 7ba七七i a;1203 J j旦旦/ jqiim巧巧l 1 - 4. 4- in-SRj Status report在 springmvc.xml 中添加静态资源解析方法。 cssimg、 kmvc: resources 1 ocation =M/img/,rmapping=,f/wg/*/10.拦截器10.1 拦截定义定义拦截器,实
50、现 Handlerlnterceptor 接口,接口中提供三个方法。访l可最參火孤官方站点新手上路常用网址1S 41public class HandlerInterceptor1 implements HandlerInterceptor / 进入 Handler 方法之前执行/ 用于身份认证、身份授权/ 比如身份认证, 如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行 Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Objecthandler)
51、throws Exception /return false 表示拦截,不向下执行/return true 表示放行return false;/ 进入 Handler 方法之后,返回 modelAndView 之前执行/ 应用场景从 modelAndView 出发:将公用的模型数据 (比如菜单导航 )在这里传到视图, 也可以在这里统一指定视图Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndVie
52、w) throws Exception / 执行 Handler 完成执行此方法/ 应用场景:统一异常处理,统一日志处理Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) throws Exception 10.2拦截器配置10.2.1 针对 HandlerMapping 配置Springmvc 拦截器对 HandlerMapping 进行拦截设置,如果在某个 HandlerMapping 中配置拦截,
53、经过该 HandlerMapping 映射成功的 handler 最终会使用该拦截器” vproperty n ame=i nterceptors bean id =handlerlnterceptor1class =spri ngmvc.i ntercapter.Ha ndlerl nterceptor1bea n class =spri ngmvc.i ntercapter.Ha ndlerl nterceptor2般不推荐使用。10.2.2 类似全局的拦截器Springmvc 配置类似全局的拦截器,springmvc 框架将配置的类似全局的拦截器注入到每个HandlerMapping 中
54、。/*示所割感:垃活子卩卅径-bean class=*cn. itccjst. ssm. interceptor. Handlerlnterceptorl,rX/bean id =ha ndlerl nterceptor2/10.3.2 编写两个拦截器曰-田CH.iwse. inter ceptorHandler Inter cep tori. javKandl er lilt er c ep t or 2. i av a10.3.3 两个拦截器都放行Han dlerl nterceptorl.preHa ndleHandlerlnterceptor2.preHa ndleHandlerlnt
55、erceptor2.postHa ndleHan dlerl nterceptorl.postHa ndleHandlerlnterceptor2.afterCompleti onHan dlerl nterceptorl.afterCompleti on总结:preHandle方法按顺序执行,postHandle和afterCompletion按拦截器配置的逆向顺序执行。10.3.4 拦截器 1 放行,拦截器 2 不放行Han dlerl nterceptorl.preHa ndleHandlerlnterceptor2.preHa ndleHan dlerl nterceptorl.afterCompleti on总结:拦截器1放行,拦截器2preHandle才会执行。拦截器2preHandle不放行,拦截器2 postHan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国快速豆浆加热设备行业投资前景及策略咨询研究报告
- 2025至2030年中国锌合金支架数据监测研究报告
- 2025至2030年中国金刚石珩磨条数据监测研究报告
- 2025至2030年中国空气净化治理机数据监测研究报告
- 粤教版高中信息技术必修5.1-认识信息资源管理教学设计
- 2025至2030年中国液压马达盖数据监测研究报告
- 2025至2030年中国枪铰自动线数据监测研究报告
- 2025至2030年中国数字式语音记录仪数据监测研究报告
- 2025至2030年中国干燥消毒箱数据监测研究报告
- 2025至2030年中国女校官皮靴数据监测研究报告
- 《社区康复》课件-第八章 视力障碍患者的社区康复实践
- 透析患者的血糖管理
- 汉堡王行业分析
- 人教版数学三年级下册全册双减同步分层作业设计 (含答案)
- 肝硬化“一病一品”
- 2024大型活动标准化执行手册
- 大学美育十六讲六七讲
- 沥青拌合站讲义课件
- 《快递实务》 教案 项目三 快递收件业务操作、项目七 快递保价与赔偿业务
- 《逆向建模与产品创新设计》课程标准
- AI时代的艺术创作与表达
评论
0/150
提交评论