当前位置:实例文章 » 其他实例» [文章]SpringMVC【SpringMVC拦截器、 SpringMVC跨域请求、SSM整合】(七)-全面详解(学习总结---从入门到深化)

SpringMVC【SpringMVC拦截器、 SpringMVC跨域请求、SSM整合】(七)-全面详解(学习总结---从入门到深化)

发布人:shili8 发布时间:2024-12-26 09:28 阅读次数:0

**Spring MVC全面详解**

在前面的几篇文章中,我们已经讲过了 Spring MVC 的基本概念、配置以及 Controller 的使用。今天我们要继续讨论的主题是 Spring MVC 的拦截器、跨域请求以及 SSM 整合。

### 一、Spring MVC 拦截器**什么是拦截器?**

在 Web 应用中,拦截器是一种可以在请求和响应之间进行处理的组件。它可以用于实现一些通用的功能,如登录验证、权限控制等。

**如何使用拦截器?**

要使用拦截器,我们需要创建一个实现 `HandlerInterceptor` 接口的类,并且在 Spring MVC 的配置文件中注册这个类。

java// MyInterceptor.javapublic class MyInterceptor implements HandlerInterceptor {
 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 // 在请求处理之前执行的代码 System.out.println("拦截器正在工作...");
 return true;
 }

 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
 // 在请求处理之后执行的代码 System.out.println("拦截器已经完成...");
 }
}


xml

 



### 二、Spring MVC 跨域请求**什么是跨域请求?**

在 Web 应用中,跨域请求指的是一个页面的 JavaScript代码发起的请求,不同于该页面所在的域名。例如,一个页面位于 ` JavaScript 发起了一个请求到 ` />
**如何解决跨域请求问题?**

要解决跨域请求问题,我们可以使用以下几种方法:

1. **JSONP(JSON with Padding)**: JSONP 是一种特殊的 JSON 格式,它允许在不同域之间传递数据。我们可以通过设置 `Content-Type` 头为 `application/javascript` 来实现 JSONP。
2. **CORS(Cross-Origin Resource Sharing)**: CORS 是一个 W3C 标准,允许服务器指定哪些源有权访问其资源。我们可以通过设置 `Access-Control-Allow-Origin` 头来实现 CORS。

java// MyController.java@RestControllerpublic class MyController {
 @GetMapping("/data")
 public String getData() {
 // 设置 JSONP 头 response.setContentType("application/javascript");
 return "JSONP 数据";
 }
}


xml

 
 


java// CORSFilter.javapublic class CORSFilter implements Filter {
 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
 // 设置 CORS 头 HttpServletResponse  = (HttpServletResponse) response;
  "*");
  "GET, POST, PUT, DELETE, OPTIONS");
  "3600");
  "Content-Type, Accept, X-Requested-With, rememberMe");

 chain.doFilter(request, response);
 }
}


### 三、SSM 整合**什么是 SSM?**

SSM 是 Spring + Spring MVC + MyBatis 的缩写,它是一种常见的 Web 应用开发模式。

**如何整合 SSM?**

要整合 SSM,我们需要在项目中添加以下依赖:

xml<!-- pom.xml -->
<dependencies>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>5.3.20</version>
 </dependency>

 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>5.3.20</version>
 </dependency>

 <dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis</artifactId>
 <version>3.5.10</version>
 </dependency>

 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>8.0.27</version>
 </dependency>
</dependencies>


然后,我们需要配置 Spring MVC 和 MyBatis:

xml<!-- springmvc.xml -->
<mvc:annotation-driven/>

<bean id="dataSource" class="com.example.DataSource">
 <!-- 数据源配置 -->
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 <property name="dataSource" ref="dataSource"/>
 <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 <property name="basePackage" value="com.example.mapper"/>
</bean>


xml<!-- mybatis-config.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config3.0//EN"
 " /><configuration>
 <settings>
 <setting name="cacheEnabled" value="true"/>
 </settings>

 <typeAliases>
 <typeAlias type="com.example.model.User" alias="User"/>
 </typeAliases>
</configuration>


最后,我们需要创建一个 Controller 来测试 SSM 整合:

java// MyController.java@RestControllerpublic class MyController {
 @Autowired private UserMapper userMapper;

 @GetMapping("/users")
 public List getUsers() {
 return userMapper.selectList(null);
 }
}


通过以上步骤,我们就完成了 SSM 整合的配置和测试。

**总结**

在本文中,我们讨论了 Spring MVC 的拦截器、跨域请求以及 SSM 整合。我们学习了如何使用拦截器来实现登录验证和权限控制,如何解决跨域请求问题,并且完成了 SSM 整合的配置和测试。

**参考**

* [Spring MVC 文档]( />* [MyBatis 文档](

相关标签:学习
其他信息

其他资源

Top