当前位置: 首页 > news >正文

重庆电力建设公司网站太原建站模板系统

重庆电力建设公司网站,太原建站模板系统,网站如何做宣传推广,创意创新设计方案一. 拦截器实现HandlerInterceptor 接⼝ SpringMVC 中的 Interceptor 拦截器也是相当重要和相当有⽤的#xff0c;它的主要作⽤是拦截⽤户的请求并进⾏相应的处理。⽐如通过它来进⾏权限验证#xff0c;或者是来判断⽤户是否登陆等操作。对于 SpringMVC 拦截器的定义⽅式有两…一. 拦截器实现HandlerInterceptor 接⼝ SpringMVC 中的 Interceptor 拦截器也是相当重要和相当有⽤的它的主要作⽤是拦截⽤户的请求并进⾏相应的处理。⽐如通过它来进⾏权限验证或者是来判断⽤户是否登陆等操作。对于 SpringMVC 拦截器的定义⽅式有两种 实现接⼝org.springframework.web.servlet.HandlerInterceptor 继承适配器org.springframework.web.servlet.handler.HandlerInterceptorAdapter 1.拦截器实现HandlerInterceptor 接⼝ /**1. 2. 拦截器实现 HandlerInterceptor 接⼝ */public class MyInterceptor01 implements HandlerInterceptor {/**3. 在 ⽬标Handler(⽅法)执⾏前 执⾏ 4. 返回 true执⾏handler⽅法5. 返回 false阻⽌⽬标handler⽅法执⾏6. param request7. param response8. param handler9. return10. throws Exception*/Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(⽬标Handler执⾏前执⾏MyInterceptor01 -- preHandle⽅法...);/**11. 返回 true执⾏handler⽅法12. 返回 false阻⽌⽬标handler⽅法执⾏*/return true;}/**13. 在 ⽬标Handler(⽅法)执⾏后视图⽣成前 执⾏14. param request15. param response16. param handler17. param modelAndView18. throws Exception*/Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(⽬标Handler执⾏后视图⽣成前执⾏MyInterceptor01 -- postHandle⽅法...);}/**19. 在 ⽬标Handler(⽅法)执⾏后视图⽣成后 执⾏20. param request21. param response22. param handler23. param ex24. throws Exception*/Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(⽬标Handler执⾏后视图⽣成后执⾏MyInterceptor01 -- afterCompletion⽅法...);}}2.拦截器xml配置 mvc:interceptors!-定义在 mvc:interceptor 下⾯可以⾃定义需要拦截的请求如果有多个拦截器满⾜拦截处理的要求则依据配置的先后顺序来执⾏--mvc:interceptor!-- 通过 mvc:mapping 配置需要拦截的资源。⽀持通配符。可配置多个。 --mvc:mapping path/**/ !-- /**表示拦截所有的请求。 --!-- 通过 mvc:mapping 配置不需要被拦截的资源。⽀持通配符。可配置多个。 --mvc:exclude-mapping path/url/*/ !-- /url/*表示放⾏url路径下的请求。 --bean classcom.xxxx.springmvc.interceptor.MyInterceptor01//mvc:interceptor/mvc:interceptors二.继承 HandlerInterceptorAdapter 实际上最终还是 HandlerInterceptor 接⼝实现。 ⼦类实现类 /**1. 拦截器实现 2. 继承 HandlerInterceptorAdapter 适配器*/public class MyInterceptor02 extends HandlerInterceptorAdapter {/**3. 在 ⽬标Handler(⽅法)执⾏前 执⾏ 4. 返回 true执⾏handler⽅法 5. 返回 false阻⽌⽬标handler⽅法执⾏6. param request7. param response8. param handler9. return10. throws Exception*/Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(⽬标Handler执⾏前执⾏MyInterceptor02 -- preHandle⽅法...);/**11. 返回 true执⾏handler⽅法12. 返回 false阻⽌⽬标handler⽅法执⾏*/return true;}}拦截器xml配置 mvc:interceptorsmvc:interceptor!-- 拦截的资源 --mvc:mapping path/**/!-- 放⾏的资源 --mvc:exclude-mapping path/url/test01/mvc:exclude-mapping path/url/test02/bean classcom.xxxx.springmvc.interceptor.MyInterceptor02//mvc:interceptor/mvc:interceptors多个拦截器实现 mvc:interceptors!-拦截器链多个拦截器如果有多个拦截器满⾜拦截处理的要求则依据配置的先后顺序来执⾏先配置的拦截器的 preHandle ⽅法先执⾏先配置的拦截器的 postHandle、afterCompletion ⽅法后执⾏--mvc:interceptor!-- 拦截所有请求 --mvc:mapping path/** /bean classcom.xxxx.springmvc.interceptor.MyInterceptor01 //mvc:interceptormvc:interceptor!-- 拦截所有请求 -- mvc:mapping path/** /bean classcom.xxxx.springmvc.interceptor.MyInterceptor02 //mvc:interceptor/mvc:interceptors三. ⽂件上传 pom.xml⽂件修改 !-- 添加 commons-fileupload 依赖 --dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.3.2/version/dependencyservlet-context.xml修改 !-- ⽂件上传 --bean idmultipartResolverclassorg.springframework.web.multipart.commons.CommonsMultipartResolver!-- 允许⽂件上传的最⼤尺⼨ --property namemaxUploadSizevalue104857600/value/property!-- 设置⽂件放⼊临时⽂件夹的最⼤⼤⼩限制。 此值是阈值低于此值则保存在内存中如⾼于此值则⽣成硬盘上的临时⽂件。--property namemaxInMemorySizevalue4096/value/property/bean四.RestFul URL Restful ⻛格的 API 是⼀种软件架构⻛格设计⻛格⽽不是标准只是提供了⼀组设计原则和约束条件。它主要⽤于客户端和服务器交互类的软件。基于这个⻛格设计的软件可以更简洁更有层次更易于实现缓存等机制。 在Restful ⻛格中⽤户请求的 url 使⽤同⼀个 url⽤请求⽅式getpostdeleteput…等⽅式对请求的处理⽅法进⾏区分这样可以在前后台分离式的开发中使得前端开发⼈员不会对请求的资源地址产⽣混淆和⼤量的检查⽅法名的麻烦形成⼀个统⼀的接⼝。 在 Restful ⻛格中现有规定如下 GETSELECT从服务器查询可以在服务器通过请求的参数区分查询的⽅式。 POSTCREATE在服务器端新建⼀个资源调⽤ insert 操作。 PUTUPDATE在服务器端更新资源调⽤ update 操作。 PATCHUPDATE在服务器端更新资源客户端提供改变的属性。(⽬前 jdk7 未实现tomcat7 不⽀持)。 DELETEDELETE从服务器端删除资源调⽤ delete 语句。 Get 请求配置 /*** restful -- get 请求执⾏查询操作 * param id* return*/GetMapping(account/{id})ResponseBodypublic Account queryAccountById(PathVariable Integer id){return accountService.selectById(id);}Delete 请求配置 /* restful--delete 请求 执⾏删除操作* param id* return*/ DeleteMapping(account/{id})ResponseBodypublic MapString,Object deleteAccount(PathVariable Integer id){int result accountService.delAccount(id);MapString,Object mapnew HashMapString,Object();if(result 1 ){ map.put(msg,success);map.put(code,200); } else {map.put(msg,error);map.put(code,500);}return map;}Post 请求配置 /* restful -- post 请求执⾏添加操作* return*/PostMapping(account)ResponseBodypublic MapString,Object saveAccount(RequestBody Account account){int result accountService.saveAccount(account);MapString,Object mapnew HashMapString,Object();if(result 1 ){ map.put(msg,success);map.put(code,200); } else {map.put(msg,error);map.put(code,500);}return map;}Put 请求配置 /* restful--put 请求执⾏更新操作* param id* param account* return*/PutMapping(account)ResponseBodypublic MapString,Object updateAccount(RequestBody Account account){int result accountService.updateAccount(account);MapString,Object mapnew HashMapString,Object();if(result 1 ){ map.put(msg,success);map.put(code,200); } else {map.put(msg,error);map.put(code,500);}return map;}五.全局异常统⼀处理 在 JavaEE 项⽬的开发中不管是对底层的数据库操作过程还是业务层的处理过程还是控制层的处理过程都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常系统的代码耦合度⾼⼯作量⼤且不好统⼀维护的⼯作量也很⼤。 SpringMVC 对于异常处理这块提供了⽀持通过 SpringMVC 提供的全局异常处理机制能够将所有类型的异常处理从各处理过程解耦出来既保证了相关处理过程的功能较单⼀也实现了异常信息的统⼀ 处理和维护。 全局异常实现⽅式 Spring MVC 处理异常有 3 种⽅式 使⽤ Spring MVC 提供的简单异常处理器 SimpleMappingExceptionResolver实现 Spring 的异常处理接⼝ HandlerExceptionResolver ⾃定义⾃⼰的异常处理器使⽤ ExceptionHandler 注解实现异常处理 全局异常处理⽅式⼀ 配置简单异常处理器!-- 配置全局异常统⼀处理的 Bean 简单异常处理器 --bean classorg.springframework.web.servlet.handler.SimpleMappingExceptionResolver!-- ⻚⾯在转发时出现异常设置默认的错误⻚⾯ error代表的是⼀个视图 --property namedefaultErrorView valueerror/property!-- 异常发⽣时设置异常的变量名 --property nameexceptionAttribute valueex/property/bean可以在处理异常的⻚⾯获取异常信息 使用 ${ex}使⽤⾃定义异常/*** ⾃定义异常参数异常 */public class ParamsException extends RuntimeException {private Integer code 300;private String msg 参数异常!;public ParamsException() {super(参数异常!);}public ParamsException(String msg) {super(msg);this.msg msg;}public ParamsException(Integer code) {super(参数异常!);this.code code;}使⽤ SimpleMappingExceptionResolver 进⾏异常处理具有集成简单、有良好的扩展性、对已有代码没有⼊侵性等优点但该⽅法仅能获取到异常信息若在出现异常时对需要获取除异常以外的数据的 情况不适⽤。 全局异常处理⽅式⼆(推荐) 实现 HandlerExceptionResolver 接⼝ /*** 全局异常统⼀处理 */Componentpublic class GlobalExceptionResolver implements HandlerExceptionResolver {Overridepublic ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception ex) {ModelAndView mv new ModelAndView(error);mv.addObject(ex,默认错误信息);return mv;}}⾃定义异常处理 /*** 全局异常统⼀处理 */Componentpublic class GlobalExceptionResolver implements HandlerExceptionResolver {Overridepublic ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception ex) {ModelAndView mv new ModelAndView(error);mv.addObject(ex,默认错误信息);// 判断是否是⾃定义异常 if (ex instanceof ParamsException) {mv.setViewName(params_error);ParamsException e (ParamsException) ex;mv.addObject(ex, e.getMsg());}if (ex instanceof BusinessException) {mv.setViewName(business_error);BusinessException e (BusinessException) ex;mv.addObject(ex, e.getMsg());}return mv;}} 使⽤实现 HandlerExceptionResolver 接⼝的异常处理器进⾏异常处理具有集成简单、有良好的扩展性、对已有代码没有⼊侵性等优点同时在异常处理时能获取导致出现异常的对象有利于提供更详细的异常处理信息。 全局异常处理⽅式三 ⻚⾯处理器继承 BaseController public class BaseController {ExceptionHandlerpublic String exc(HttpServletRequest request,HttpServletResponse response,Exception ex){request.setAttribute(ex, ex);if(ex instanceof ParamsException){return error_param;}if(ex instanceof BusinessException){return error_business;}return error;}}使⽤ ExceptionHandler 注解实现异常处理具有集成简单、有扩展性好只需要将要异常处理的 Controller 类继承于 BaseController 即可、不需要附加Spring 配置等优点但该⽅法对已有代码存在⼊侵性(需要修改已有代码使相关类继承于 BaseController)在异常处理时不能获取除异常以外的数据 未捕获异常的处理 对于 Unchecked Exception ⽽⾔由于代码不强制捕获往往被忽略如果运⾏期产⽣了Unchecked Exception⽽代码中⼜没有进⾏相应的捕获和处理则我们可能不得不⾯对尴尬的 404、 500……等服务器内部错误提示⻚⾯。此时需要⼀个全⾯⽽有效的异常处理机制。⽬前⼤多数服务器也都⽀持在 web.xml 中通过(Websphere/Weblogic)或者(Tomcat)节点配置特定异常情况的显示⻚⾯。修改 web.xml ⽂件增加以下内容 !-- 出错⻚⾯定义 --error-pageexception-typejava.lang.Throwable/exception-typelocation/500.jsp/location/error-pageerror-pageerror-code500/error-codelocation/500.jsp/location/error-pageerror-pageerror-code404/error-codelocation/404.jsp/location/error-page
http://www.w-s-a.com/news/89531/

相关文章:

  • 郴州免费招聘网站前端好还是后端好
  • 织梦网站怎样做子域名20个中国风网站设计欣赏
  • wordpress网站搬简约创意logo图片大全
  • 叙述网站制作的流程石家庄58同城最新招聘信息
  • 南昌微信网站建设东莞网站优化软件
  • 爱站数据官网纯静态网站挂马
  • 网站建设公司未来方向3d设计网站
  • 建设部网站 干部学院 一级注册建筑师培训 2014年做网站开发的提成多少钱
  • 网上请人做软件的网站铝合金型材外发加工网
  • 手机网站建设万网山东省作风建设网站
  • 网站策划专员招聘50万县城做地方网站
  • 网站开发公司+重庆wordpress自定义搜索界面
  • 梅州南站学校官网
  • 网站变灰代码 所有浏览器企业邮箱域名怎么填写
  • 网站建设哪好旅行社网站模板
  • 网站开发发展存在的问题交换链接营销的经典案例
  • 烟台高端网站建设公司福田市网站建设推广
  • 做网站如何保证询盘数量智慧城市
  • 大连网站平台研发wordpress更改地址
  • 做标书要不要做网站南昌网站排名优化费用
  • 网站内容如何自动关联新浪微博万网域名信息
  • 网站出售网络推广服务费计入什么科目
  • 宁波咨询网站设计西安网站制作开发
  • 深圳市专注网站建设全网营销网络推广
  • 如何快速建设网站虚拟空间软件
  • 一个虚拟主机可以做几个网站免费软件下载中心
  • 美工培训网站中国建筑网官网手机版
  • 创建网站花钱吗谁能给个网址免费的
  • 宁波教育学会网站建设网站建设价格由什么决定
  • 北京定制网站价格wordpress上传pdf文档