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

springweb获取请求数据、spring中拦截器

SpringWeb获取请求数据

springWeb支持多种类型的请求参数进行封装

1、使用HttpServletRequest对象接收

 @PostMapping(path = "/login")//post请求
    //spring自动注入
    public String login(HttpServletRequest request){  
        System.out.println(request.getParameter("account"));
       
        return "success";
    }

2、spring自动封装,

@PostMapping(path = "/login")//post请求
    
    public String login(String account,String password){
        
        return "success";
    }

3、前端请求参数需要后端形参名一致Spring 会自定进行数据封装,如果不一致需要使用@RequestParam进行参数绑定,@RequestHeader用来接收请求头中的数据

/*@PostMapping(path = "/login")//post请求
    //spring自动注入
    //前后端参数名称一致是@RequestParam进行绑定,请求体用@RequestHeader
    public String login(@RequestParam("account1") String account, Integer password, @RequestHeader String token){
        System.out.println("登录");
        return "success";
    }*/

4、使用实体类接收数据

@RequestBody可以接收前端响应的json格式的数据封装到对象里

 @PostMapping(path = "/login")//post请求
    public Result login(@RequestBody Admin admin, @RequestHeader String token){
       Admin admin1= loginService.login(admin);
        Result result=new Result(200,"登录成功",admin1);
        return result;
    }

需要添加json组件

<!--jackson-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.14.2</version>
</dependency>

5、日期转换类型

@DateTimeFormat(pattern = "yyyy-MM-dd")//接收前端数据提交发送的日期格式
@JsonFormat(pattern = "yyyy-MM-dd")//向前端响应转json时i使用的
private Date birthday;

拦截器

Spring WEB 中的拦截器(Interceptor)类似于 Servlet 中的过滤器(Filter),
它主要用于拦截用户请求并作相应的处理。
Spring 中的拦截器与过滤器有着本质的区别,过滤器是 servlet 规范中定义并实
现的,在进入到 servlet 之前截获请求.而拦截器是 spring 中定义的一种拦截机制,
是对进入到处理器的请求进行拦截.
ac47bc31ca1245ab81c61ce86b8bcbe7.png
SpringWEB 定义了拦截器接口 HandlerInterceptor
调用这个三个方法的时候,其参数的值也是从框架内部传递进来的。
boolean preHandle
预处理方法,实现处理器方法的预处理,就是在处理器方法执行之前这个方法会
被执行,相当于拦截了处理器方法,框架会传递请求和响应对象给该方法,第三
个参数为被拦截的处理器。如果 preHandle 方法返回 true 表示继续流程(如调
用下一个拦截器或处理器方法),返回 false 表示流程中断,不会继续调用其他
的拦截器或处理器方法,此时我们需要通过 response 来产生响应;

 

拦截器的实现

编写一个类继承HandlerInterceptorAdapter

 

package com.ffyc.ssm.interceptor;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ffyc.ssm.model.Result;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AdminTokenInterceptor implements HandlerInterceptor {
    /*
    实现HandlerInterceptor接口,重写preHandle
    * 拦截器处理方法,当请求到达处理器前,进入拦截器处理
    * 返回true离开拦截器向后执行到达处理器Controller
    * 返回false不在向后执行*/
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String adminToken=request.getHeader("adminToken");
        if (adminToken.equals("1234567")){
            return  true;
        }else {
            Result result=new Result(401,"token验证失败",null);
            response.getWriter().write(new ObjectMapper().writeValueAsString(result));
        }
        return false;
    }
}

注册拦截器,在spring.xml中

<!-- 配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/><!--定义进去拦截器的地址-->
            <mvc:exclude-mapping path="/loginCtl/login"/><!--定义不进去拦截器的地址-->
            <bean id="admintoken" class="com.ffyc.ssm.interceptor.AdminTokenInterceptor"></bean><!---->
        </mvc:interceptor>
    </mvc:interceptors>

 

 


http://www.kler.cn/a/291710.html

相关文章:

  • Linux网络基础--传输层Tcp协议(上) (详细版)
  • 《Qt Creator 4.11.1 教程》
  • C 数组:索引魔杖点化的数据星图阵列
  • Oracle 查询表占用空间(表大小)的方法
  • 本地maven项目打包部署到maven远程私库
  • 机器学习中做时间序列模型考虑把时间作为特征分析
  • 构建数据安全防线:MySQL数据备份策略的文档化实践
  • JavaScript接下来的小项目
  • 【SLAM】GNSS的定义,信号原理以及RTK在多传感器融合中的使用方法
  • 代码随想录算法训练营第五十七天 | 图论part07
  • Eclipse+Java+Swing实现学生信息管理系统
  • Learn ComputeShader 07 Post Processing
  • git 回滚的三种方式
  • js实现lua解释器,类似halcon代码编辑器一行一行解释执行
  • Cubase操作:就地渲染 配和弦技巧 合并多段音频 隐藏标记轨序号 删除素材池多余音频
  • Synchronized、Reetrantlock
  • 【ESP32 】VScode -window环境配置(adruino开发)(点亮LED)
  • softmax里边的exp用拟合验证精度。
  • Java算法之冒泡排序(Bubble Sort)
  • [NOI1998] 免费的馅饼(三维偏序转二维偏序)
  • 【python爬虫】超越Selenium的自动化爬虫神器--DrissionPage语法解析与应用实战
  • C++:控制电脑状态控制
  • WPF 手撸插件 七 日志记录(二)
  • Unity(2022.3.41LTS) - UI详细介绍-Scrollbar(滚动条)
  • 【华为】测试工程师面试题汇总,你可知道华为的高薪技术岗有多香~
  • 中国航天科工笔试25考什么?如何通过人才测评|附真题库面试攻略