Restful风格
RESTful是一种软件设计规范,是客户端和服务端进行数据交互的一个规范。 早期使用JSP页面开发网页时,数据交互基本都是通过表单提交,然后通过内置对象传递。当HTML5兴起,移动互联网兴起,网站后端服务,不仅要考虑PC端的网页,也要考虑移动端数据的展示、小程序、HTML5页面等。如果需要多个终端(Android、iOS、小程序、Pad、HTML5页面)共用一个后端,一般来说主流方案就是使用JSON进行传递。RESTful则规范了请求的URL,注意RESTful只是一个规范,不是一个技术。
在RESTful中:
- 一个URL操作一个资源
- 请求的URL中不能有动词
- 使用HTTP的请求方式来描述请求行为,例如:
GET(查)
POST(增加)
DELETE(删)
PUT(改)
在RESTful接口中,所有的方法都是返回JSON,没有返回页面的(ModelAndView),因此,所有的方法上都需要添加<!--@ResponseBody-->注解。一个替代的简化方案,是使用 @RestController 代替@Controller。@RestController实际上是一个组合注解,是@Controller和<!--@ResponseBody-->的组合:
案例
@Controller
public class SpringController {
/**
* 按照id查询
* @param id
*/
@GetMapping("/user/{id}")
//@ResponseBody
public void getUserById(@PathVariable Integer id){
System.out.println("."+id);
}
@PostMapping("/user")
//@ResponseBody
public void addUser(@RequestBody User user){
System.out.println(user);
}
@DeleteMapping("/user/{id}")
//@ResponseBody
public void deleteUserById(@PathVariable Integer id){
System.out.println(id);
}
@PutMapping("/user")
//@ResponseBody
public void updateUserById(@RequestBody User user){
System.out.println(user);
}
}
拦截器
SpringMVC中的拦截器对应了Web基础中的过滤器。
拦截器和过滤器的区别:
|序号|区别 |
|--|--|
| 1| 一般来说,如果使用了SpringMVC框架,然后有拦截器的需求,建议使用拦截器而不是过滤器 |
|2 |过滤器依赖于Servlet容器,而拦截器是SpringMVC自带的,不依赖容器 |
|3| 拦截器的功能更为强大,因为拦截器是一种AOP风格的过滤器(实际上这个功能过滤器也能实现,只是没有拦截器这么简单明了)|
案例
定义拦截器
package com.sxt.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class MyInterceptor implements HandlerInterceptor{
/**
* 在执行controller之前执行的方法
* @return
* true 放过请求
* false 拦截请求
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("preHandle ...");
return true;
}
/**
* 在controller处理完成请求后执行
* 在返回ModelAndView之前执行,可以修改ModelAndView中的信息
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle ...");
modelAndView.setViewName("/error.jsp");
}
/**
* 在postHandle方法执行完成后执行,不能影响返回结果
*
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("afterCompletion...");
}
}
配置拦截器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 开启扫描 -->
<context:component-scan base-package="com.sxt.*"/>
<!-- 开启SpringMVC注解的方式 -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 注册拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.sxt.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
测试
转载于:https://my.oschina.net/u/4116634/blog/3042047
分享到:
相关推荐
在Spring MVC中,通常通过实现`Filter`接口并注册到DispatcherServlet,或者使用`WebMvcConfigurer`接口的`addInterceptors()`方法来添加一个拦截器,设置请求编码。 ```java public class ...
在SpringMVC中,我们使用`@RestController`注解来标记控制器类,它结合了`@Controller`和`@ResponseBody`,用于创建RESTful服务。例如: ```java @RestController @RequestMapping("/users") public class ...
4. **拦截器(Interceptor)**:SpringMVC提供了Interceptor机制,允许在请求处理前或后执行自定义逻辑,如权限检查、日志记录等。通过创建自定义Interceptor并注册到DispatcherServlet,我们可以实现高效且灵活的...
6. **拦截器(Interceptor)**:SpringMVC允许定义拦截器,可以在请求处理前后执行一些通用操作,如权限验证、日志记录等。 7. **数据绑定和类型转换**:SpringMVC自动处理请求参数与模型属性之间的绑定和类型转换...
`SpringMVC` 的拦截器可以实现请求处理前后的预处理和后处理功能,比如登录检查、日志记录等。通过 `@Configuration` 类和 `@EnableWebMvc` 注解,我们可以配置 `HandlerInterceptor` 实例。 9. **上传下载** `...
Spring MVC 是一个强大的...此外,项目可能还涵盖了Spring MVC的其他高级特性,如拦截器和全局异常处理,以及与数据库的交互。通过学习这个项目,开发者能够深入理解并掌握Spring MVC框架在构建RESTful服务中的应用。
- **HandlerInterceptor**:自定义拦截器,实现预处理和后处理逻辑。 7. **RESTful 风格** - 使用 HTTP 动词(GET, POST, PUT, DELETE)来对应资源的不同操作。 - **@ResponseBody**:将方法返回值直接写入 ...
3. **配置文件**:在 "springmvc-demo" 中,通常会有 "servlet-context.xml" 或类似的配置文件,用于定义 MVC 组件的映射、拦截器、视图解析器等。 4. **@Controller**:在 Java 类上使用此注解标识该类为 ...
9. **拦截器(Interceptor)**:Spring MVC 允许自定义拦截器,可以在请求处理前后进行预处理和后处理,如权限检查、日志记录等。 10. **转换器和格式化器(Converter & Formatter)**:这些组件用于将请求参数转换...
9. **拦截器(Interceptor)**:Spring MVC允许定义拦截器,可以在请求处理前后执行自定义逻辑,如日志记录、权限验证等。 10. **转换器和格式化器(Converter and Formatter)**:这些组件用于类型转换,例如将请求...
Spring MVC 是一个基于 ...后续部分可能涉及更高级的主题,如拦截器、数据绑定、事务管理和 RESTful API 的实现。通过这个教程,初学者可以系统地了解和掌握 Spring MVC 框架的核心功能,并能够应用于实际项目开发中。
9. **Interceptor(拦截器)**:拦截器可以实现预处理和后处理功能,比如登录检查、日志记录等,通过实现`HandlerInterceptor`接口并注册到Spring MVC中。 10. **转换与格式化**:Spring MVC提供了数据绑定和类型...
10. **拦截器(Interceptor)**:理解拦截器的工作原理,如何自定义拦截器以实现登录验证、日志记录等功能。 11. **RESTful API**:了解如何使用SpringMVC构建RESTful风格的服务,包括HTTP动词(GET、POST、PUT、...
8. **拦截器(Interceptor)**:类似于 AOP 的预处理和后处理,可以在请求处理前后执行特定逻辑,如权限验证、日志记录等。 9. **数据绑定**:Spring MVC 提供了自动的数据绑定功能,可以方便地将 HTTP 参数绑定到...
8. **拦截器**:自定义拦截器实现预处理和后处理逻辑,如登录检查。 9. **RESTful风格**:使用`@GetMapping`、`@PostMapping`等处理RESTful请求。 10. **模板引擎**:如Thymeleaf或Freemarker的使用,渲染视图。 ...
SpringMVC的配置文件中,可以定义自动扫描的包,以便发现和管理控制器类,同时配置视图解析器,如Bean和视图的映射。POJO(Plain Old Java Object)是SpringMVC中用于接收和处理请求的数据对象。 SpringMVC的注解...
5. **MVC配置**:在Spring MVC的应用中,通常需要配置`DispatcherServlet`、视图解析器、拦截器等。这些配置可以在XML配置文件中进行,也可以通过Java配置类实现。 在这个"springmvc-demo07-响应(数据共享,页面...
- **拦截器使用**:编写自定义拦截器,实现登录检查、日志记录等功能。 通过这个教程,你可以深入了解SpringMVC的工作原理,以及如何在实际项目中整合和运用SSM框架。通过阅读提供的.md和.pdf文件,你将获得更详尽...
本文将深入讲解Spring MVC的核心概念,包括ModelAndView的使用、数据交互、控制器注解、RESTFul风格案例、文件上传、拦截器及综合案例。 1. **Spring MVC架构** - **Model**:模型层,通常由Java对象(如领域模型...
这个名为“SpringMVC拦截器源代码.zip”的压缩包可能包含了Spring MVC拦截器的实现源码,这对于理解和学习如何自定义拦截器以增强应用功能非常有帮助。 1. **拦截器的基本概念** - 拦截器是AOP(面向切面编程)的...