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

网站新建设请示附近哪里有建设

网站新建设请示,附近哪里有建设,织梦网站添加下载,广州正规网站建设哪家好目录 一、Spring 拦截器 1.1、背景 1.2、实现步骤 1.3、拦截原理 二、 统一url前缀路径 2.1、方法一#xff1a;在系统的配置文件中设置 2.2、方法二#xff1a;在 application.properies 中配置 三、统一异常处理 四、统一返回数据返回格式处理 4.1、背景 4.2、…目录 一、Spring  拦截器 1.1、背景 1.2、实现步骤 1.3、拦截原理 二、 统一url前缀路径 2.1、方法一在系统的配置文件中设置 2.2、方法二在 application.properies 中配置 三、统一异常处理 四、统一返回数据返回格式处理 4.1、背景 4.2、具体实现 一、Spring  拦截器 1.1、背景 在原生的 Spring AOP 中实现统一的拦截的难点在于1.定义拦截规则表达式很难2.在切面类中拿到 HttpSession 比较难如何解决这两个难点呢使用拦截器 1.2、实现步骤 实现一个普通的拦截器关键在于以下两步 实现 HandlerInterceptor 接口重写 preHeadler 方法在方法中编写自己的业务代码。将拦截器添加到配置文件中设置拦截规则。 具体的首先步骤一例如要实现一个用户登录判断就需要创建一个类这里起名叫LoginInterceptor 类实现 HandlerInterceptor 接口重写 preHeadler 方法此方法返回的是以个 boolean 类型如果为 true 表示验证成功可以继续执行后面的流程若是 false 表示验证失败后面的流程就不执行了通过是否可以获取到 Session 信息判断用户是否已经登陆来返回 true 或 false。 a实现 HandlerInterceptor 接口重写 preHeadler 方法如下代码 import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;//登录拦截器 public class LoginInterceptor implements HandlerInterceptor {/*** 此方法返回一个 boolean若为 true 表示验证成功否则验证失败后面的流程不能执行了* param request* param response* param handler* return* throws Exception*/Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 用户登录业务判断HttpSession session request.getSession(false);if(session ! null session.getAttribute(userinfo) ! null) {//说明用户已经登陆return true;}//可以调整登录页面或者 返回一个 401/403 没有权限response.sendRedirect(/login.html);return false;} }b将拦截器添加到配置文件中设置拦截规则 import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration public class AppConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns(/**) //连接所有请求值得注意的是这里不能只写一个 *一个 * 表示一级路径.excludePathPatterns(/user/login) //不拦截的 url.excludePathPatterns(/user/reg).excludePathPatterns(/**/*.html); //不拦截所有的页面} }注意 addPathPatterns表示需要拦截的 URL“**”表示拦截任意⽅法也就是所有⽅法。 excludePathPatterns表示需要排除的 URL。 说明以上拦截规则可以拦截此项⽬中的使⽤ URL包括静态⽂件图⽚⽂件、JS 和 CSS 等⽂件 1.3、拦截原理 二、 统一url前缀路径 2.1、方法一在系统的配置文件中设置 具体的重写 WebMvcConfigurer 接口下的 configurePathMatch 方法例如修改所有请求url添加前缀 /zhangsan 如下代码 import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration public class AppConfig implements WebMvcConfigurer {Overridepublic void configurePathMatch(PathMatchConfigurer configurer) {configurer.addPathPrefix(/zhangsan, c - true);}}2.2、方法二在 application.properies 中配置 例如修改所有请求url添加前缀 /zhangsan如下代码 server.servlet.context-path/zhangsan 三、统一异常处理 统一异常处理是通过如下两个注解结合实现的 ControllerAdvice表示控制器通知类。ExceptionHandler表示异常处理器。 两个结合表示出现异常的时候执行某个通知方法具体的步骤如下 创建一个类标识上 ControllerAdvice在方法上添加 ExceptionHandler; 如下代码 import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;ControllerAdvice ResponseBody public class MyExHandler {/*** 拦截所有的空指针异常进行统一的数据返回* param e* return*/ExceptionHandler(Exception.class) //这里也可以根据实际情况填写不同的异常public HashMapString, Object nullException(NullPointerException e) {HashMapString, Object reslut new HashMap();reslut.put(code, -1);reslut.put(msg, 空指针异常 e.getMessage());reslut.put(data, null);//这里返回 HashMap 就相当于项前端返回了一个 JSON 格式的数据return reslut;}}四、统一返回数据返回格式处理 4.1、背景 为什么要统一数据返回格式处理例如以下几个原因 方便前端程序员更好的接收和解析后端返回的数据降低约定前后端交互接口的成本按照某种格式实现即可因为所有的接口都是这样返回的。有利于项目的统一数据的维护和修改。4.2、具体实现 统一数据格式返回的实现需要以下两个步骤 创建一个类并添加 ControllerAdvice。实现 ResponseBodyAdvice 接口重写 supports 和  beforeBodyWrite。Ps 1、 supports 方法不用编写业务逻辑而是像一个控制器一样返回 true 则执行 beforeBodyWrite 方法反之则不执行。 2、beforeBodyWrite 方法就是用来实现统一对象的。 具体的如下 import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;import java.util.HashMap;ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {//将 java 对象转化成 JSON 格式Autowiredprivate ObjectMapper objectMapper;/*** 此方法返回 true 则执行下面的 beforeBodyWrite 方法,反之则不执行* param returnType* param converterType* return*/Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {HashMapString, Object result new HashMap();result.put(code, 200);result.put(msg, );result.put(data,body);// 这里需要进行特殊处理因为 String 在转换的时候报错if(body instanceof String) {try {return objectMapper.writeValueAsString(result);} catch (JsonProcessingException e) {e.printStackTrace();}}return result;} }代码中为什么要进行特殊处理?最易出错 在 java 程序中 String 是一个最特殊的类型既不是基础类型也不是对象并且在重写方法时也很特殊除了 String 其他的都是用一个格式化工具而 String 用的是自己的一套格式化工具因此在转换成 HashMap 的时候还没有被加载好而其他的转换器已经加载好了最后就会引发如下异常 因此就要判断 body 是否为 String 若为 String 类型就要进行特殊处理使用 JSON 的writeValueAsString 方法将 Java 对象转换成 JSON 格式再返回。
http://www.hkea.cn/news/14586294/

相关文章:

  • WordPress主题DIY插件网站的结构与布局优化
  • 大同格泰网站建设深圳专业网站设计公司价格
  • 凡科做网站需要备案吗国家工程建设信息公示网
  • 建设银行新加坡招聘网站上海今天最新新闻10条
  • 民治做网站联系电话网站建设计划书下载
  • 网站建设 人天价格如何自己建网址
  • 丹阳市制作网站网站制作实例教程
  • 热门的网站模板下载网站访问慢 分析工具
  • 新开传奇网站发布站三端互通个人介绍网页制作
  • 徐州手机网站网络营销模式包括哪些
  • 聊城招聘网站建设建网站北京
  • 不懂代码如何开始网站程序建设试述企业网的定义和意义
  • falsh网站模板下载怎么给网站添加关键词
  • 个人网站的服务器环境安装营销策划公司的基本
  • 个人网站 免费空间推广公司app好做吗
  • 重庆做网站推广网站域名哪些后缀更好
  • wordpress中文改英文长沙专业竞价优化首选
  • 备案后修改网站内容从零开始学做网站 网站
  • python3 网站开发入门网络广告宣传怎么做
  • c mvc网站开发实例教程仙桃网站建设
  • 腾讯云点播做视频网站做网站工具 不懂代码
  • 经营网站的备案介绍自己做的网站
  • 浏览器怎么设置不拦截任何网站动漫做暧视频网站
  • 网站访问次数受限宝安西乡做网站
  • 中国网站排行榜前100名北京网站建站网
  • 新编asp.net 2.0网站开发从入门到精通 代码做服装搭配的流行趋势网站
  • 葫芦岛住房和城乡建设厅网站wordpress默认登录地址
  • 网站自动采集系统文创产品设计展板
  • 网站建设费怎么做分录东营微信开发网站建设
  • 企业大型网站建设要多少钱衡水网站建设公司