Springmvc-自定义适配器,自定义拦截器

本文介绍了如何在SpringMVC中自定义适配器和拦截器。自定义适配器部分讲解了从创建自定义控制器接口、实现类,到自定义适配器和配置的过程。自定义拦截器部分则阐述了拦截器的作用,如日志记录、权限检查等,并详细说明了如何配置和实现拦截器,以及关于线程安全和ThreadLocal的注意事项。
摘要由CSDN通过智能技术生成

一、自定义适配器

  • HandlerAdapter适配器:用来转发HandlerMapping映射器的访问地址,HandlerAdapter指定对应的自定义Controller的方法执行。

  • 之前都是实现Controller接口,通过默认的HandlerAdapter执行实现的handleRequest方法。现在我们想通过自己定义的Controller控制器的方法去处理请求和响应以及ModelAndView视图模型。

    1. 第一步:自定义控制器MyController接口(相当于springframework中的Controller接口),该接口包含自己定义的方法(自定义参数列表);

    2. 第二步:创建MyController接口的实现类MyControllerImpl,实现执行方法;

    3. 第三部:自定义MyControllerAdapter适配器,实现springframework中的HandlerAdapter接口,并实现接口中的方法;

    4. 第四部:Spring配置文件需要额外配置自定义HandlerAdapter和自定义Controller以及其他配置信息。

    5. 自定义接口以及实现类:

      //自定义适配器接口
      public interface MyController {
             
      	public ModelAndView myTest() throws Exception;
      }
      
      //自定义控制器
      public class MyControllerImpl implements MyController {
             
      
      	@Override
      	public ModelAndView myTest() throws Exception {
             
      		
      		ModelAndView mv = new ModelAndView("hello");
      		
      		mv.addObject("name","MyControllerImpl");
      		
      		return mv;
      	}
      
      }
      
      //自定义适配器:指定调用MyController中的myTest方法
      public class MyControllerAdapter implements HandlerAdapter {
             
      
      	//判断是否符合自定义控制器接口类型,满足要求则调用handle方法
      	@Override
      	public boolean supports(Object handler) {
             
      		
      		return (handler instanceof MyController);
      	}
      	
      	//调用自定义控制器的指定方法
      	@Override
      	public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
      			throws Exception {
             
      		return ((MyController) handler).myTest();
      	}
      
      	
      	@Override
      	public long getLastModified(HttpServletRequest request, Object handler) {
             
      		return 0;
      	}
      
      }
      
      
    6. spring配置文件:

      1. 配置解决静态资源拦截问题
      2. 自定义控制器
      3. 视图解析器:需要处理逻辑视图名
      
      xml配置文件
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
      	xmlns:mvc="http://www.springframework.org/schema/mvc"
      	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      	xmlns:context="http://www.springframework.org/schema/context"
      	xsi:schemaLocation="
              http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
              http://www.springframework.org/schema/mvc
              http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
              http://www.springframework.org/schema/context 
      		http://www.springframework.org/schema/context/spring-context-4.3.xsd">
      
      	<!-- 解决静态资源无法访问问题 -->
      	<mvc:default-servlet-handler />
      
      	<!-- ================================= -->
      
      
      	<!-- 自定义适配器:向容器中注入自定义适配器 -->
      	<!-- 该适配器实现了HandlerAdapter接口:判断自定义控制类型 -->
      	<bean class="com.briup.adapter.MyControllerAdapter"></bean>
      
      
      	<!-- ================================= -->
      
      	<!-- 配置controller控制器 -->
      	<bean id="/adapter" class="com.briup.adapter.MyControllerImpl"></bean>
      
      	<!-- ================================= -->
      
      	<!-- 配置ViewResolver视图解析器 -->
      	<bean
      		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      		<property name="viewClass"
      			value="org.springframework.web.servlet.view.JstlView" />
      		<!-- 添加逻辑视图名的前缀 -->
      		<property name="prefix" value="/WEB-INF/jsp/" />
      		<!-- 添加逻辑视图名的后缀 -->
      		<property name=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值