Spring MVC 인터셉터에 대한 자세한 소개
Spring MVC의 인터셉터는 HandlerMapping 수준에 있습니다. 각 HandlerMapping은 자체 인터셉터를 가질 수 있습니다.
Spring에서 제공하는
org. .HandlerInterceptor 인터페이스,
org.springframework.web.servlet.handler.HandlerInterceptorAdapter 어댑터,
이 인터페이스를 구현하거나 이 클래스를 상속하면 매우 편리하게 자신만의 인터셉터를 구현할 수 있습니다.
다음 세 가지 방법이 있습니다.
작업 전 실행:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler);
뷰 생성 전에 실행
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView);
리소스를 해제하는 데 사용할 수 있는 마지막 실행
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
각각 전처리, 후처리(서비스가 호출되고 ModelAndView가 반환되지만 페이지가 렌더링되지 않음) 및 반환 처리(페이지가 렌더링됨)를 구현합니다.
preHandle에서는 인코딩, 보안 제어 등이 가능합니다.
postHandle에는 ModelAndView를 수정할 수 있는 기회가 있습니다.
완료 후 예외가 발생했는지 확인하고 ex가 null인지 여부에 따라 기록할 수 있습니다.
매개변수의 개체 핸들러가 다음 인터셉터입니다.
인터셉터를 사용하는 방법은 무엇입니까?
인터셉터를 사용자 정의하려면 HandlerInterceptor 인터페이스를 구현해야 합니다.
Java 코드
public class MyInteceptor implements HandlerInterceptor { 略。。。 }
Spring MVC에는 전체 인터셉터가 없으며 전후의 모든 요청을 인터셉트할 수 없습니다.
Spring MVC의 인터셉터는 HandlerMapping 수준에 있습니다. 여러 HandlerMapping이 있을 수 있으며 각 HandlerMapping은 자체 인터셉터를 가질 수 있습니다.
요청이 Order 값에 따라 작은 것부터 큰 것 중 먼저 반환되는 값에 따라 HandlerMapping 인터페이스의 구현 클래스를 순차적으로 실행하면 후속 HandlerMapping이 사라지지 않고 이 프로세스가 완료됩니다. 다음 과정으로 넘어가시면 됩니다.
인터셉터는 언제 실행되나요? 요청이 HandlerMapping으로 전달되면 HandlerMapping은 먼저 요청을 처리할 프로세서를 찾습니다. 이를 찾으면 인터셉터를 실행한 후 대상 프로세서에 전달합니다.
핸들러가 발견되지 않으면 이 인터셉터는 실행되지 않습니다.
spring MVC 구성 파일에는 세 가지 방법을 구성할 수 있습니다.
옵션 1, (대략) 전체 인터셉터, 모든 URL 차단
Java 코드
<mvc:interceptors> <bean class="com.app.mvc.MyInteceptor" /> </mvc:interceptors>
"대략"이라고 불리는 이유 , 앞서 말했듯이 Spring에는 전체 인터셉터가 없습니다.
<mvc:interceptors/>
는 각 HandlerMapping에 인터셉터를 주입합니다. 프로세서를 찾을 수 있는 HandlerMapping이 항상 있고 최대 하나의 프로세서만 찾을 수 있으므로 이 인터셉터는 항상 실행됩니다. 전체 인터셉터 역할을 합니다. <mvc:interceptors/>
会为每一个HandlerMapping,注入一个拦截器。总有一个HandlerMapping是可以找到处理器的,最多也只找到一个处理器,所以这个拦截器总会被执行的。起到了总拦截器的作用。
如果是REST风格的URL,静态资源也会被拦截。
方案二, (近似) 总拦截器, 拦截匹配的URL。
Xml代码
<mvc:interceptors > <mvc:interceptor> <mvc:mapping path="/user/*" /> <!-- /user/* --> <bean class="com.mvc.MyInteceptor"></bean> </mvc:interceptor> </mvc:interceptors>
就是比 方案一多了一个URL匹配。
如果是REST风格的URL,静态资源也会被拦截。
方案三,HandlerMappint上的拦截器。
如果是REST风格的URL,静态资源就不会被拦截。因为我们精准的注入了拦截器。
Xml代码
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <bean class="com.mvc.MyInteceptor"></bean> </list> </property> </bean>
如果使用了<mvc:annotation-driven />,
它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter 这两个bean,所以就没有机会再给它注入interceptors属性,就无法指定拦截器。
当然我们可以通过人工配置上面的两个Bean,不使用 <mvc:annotation-driven />,就可以 给interceptors属性 注入拦截器了。
其实我也不建议使用 <mvc:annotation-driven />,
而建议手动写详细的配置文件,来替代 <mvc:annotation-driven />
,这就控制力就强了。
如何替换 <mvc:annotation-driven />
?他到底做了什么工作?
一句 <mvc:annotation-driven />
옵션 2, (대략) 총 인터셉터는 일치하는 URL을 가로챕니다.
<!-- 注解请求映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="logNDCInteceptor"/> <!-- 日志拦截器,这是你自定义的拦截器 --> <ref bean="myRequestHelperInteceptor"/> <!-- RequestHelper拦截器,这是你自定义的拦截器--> <ref bean="myPermissionsInteceptor"/> <!-- 权限拦截器,这是你自定义的拦截器--> <ref bean="myUserInfoInteceptor"/> <!-- 用户信息拦截器,这是你自定义的拦截器--> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="byteArray_hmc" /> <ref bean="string_hmc" /> <ref bean="resource_hmc" /> <ref bean="source_hmc" /> <ref bean="xmlAwareForm_hmc" /> <ref bean="jaxb2RootElement_hmc" /> <ref bean="jackson_hmc" /> </list> </property> </bean> <bean id="byteArray_hmc" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 处理.. --> <bean id="string_hmc" class="org.springframework.http.converter.StringHttpMessageConverter" /><!-- 处理.. --> <bean id="resource_hmc" class="org.springframework.http.converter.ResourceHttpMessageConverter" /><!-- 处理.. --> <bean id="source_hmc" class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /><!-- 处理.. --> <bean id="xmlAwareForm_hmc" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" /><!-- 处理.. --> <bean id="jaxb2RootElement_hmc" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /><!-- 处理.. --> <bean id="jackson_hmc" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /><!-- 处理json-->
<mvc:annotation-driven />,
를 사용하면 DefaultAnnotationHandlerMapping과 AnnotationMethodHandlerAdapter 두 개의 Bean이 자동으로 등록되므로 줄 기회가 없습니다. 다시 Interceptors 속성을 주입하면 인터셉터를 지정할 수 없습니다. 🎜🎜물론 <mvc:annotation-driven />,
를 사용하는 것을 권장하지 않지만, <mvc:annotation-driven / 대신 세부 구성 파일을 수동으로 작성하는 것을 권장합니다. > ;
, 이렇게 하면 더 강력한 제어가 가능해집니다. 🎜🎜<mvc:annotation-driven />
를 어떻게 교체하나요? 그는 정확히 무엇을 했나요? 🎜🎜한 문장 <mvc:annotation-driven />
은 실제로 다음 작업을 수행합니다. (자신이 정의한 인터셉터 추가 제외) 🎜🎜이를 이해한 후에는 Spring3 MVC에 대한 제어가 더 중요해집니다. 강력하므로 원하는 곳 어디에서나 변경할 수 있습니다. 🎜🎜Xml 코드 🎜🎜🎜🎜🎜rrreee위 내용은 Spring MVC 인터셉터에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











사용자들은 인터넷을 사용하면서 와피(wapi)라는 용어를 접했을 수도 있지만, 와피가 무엇인지 모르는 사람들도 있을 것입니다. 다음은 모르는 사람들의 이해를 돕기 위해 자세히 소개한 것입니다. wapi란 무엇입니까? 답변: wapi는 무선 LAN 인증 및 기밀 유지를 위한 인프라입니다. 이는 일반적으로 사무실 건물과 같은 장소 근처에서 보호되는 적외선 및 블루투스와 같은 기능과 같습니다. 기본적으로 소규모 부서가 소유하므로 이 기능의 범위는 불과 몇 킬로미터에 불과합니다. wapi 관련 소개: 1. Wapi는 무선 LAN의 전송 프로토콜입니다. 2. 이 기술은 협대역 통신의 문제를 방지하고 더 나은 통신을 가능하게 합니다. 3. 신호를 전송하는 데는 하나의 코드만 필요합니다.

2023년에는 AI 기술이 화두가 되면서 다양한 산업, 특히 프로그래밍 분야에 큰 영향을 미치고 있다. 사람들은 AI 기술의 중요성을 점점 더 인식하고 있으며 Spring 커뮤니티도 예외는 아닙니다. GenAI(일반 인공 지능) 기술이 지속적으로 발전함에 따라 AI 기능을 갖춘 애플리케이션 생성을 단순화하는 것이 중요하고 시급해졌습니다. 이러한 배경에서 AI 기능 애플리케이션 개발 프로세스를 단순화하고 간단하고 직관적이며 불필요한 복잡성을 피하는 것을 목표로 하는 "SpringAI"가 등장했습니다. 'SpringAI'를 통해 개발자는 AI 기능이 포함된 애플리케이션을 더욱 쉽게 구축할 수 있어 사용 및 운영이 더욱 쉬워진다.

업계 리더인 Spring+AI는 강력하고 유연한 API와 고급 기능을 통해 다양한 산업에 선도적인 솔루션을 제공합니다. 이 주제에서는 다양한 분야의 Spring+AI 적용 사례를 살펴보겠습니다. 각 사례에서는 Spring+AI가 어떻게 특정 요구 사항을 충족하고 목표를 달성하며 이러한 LESSONSLEARNED를 더 넓은 범위의 애플리케이션으로 확장하는지 보여줍니다. 이 주제가 여러분이 Spring+AI의 무한한 가능성을 더 깊이 이해하고 활용하는 데 영감을 줄 수 있기를 바랍니다. Spring 프레임워크는 소프트웨어 개발 분야에서 20년 이상의 역사를 가지고 있으며, Spring Boot 1.0 버전이 출시된 지 10년이 되었습니다. 이제 봄이 왔다는 것에 대해 누구도 이의를 제기할 수 없습니다.

PlayerUnknown's Battlegrounds라고도 알려진 Pubg는 2016년 인기를 얻은 이후 많은 플레이어를 끌어모은 매우 고전적인 슈팅 배틀 로얄 게임입니다. 최근 win11 시스템이 출시된 후 많은 플레이어들이 win11에서 플레이하고 싶어합니다. win11이 pubg를 플레이할 수 있는지 편집기를 따라가 보겠습니다. win11이 pubg를 플레이할 수 있나요? 답변: Win11은 pubg를 플레이할 수 있습니다. 1. win11 초기에는 win11에서 tpm을 활성화해야 했기 때문에 많은 플레이어가 pubg에서 금지되었습니다. 2. 하지만 플레이어 여러분의 피드백을 바탕으로 블루홀에서는 이 문제를 해결하였고, 이제 win11에서도 정상적으로 pubg 플레이가 가능해졌습니다. 3. 술집을 만난다면

Spring 프로그래밍 방식 트랜잭션을 구현하는 방법: 1. TransactionCallback 및 TransactionCallbackWithoutResult를 사용합니다. 3. Transactional 주석을 사용합니다. 4. @Transactional과 함께 TransactionTemplate을 사용합니다.

최신 win11로 업데이트한 후 많은 사용자가 시스템 사운드가 약간 변경되었지만 이를 조정하는 방법을 알지 못합니다. 따라서 오늘 이 사이트에서는 컴퓨터의 최신 win11 사운드 조정 방법을 소개합니다. 작동 방법도 어렵지 않습니다. 선택 사항도 다양합니다. 와서 다운로드하여 사용해 보세요. 최신 컴퓨터 시스템 Windows 11의 사운드 조정 방법 1. 먼저 바탕 화면 오른쪽 하단의 사운드 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "재생 설정"을 선택합니다. 2. 그런 다음 설정을 입력하고 재생 표시줄에서 "스피커"를 클릭합니다. 3. 그런 다음 오른쪽 하단의 "속성"을 클릭하십시오. 4. 속성에서 "향상" 옵션 표시줄을 클릭하세요. 5. 이때 '모든 음향효과 비활성화' 앞의 √가 체크되어 있으면 취소해 주세요. 6. 그 후 아래에서 설정할 음향 효과를 선택하고 클릭하세요.

Spring에서 트랜잭션 격리 수준을 설정하는 방법: 1. @Transactional 주석을 사용합니다. 2. Spring 구성 파일에서 설정합니다. 3. PlatformTransactionManager를 사용합니다. 4. Java 구성 클래스에서 설정합니다. 자세한 소개: 1. @Transactional 주석을 사용하고, 트랜잭션 관리가 필요한 클래스나 메소드에 @Transactional 주석을 추가하고, 속성에서 격리 수준을 설정합니다. 2. Spring 구성 파일에서 등.

Kuaishou는 사용자가 다른 사람들과 쉽게 연결할 수 있는 인기 있는 짧은 비디오 소셜 플랫폼입니다. 시간이 지남에 따라 사용자의 비공개 메시지는 수많은 낯선 사람의 메시지로 채워질 수 있으며, 이는 사용자 경험에 영향을 미칠 수 있습니다. 그렇다면 Kuaishou에서 낯선 사람이 보낸 비공개 메시지를 삭제하는 방법은 무엇입니까? 이 글에서는 Kuaishou 플랫폼에서 낯선 사람이 보낸 비공개 메시지를 삭제하는 방법과 낯선 사람이 보낸 메시지를 가로챌 수 있는지 여부를 자세히 소개합니다. 1. Kuaishou 비공개 메시지에서 낯선 사람의 메시지를 모두 삭제하는 방법은 무엇입니까? 1. 먼저 Kuaishou 앱을 열고 개인 센터에 들어갑니다. 2. 개인센터 페이지에서 "메시지" 옵션을 찾아 클릭하여 입장합니다. 3. 메시지 페이지에서 "비공개 메시지" 옵션을 찾아 클릭하여 입력하세요. 4. 비공개 메시지 페이지에서 다양한 메시지 카테고리를 볼 수 있습니다. "낯선 사람 메시지" 카테고리를 찾아 클릭하세요.
