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

大型外贸网站建设在县城怎么做网站公司

大型外贸网站建设,在县城怎么做网站公司,网站建设推广服务费的税率是,什么叫搭建平台一、拦截器简介 SpringMVC的拦截器#xff08;Interceptor#xff09;也是AOP思想的一种实现方式。它与Servlet的过滤器#xff08;Filter#xff09;功能类似#xff0c;主要用于拦截用户的请求并做相应的处理#xff0c;通常应用在权限验证、记录请求信息的日志、判断用… 一、拦截器简介 SpringMVC的拦截器Interceptor也是AOP思想的一种实现方式。它与Servlet的过滤器Filter功能类似主要用于拦截用户的请求并做相应的处理通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。拦截器和过滤器的区别 拦截器是SpringMVC组件而过滤器是Servlet组件。拦截器不依赖Web容器过滤器依赖Web容器。拦截器只能对控制器请求起作用而过滤器则可以对所有的请求起作用。拦截器可以直接获取IOC容器中的对象而过滤器就不太方便获取。  二、拦截器使用 接下来我们使用SpringMVC拦截器首先使用maven创建SprinMVC的web项目 2.1 控制器方法 package com.example.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;Controller public class MyController1 {RequestMapping (/m1)public String m1(){System.out.println(控制器方法);return result;} } 2.2 编写拦截器类 创建拦截器类该类实现HandlerInterceptor接口需要重写三个方法 preHandle请求到达Controller前执行的方法返回值为true通过拦截器返回值为false被拦截器拦截。postHandle跳转到JSP前执行的方法afterCompletion跳转到JSP后执行的方法 package com.example.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Scanner;public class MyInterceptor implements HandlerInterceptor {// 请求到达Controller前执行Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.print(请求到达Controller前\t);// 如果return false则无法到达Controller// 控制台输入决定是否进入ControllerSystem.out.print(控制台输入决定是否进入Controller: );Scanner scanner new Scanner(System.in);boolean flag;flag scanner.nextBoolean();return flag;}// 跳转JSP前执行此时可以向Request域添加数据Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.print(跳转JSP前\t);/*System.out.print(控制台输入决定是否添加数据: );Scanner scanner new Scanner(System.in);boolean flag;flag scanner.nextBoolean();if(flag)*/request.setAttribute(name,HQX);}// 跳转JSP后执行此时已经不能向Request域添加数据Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(跳转到JSP后);request.setAttribute(age,10);} }OK首先我们这里到达控制器前和是否进入控制器还有是否跳转JSP跳转到JSP后都有对应的提示。  2.3 JSP页面 result.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle结果/title /head bodyh3name:${requestScope.name}/h3h3age:${requestScope.age}/h3 /body /html 这里把我们控制台输入的name响应到前端页面但是age注定是没有属性的因为跳转到JSP后才添加注定是没有意义的。 2.4 配置拦截器 接下来我们需要在SpringMVC核心配置文件中配置拦截器 !-- 配置拦截器-- mvc:interceptors mvc:interceptor    !-- 配置拦截器的作用路径--   mvc:mapping path/**/    !-- 拦截器对象 --   bean classcom.itbaizhan.interceptor.MyInterceptor/ /mvc:interceptor /mvc:interceptors 2.5 测试结果 OK第一次输入true后后面的提示信息也是可以出来的。已经成功拦截了 2.6 全局拦截器 全局拦截器可以拦截所有控制器处理的URL作用等于/**配置方式如下 !-- 配置拦截器 -- mvc:interceptors !-- 全局拦截器 --  bean classcom.itbaizhan.interceptor.MyInterceptor/bean /mvc:interceptors 三、拦截器链与执行顺序 ​ 如果一个URL能够被多个拦截器所拦截全局拦截器最先执行其他拦截器根据配置文件中配置的从上到下执行但是我实操下来发现并不是这样。接下来我来验证一下我的想法再配置一个拦截器2 3.1 拦截器2 package com.example.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Scanner;public class MyInterceptor2 implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.print(拦截器2请求到达Controller前\t);// 如果return false则无法到达Controller// 控制台输入决定是否进入ControllerSystem.out.print(控制台输入决定是否进入Controller: );Scanner scanner new Scanner(System.in);boolean flag;flag scanner.nextBoolean();return flag;}// 跳转JSP前执行此时可以向Request域添加数据Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.print(拦截器2跳转JSP前\t);/*System.out.print(控制台输入决定是否添加数据: );Scanner scanner new Scanner(System.in);boolean flag;flag scanner.nextBoolean();if(flag)*/request.setAttribute(age,10);}// 跳转JSP后执行此时已经不能向Request域添加数据Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(拦截器2跳转到JSP后);request.setAttribute(age,10);} }这里再配置一个拦截器为了更能体现拦截器的拦截顺序。  3.2 配置拦截器链 !-- 配置拦截器--mvc:interceptors!-- 拦截器1 --mvc:interceptor!-- 配置拦截器的作用路径(没有该作用路径标签则是全局拦截器) --mvc:mapping path/m1/!-- 拦截器对象 --bean classcom.example.interceptor.MyInterceptor//mvc:interceptor!-- 拦截器2 --mvc:interceptor!-- 配置拦截器的作用路径(没有该作用路径标签则是全局拦截器) --mvc:mapping path/m1/!-- 拦截器对象 --bean classcom.example.interceptor.MyInterceptor2//mvc:interceptor!-- 全局拦截器 --bean classcom.example.interceptor.GlobalInterceptor//mvc:interceptors 我们这里测试的拦截器12拦截路径都是/m1我们把全局拦截器放在最后看一下执行顺序是如何的如果按照上面的说法的话则应该先提示全局拦截器再拦截器1拦截器2的提示信息。接下来我们来看一下实际结果吧。  3.3 测试结果 我们可以看到当访问/m1的时候首先进入控制器前出现的顺序是拦截器1然后拦截器2最后是全局拦截器然后跳转JSP前的顺序才是全局拦截器、拦截器2拦截器1跳转JSP后的也是如此。 四、拦截器过滤敏感词案例 接下来我们编写一个拦截器案例需求如下 在系统中我们需要将所有响应中的一些敏感词替换为 *** 此时可以使用拦截器达到要求  4.1  编写控制方法 RequestMapping(/m2)public String m2(Model model){model.addAttribute(name,大笨蛋);return result;} 4.2 创建敏感词拦截器 package com.example.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; import java.util.Set;public class SensitiveWordInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 敏感词列表String[] sensitiveWords {坏人,暴力,笨蛋};// model中所有数据if(modelAndView!null) {MapString, Object model modelAndView.getModel();SetMap.EntryString, Object entries model.entrySet();// 遍历modelfor (Map.EntryString, Object entry : entries) {String key entry.getKey();String value entry.getValue().toString();// 将model值和敏感词列表遍历比对for (String sensitiveWord : sensitiveWords) {// 如果model包含敏感词则替换if (value.contains(sensitiveWord)) {String newStr value.replaceAll(sensitiveWord, ***);model.put(key, newStr);}}}}}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {} }4.3 配置拦截器 !-- 敏感词拦截器 --mvc:interceptormvc:mapping path/**/bean classcom.example.interceptor.SensitiveWordInterceptor//mvc:interceptor 4.4 测试结果 OK我们可以发现笨蛋确实是被换成了***。  五、跨域请求 5.1 同源策略 同源策略是浏览器的一个安全功能。同源指的是两个URL的协议域名端口相同。浏览器出于安全方面的考虑不同源的客户端脚本在没有明确授权的情况下不能读写对方资源。 哪些不受同源策略限制 页面中的 a 跳转、表单提交不会受到同源策略限制的。静态资源引入也不会受到同源策略限制。如嵌入到页面中的 script src img src link href 等。 最容易收到同源策略影响的就是Ajax请求。 5.2 跨域请求 当请求URL的协议、域名、端口三者中任意一个与当前页面URL不同时即为跨域。浏览器执行JavaScript脚本时会检查当前请求是否同源如果不是同源资源就不会被执行。 当前页面URL 被请求页面URL是否跨域原因https://www.csdn.net/https://www.csdn.net/index.html否https://www.csdn.net/http://www.csdn.net/index.html跨域协议不同http://www.csdn.com/http://www.baidu.com/跨域主域名不同http://csdn.csdn.net/http://www.csdn.net/跨域子域名不同http://www.csdn.net:8080http://www.csdn.net:8081跨域端口号不同 5.3 控制器接收跨域请求 SpringMVC提供了注解CrossOrigin解决跨域问题。用法如下 控制器方法 RequestMapping(/m3)ResponseBodyCrossOrigin(http://localhost:8080)public String m3(){System.out.println(测试跨域请求);return success;} 编写JSP页面 % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle跨域请求/titlescript srcjs/jquery-2.1.1.min.js/scriptscript$(function (){$(#btn).click(function (){$.get(http://localhost:8080/m3,function (data){console.log(data);})/*$.get(http://127.0.0.1:8080/m3,function (data){console.log(data);})*/})})/script /head bodybutton idbtn 异步请求/button /body /html 测试结果  当注释掉跨域注解时运行是这样的。因为是没有跨域但是当我们使用127.0.0.1时就会报错。 ​ 使用127.0.0.1时且没有添加注解时的运行结果是这样的可以看到这时就不能成功success了 ​  当添加到注解后无论是8080还是127.0.0.1都能够成功success了 ​ 往期专栏文章相关导读  大家如果对于本期内容有什么不了解的话也可以去看看往期的内容下面列出了博主往期精心制作的MavenMybatis等专栏系列文章走过路过不要错过哎如果对您有所帮助的话就点点赞收藏一下啪。其中Spring专栏有些正在更所以无法查看但是当博主全部更完之后就可以看啦。 1. Maven系列专栏文章 Maven系列专栏Maven工程开发Maven聚合开发【实例详解---5555字】 2. Mybatis系列专栏文章 Mybatis系列专栏MyBatis入门配置Mybatis入门案例【超详细】MyBatis配置文件 —— 相关标签详解Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填Mybatis动态SQL查询 --附实战案例--8888个字--88质量分Mybatis分页查询——四种传参方式Mybatis一级缓存和二级缓存带测试方法Mybatis分解式查询Mybatis关联查询【附实战案例】MyBatis注解开发---实现增删查改和动态SQLMyBatis注解开发---实现自定义映射关系和关联查询 3. Spring系列专栏文章 Spring系列专栏Spring IOC 入门简介【自定义容器实例】IOC使用Spring实现附实例详解Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式Spring DI简介及依赖注入方式和依赖注入类型Spring IOC相关注解运用——上篇Spring IOC相关注解运用——下篇Spring AOP简介及相关案例注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】Spring事务简介及相关案例Spring 事务管理方案和事务管理器及事务控制的APISpring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务 4. Spring MVC系列专栏文章    SpringMVC系列专栏Spring MVC简介附入门案例Spring MVC各种参数获取及获取方式自定义类型转换器和编码过滤器Spring MVC获取参数和自定义参数类型转换器及编码过滤器Spring MVC处理响应附案例详解Spring MVC相关注解运用 —— 上篇 Spring MVC相关注解运用 —— 中篇 Spring MVC相关注解运用 —— 下篇Spring MVC多种情况下的文件上传Spring MVC异步上传、跨服务器上传和文件下载Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】Spring MVC拦截器和跨域请求SSM整合案例【C站讲解最详细流程的案例】
http://www.sczhlp.com/news/221184/

相关文章:

  • 江西建设监督网站网站建设列表横向
  • 国际网站浏览器网站建设和管理规则
  • 校园网站怎么做HTML塘沽网吧
  • 企业内部网站开发易瑞通网站建设
  • 做外贸哪个网站比较好2017自己制作动漫的软件
  • 上海一条网络科技有限公司seo谷歌推广
  • 用备案的网站做违法网站莱芜金点子招工小时工
  • 邯郸企业网站建设报价石家庄官网制作
  • 浏览器怎么打开网站服务器网站首页布局风格
  • 服装网站公司网站做公司网站都需要付什么费用
  • asp.net网站开发上网站文件目录
  • 如何提升网站打开速度开封做网站推广
  • 公司网站制作的公司域名注册好了如何做网站
  • 网站设置请求桌面网站给个网站好人有好报2021
  • 贺州网站推广让人做网站需要注意什
  • 青岛做优化网站哪家好台州网站建设公司.
  • 宜宾网站开发公司黄金网站软件app下载安装
  • 个人博客网站建设选题说明wordpress如何仿站
  • 深圳优秀网站建设价格怎么在公众号上做网站
  • 优购物官方网站直播北京注册公司政策
  • python做网站的开发icp备案号怎么查询
  • 外包公司企业网站项目外包平台
  • 上海品质网站建设网站百度排名优化
  • 前端如何做响应式网站专门下载工程建设标准的网站
  • 企业网站建设流程图浙江乐清新闻今天
  • 西安网站建设制作价格低银座网上商城官网
  • qq群引流推广网站深圳龙华区邮政编码
  • 湖南城乡建设厅官方网站网站如何做m适配
  • 30天网站建设实录下载高端建材项目
  • wordpress百度站长验证网络营销的推广方式有哪些