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

东莞网站建设怎么样建设化工网站的功能

东莞网站建设怎么样,建设化工网站的功能,百度搜索排名机制,鄂州网站制作目录 1.拦截器1.1.什么是拦截器#xff1f;1.2 拦截器的API1.3 拦截器的执行顺序1.5 自定义拦截器1.5 登录拦截器案例 2.文件上传2.1 添加依赖2.2 配置文件上传解析器2.3 编写控制器2.4 编写jsp页面2.5 注意事项 3.全局异常处理器3.1 异常处理思路3.2 创建异常处理器3.3 编写异… 目录 1.拦截器1.1.什么是拦截器1.2 拦截器的API1.3 拦截器的执行顺序1.5 自定义拦截器1.5 登录拦截器案例 2.文件上传2.1 添加依赖2.2 配置文件上传解析器2.3 编写控制器2.4 编写jsp页面2.5 注意事项 3.全局异常处理器3.1 异常处理思路3.2 创建异常处理器3.3 编写异常类3.4 配置异常处理器 1.拦截器 1.1.什么是拦截器 ​ Spring MVC中的拦截器Interceptor类似于Servlet中的过滤器Filter它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、判断用户是否登录等。 ​ 拦截器依赖于web框架在实现上基于Java的反射机制属于面向切面编程AOP的一种运用。 过滤器与拦截器的区别拦截器是AOP思想的具体应用。 过滤器 servlet规范中的一部分任何java web工程都可以使用 在url-pattern中配置了/*之后可以对所有要访问的资源进行拦截 拦截器 拦截器是SpringMVC框架自己的只有使用了SpringMVC框架的工程才能使用 拦截器只会拦截访问的控制器方法 如果访问的是jsp/html/css/image/js是不会进行拦截的 1.2 拦截器的API 定义拦截器需要实现HandlerInterceptor接口该接口中有三个方法 preHandle() 控制层执行器方法前的拦截器该方法时在控制层执行器方法前调用当该方法返回结果为true则继续调用下一个拦截器如果已经是最后一个拦截器则调用控制层中的执行器方法当该方法返回结果为false则不会继续执行控制层执行器中的方法 postHandle() 控制层方法返回时拦截器该方法是控制层执行器方法执行之后由DispatcherServlet在将结果响应给浏览器前调用的方法 afterCompletion() 控制层方法结束后的拦截器该方法在请求业务处理执行完全结束之后由DispatcherServlet调用执行 1.3 拦截器的执行顺序 单个拦截器的执行顺序 preHandle() → postHandle() → afterCompletion() 多个拦截器的执行顺序 先按顺序执行所有拦截器的 preHandle方法 如果任何一个拦截器preHandle方法返回false。直接跳出不执行目标方法 如果当前拦截器prehandler返回为true。则执行下一个拦截器的preHandle方法如果当前拦截器返回为false。直接倒序执行所有已经执行了的拦截器的 afterCompletion方法 所有拦截器都返回True。执行目标方法 倒序执行所有拦截器的postHandle方法。 前面的步骤有任何异常都会直接倒序触发 afterCompletion 页面成功渲染完成以后也会倒序触发 afterCompletion 1.5 自定义拦截器 我们要想自定义拦截器 要求必须实现HandlerInterceptor 接口。 创建拦截器 配置web.xml 和 springmvc-servlet.xml 文件 package com.by.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class CustomHandlerInterceptor implements HandlerInterceptor {/*** 在控制器方法调用前执行* 返回值为是否中断* true表示继续执行下一个拦截器或处理器* false则会中断后续的所有操作所以我们需要使用response来继续响应后续请求*/Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object object) throws Exception {System.out.println(HandlerInterceptor preHandle ....);return true;}/*** 在控制器方法调用后解析视图前调用我们可以对视图和模型做进一步渲染或修改* 可在modelAndView中加入数据比如当前时间*/Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object object, ModelAndView modelAndView) throws Exception {System.out.println(HandlerInterceptor postHandle ....);}/*** 整个请求完成即视图渲染结束后调用这个时候可以做些资源清理工作或日志记录*/Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object object, Exception e) throws Exception {System.out.println(HandlerInterceptor afterCompletion ....);} }配置拦截器 !--配置拦截器 --mvc:interceptorsmvc:interceptor!-- 匹配的是url路径 --mvc:mapping path/**/mvc:mappingbean classcom.by.interceptor.CustomHandlerInterceptor/bean/mvc:interceptor/mvc:interceptors测试 编写controller Controller RequestMapping(/account) public class AccountController {RequestMapping(/findAccount12)public String findAccount12(Model model) {model.addAttribute(msg, 欢迎你 springmvc);System.out.println(controller的方法执行了......);return success;} }1.5 登录拦截器案例 创建拦截器 package com.by.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object object) throws Exception {String user (String) request.getSession().getAttribute(user_session);if (user ! null) {//已经登录继续执行System.out.println(获得用户信息user);return true;} else {//未登录跳转到登录页面response.sendRedirect(request.getContextPath() /login.jsp);return false;}} }配置拦截器 mvc:interceptorsmvc:interceptor!-- 匹配的是url路径 --mvc:mapping path/**/mvc:mappingbean classcom.by.interceptor.LoginInterceptor/bean/mvc:interceptor/mvc:interceptors测试 编写controller Controller RequestMapping(/account) public class AccountController {RequestMapping(/findAccount13)public String findAccount13(Model model) {model.addAttribute(msg, 欢迎你 springmvc);System.out.println(controller的方法执行了......);return success;} }在index.jsp里面定义超链接 %session.setAttribute(user_session,User{name:张二狗,age:18}); % a href/account/findAccount13登录拦截器/a2.文件上传 2.1 添加依赖 !--文件上传-- dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.3.1/version /dependency2.2 配置文件上传解析器 !--配置文件上传解析器-- bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolverproperty namemaxUploadSize value5242880 /property namedefaultEncoding valueUTF-8 / /bean2.3 编写控制器 编写controller Controller RequestMapping(/account) public class AccountController {RequestMapping(path/upload)public String upload(HttpServletRequest request, MultipartFile upload,Model model) throws IOException {System.out.println(springmvc方式的文件上传);//获取要上传的文件目录String path request.getSession().getServletContext().getRealPath(/uploads);System.out.println(path:path);//根据文件上传的目录创建File对象如果不存在则创建1个File对象File file new File(path);if(!file.exists()){//创建一个file对象file.mkdirs();}//获取文件上传名称String filename upload.getOriginalFilename();//完成文件上传upload.transferTo(new File(path,filename));model.addAttribute(msg, 欢迎你 springmvc);return success;} }2.4 编写jsp页面 form action/account/upload methodpost enctypemultipart/form-data文件: input typefile nameupload/inputinput typesubmit value提交/form2.5 注意事项 form表单必须加上enctypemultipart/form-datamethod属性取值必须是Post提供一个文件选择域input typefile/ 3.全局异常处理器 即使对大部分情况都做了预判和异常处理但程序有时会因为莫名奇妙的原因发生错误并且错误信息肯定会抛在浏览器页面上这样用户观感特别不好所以需要进行全局异常处理。 3.1 异常处理思路 系统的dao、service、controller出现都通过throws Exception向上抛出最后由springmvc前端控制器交由异常处理器进行异常处理如下图 3.2 创建异常处理器 Component public class CustomExceptionResolver implements HandlerExceptionResolver {Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) {ModelAndView modelAndView new ModelAndView();modelAndView.addObject(message, ex.getMessage());modelAndView.setViewName(error);return modelAndView;} }3.3 编写异常类 Controller RequestMapping(/account) public class AccountController {RequestMapping(/findAccount14)public String findAccount14(Model model) {model.addAttribute(msg, 欢迎你 springmvc);//模拟异常信息int i 10/0;return success;} }3.4 配置异常处理器 bean classcom.by.exception.CustomExceptionResolver /bean
http://www.pierceye.com/news/904395/

相关文章:

  • seo如何推广网站深圳网站的做网站公司
  • 架设网站是自己架设服务器还是租服务器佛山网站排名推广
  • 西安做网站哪家最便宜win系统的wordpress
  • 饲料网站源码3号台风最新消息
  • 天津 公司网站建设优化网站内容的方法
  • 网站 例能加速浏览器的加速器
  • 黄埔营销型网站建设山东诚铭建设机械有限公司网站
  • 东莞网站建设dgjcwlwordpress添加活动
  • 广州互邦物流网络优化建站关于网站开发的请示
  • 贵阳手机银行app论坛seo招聘
  • 太原建设北路小学网站铜仁市网站建设
  • 网站换服务器怎么做哪个公司做公司网站好
  • 东莞营销网站建设报价阿里云服务器部署网站
  • 品牌企业建站如何建设网站兴田德润简介呢
  • 思行做网站北京西站到大兴机场
  • 长沙网页制作模板的网站c++编程软件
  • 网站备案 人工审核安卓软件下载安装
  • 网站建设公司 专题制作怎么注册订阅号
  • 网站运营内容包含哪些深圳标本制作
  • wordpress 微信导航站南昌有哪些企业网站
  • 网站开发需要的人员南京手机网站
  • 上海网站建设知识 博客网站建设数据库的购买
  • 足彩网站开发网站建设 网站制作
  • 网站开发 定制 多少 钱小程序加盟代理前景
  • 河南网站建设官网wordpress博客主题哪个好
  • 网站建设会计帐务处理青岛发现51例阳性
  • 保定三金网络科技有限公司windows优化大师是哪个公司的
  • 华丰建设股份有限公司网站深圳影视广告在哪里好
  • 企业建设网站需要服务器吗谷德设计网官网首页入口
  • 新手学做网站步骤天津制作网站的公司电话