1、过滤器:创建CharacterEncodingFilte.java,用来做字符格式转化
package com.zzstxx.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.stereotype.Component; /** * 过滤器 * @author zxf */ @Component @ServletComponentScan @WebFilter(urlPatterns = "/hello1/*",filterName = "CharacterEncodingFilte") public class CharacterEncodingFilte implements Filter { public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) arg0; System.out.println("this is MyFilter,url :" + request.getRequestURI()); arg2.doFilter(arg0, arg1); } public void destroy() { // TODO Auto-generated method stub } }
2、监听器
(1)、创建SpringBoot配置类,并注册监听器
package com.zzstxx; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.zzstxx.listener.ListenerTest; /** * 配置管理类 * @author zxf * */ @Configuration public class WebConfig { public WebConfig() { System.out.println("加载SpringBoot配置WebConfig ........."); // TODO Auto-generated constructor stub } /** * 注册监听器 * @return */ @Bean public ServletListenerRegistrationBean<ListenerTest> servletListenerRegistrationBean() { return new ServletListenerRegistrationBean<ListenerTest>(new ListenerTest()); } }
(2)、创建监听器类
package com.zzstxx.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ListenerTest implements ServletContextListener { public void contextInitialized(ServletContextEvent arg0) { // TODO Auto-generated method stub System.out.println("监听器初始化..."); } public void contextDestroyed(ServletContextEvent arg0) { System.out.println("监听器销毁..."); } }
3、错误页面处理
当系统报错时,返回到页面的内容通常是一些杂乱的代码段,这种显示对用户来说不友好,因此我们需要自定义一个友好的提示系统异常的页面。在 src/main/resources 下创建 /public/error(路径是固定的,Spring Boot 会在系统报错时将返回视图指向该目录下的文件),在该目录下再创建一个名为 5xx.html 文件,该页面的内容就是当系统报错(错误代码以5开头的)时返回给用户浏览的内容:
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>系统错误</title> <link href="/css/index.css" rel="stylesheet"/> </head> <body> <div class="container"> <h2>系统内部错误</h2> </div> </body> </html>
上边处理的 5xx 状态码的问题,接下来解决 404 状态码的问题。
当出现 404 的情况时,用户浏览的页面也不够友好,因此我们也需要自定义一个友好的页面给用户展示。
在 /public/error 目录下再创建一个名为 404.html 的文件:
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>访问异常</title> <link href="/css/index.css" rel="stylesheet"/> </head> <body> <div class="container"> <h2>找不到页面</h2> </div> </body> </html>
4、全局异常捕获
package com.zzstxx.exception; import java.util.HashMap; import java.util.Map; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /** * 全局异常捕获 * @author zxf * */ @ControllerAdvice public class GlobalDefaultExceptionHandler { /** * 处理 Exception 类型的异常 * * @param e * @return */ @ExceptionHandler(Exception.class) @ResponseBody public Map<String, Object> defaultExceptionHandler(Exception e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("code", 500); map.put("msg", e.getMessage()); return map; } }
5、解决跨域的问题:
测试请求链接:http://localhost:8080/fastjson/test2
(1)、方式一
@Configuration public class WebConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { //fastjson为请求路径的一部分 registry.addMapping("/fastjson/**") .allowedOrigins("http://localhost:8088");// 允许 8088 端口访问 } }; } }(2)、方式二
@Configuration public class WebConfig extends WebMvcConfigurerAdapter{ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/fastjson/**") .allowedOrigins("http://localhost:8088");// 允许 8088 端口访问 } }(3)、细粒度控制
在 FastJsonController 类中的方法上添加 @CrossOrigin(origins="xx") 注解:
@RequestMapping("/test") @CrossOrigin(origins="http://localhost:8088") public User test() { User user = new User(); user.setId(1); user.setUsername("jack"); user.setPassword("jack123"); user.setBirthday(new Date()); return user; }在使用该注解时,需要注意 @RequestMapping 使用的请求方式类型,即 GET 或 POST。
相关推荐
前端跨域访问springboot后端时添加响应头。。。。。。
解决springboot实现跨域session共享问题,防止sql注入。可以更有效的解决token问题,欢迎下载,有问题可以再评论下方留言,及时解答!!加群:687942640
主要介绍了解决Vue调用springboot接口403跨域问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
springmvc跨域处理,和过滤器方式跨域处理的主要代码,整体系统基于springboot框架搭建
主要介绍了Springboot处理CORS跨域请求的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
springboot做前后端分离,ajax跨域请求问题 前后端分离:即将后端服务层与前端展示层分别开发和部署,因而产生两个需要打包发布的项目, 将两个分别部署后,前端再去请求后端就会产生跨域请求的问题。 两种解决方案
导入eclipse,修改resources下的mybatis-generator.xml,然后run as,输入 mvn:mybatis-generator:generate,就可以了
由于浏览器同源策略(同源策略,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器...接下来通过本文给大家介绍Springboot如何优雅的解决ajax+自定义headers的跨域请求 ,需要的朋友可以参考下
springboot跨域 springboot解决跨域问题+不同版本springboot解决跨域问题
Java请求跨域处理过滤器
Springboot CORS跨域设置
入门篇(Basics) SpringBoot(一)_快速实战搭建项目 SpringBoot(二)_项目属性配置 SpringBoot(三)_controller的使用 ...SpringBoot(十五)_springboot跨域处理 SpringBoot(十六)_springboot整合elast
解决前后端跨域,java后端配置过滤器
SpringBoot 中实现跨域的5种方式
主要是过滤器的设置,在WEB里面设置了过滤的IP地址,就能看到过滤器的作用了,监听器的模板!
springboot怎样实现跨域请求, springboot与mybatis结合
spirng boot + mybatis + 跨域集成 + 过滤器顺序配置入门项目搭建
服务支持跨域请求的配置服务支持跨域请求的配置服务支持跨域请求的配置服务支持跨域请求的配置
主要介绍了Springboot前后端分离项目配置跨域实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
geoserver跨域设置: 1、将cors-filter-2.4.jar和java-property-utils-1.9.1.jar,两个jar包文件放入geoserver目录下webapps\geoserver\web-inf\lib中。 2、打开geoserver目录下webapps\geoserver\web-inf中的web....