RESTful和拦截器

什么是RESTful?

RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

资源:互联网所有的事物都可以被抽象成资源

操作资源方法:使用Post、Delete、put、get,使用不同的方法对资源进行操作

 分别 添加、删除、修改、查询

 

传统方式操作资源

http://127.0.0.1/item/queryItem.action?id=1 查询,GET

http://127.0.0.1/item/saveItem.action 新增,POST

http://127.0.0.1/item/updateItem.action 更新,POST

http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST

 

使用RESTful操作资源

http://127.0.0.1/item/1 查询,GET

http://127.0.0.1/item 新增,POST

http://127.0.0.1/item 更新,PUT

http://127.0.0.1/item/1 删除,DELETE

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

 

从URL地址上获取参数

需求:http://127.0.0.1/product/1 查询,GET

我们需要从URL地址上获取商品ID

  1. 使用注解@RequestMapping(/product/{XXX})声明请求的URL
    1. {XXX}叫做占位符,请求的URL地址/product/1

(2)@PathVariable获取URL上的数据

RequestMapping中占位符的名称和形参的名字要一致。

如果不一致

@Controller
public class DemoController {

    @Autowired
    private ProductService productService;
    @RequestMapping("/product/{productId}")
    public Product queryProductById(@PathVariable("productId") Integer id){
        System.out.println(id);
        return null;
    }
}

注意:

@PathVariable和@RequestParam区别

@PathVariable

获取URL地址上参数

@RequestParam

获取请求(request)参数

 

拦截器

定义,是什么

Spring web Mvc的处理器拦截器类似于Servlet开发中过滤器filter,用于对 处理器(控制器)进行预处理或者后处理

 

拦截器使用

定义拦截器

Interceptor1:

public class Interceptor1 implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("Interceptor1 preHandle1");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("Interceptor1 postHandle1");

    }
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("Interceptor1 afterCompletion1");
    }
}

Interceptor2

public class Interceptor2 implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("Interceptor2 preHandle2");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("Interceptor2 postHandle2");
    }
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("Interceptor2 afterCompletion2");
    }
}

拦截器配置

在springMVC中配置:

    <!--拦截器设置-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--所有请求都拦截-->
            <mvc:mapping path="/**"/>
            <!--配置具体的拦截器-->
            <bean class="com.huadian.controller.Interceptor1"></bean>
        </mvc:interceptor>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.huadian.controller.Interceptor2"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

测试

随便发送一个请求,看控制器输出

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值