爪哇2博客
爪哇2博客

春季MVC拦截器HandleInterceptorAdapter示例

有时您需要拦截传入的请求并进行一些预处理,或者需要在请求完成后进行。它与我们用于servlet的过滤器非常相似。
有两种方法可以将拦截器与Spring MVC结合使用。

春季MVC教程:

HandlerInterceptor接口:

我们可以实现HandlerInterceptor接口来使用拦截器。它有三种我们需要实现的方法。

公共布尔 preHandle(HttpServletRequest请求,HttpServletResponse响应,对象处理程序):在将请求移交给处理程序方法之前,将执行此方法。
如果您注意到它具有布尔返回类型。如果此方法返回true,则它将转到其他拦截器或处理程序方法。如果此方法返回false,则此请求仅由拦截器处理,我们应使用响应对象将其发送回客户端。
公共无效 postHandle(HttpServletRequest请求,HttpServletResponse响应,对象处理程序,
模型和视图 模型和视图):当处理程序方法完成其过程但dispatcherServlet仍在处理视图时,将调用此方法。此方法可用于添加一些可在视图中使用的模型视图对象。可以通过将对象添加到modelAndView对象来完成。
公共无效 完成后(HttpServletRequest请求,HttpServletResponse响应,对象处理程序,异常Exception):在渲染视图并完全处理请求后调用此方法。

HandlerInterceptorAdapter类:

HandlerInterceptor的问题是您需要实现所有方法,但是如果扩展到称为HandlerInterceptorAdapter的抽象类,则只能实现所需的那些方法,而其他方法将具有默认实现。

让我们使用HandlerInterceptorAdapter类实现自定义拦截器示例。

春季MVC拦截器示例:

我在这里使用Spring MVC你好世界示例,对其进行了很小的更改。

春季MVC拦截器项目结构

添加Spring MVC依赖项

在pom.xml中添加spring依赖项。我们在这里需要spring核心和spring mvc依赖。
pom.xml 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
<项目 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:si="http://www.w3.org/2001/XMLSchema-instance"
  si:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.Arpit.爪哇2blog</groupId>
  <artifactId>弹簧MVCHelloWorldExample</artifactId>
  <打包>战争</打包>
  <>0.0.1-快照</>
  <名称>弹簧MVCHelloWorldExample 马文 网络应用</名称>
  <网址>http://maven.apache.org</url>
  <依存关系>
    <依赖>
      <groupId>unit</groupId>
      <artifactId>unit</artifactId>
      <>3.8.1</>
      <范围>测试</范围>
    </依赖>
   <依赖>
     <groupId>爪哇x.小服务程序</groupId>
     <artifactId>爪哇x.小服务程序-api</artifactId>
     <>3.1.0</>
   </依赖>
 
    <依赖>
   <groupId>组织.弹簧框架</groupId>
   <artifactId>弹簧-核心</artifactId>
   <>${弹簧.}</>
  </依赖>
  <依赖>
   <groupId>组织.弹簧框架</groupId>
   <artifactId>弹簧-网路mvc</artifactId>
   <>${弹簧.}</>
  </依赖>
  </依存关系>
  <建立>
    <finalName>弹簧MVCHelloWorldExample</finalName>
 
    <外挂程式>
        <插入>
        <groupId>组织.阿帕奇.专家.外挂程式</groupId>
        <artifactId>专家-编译器-插入</artifactId>
        <>3.1</>
        <组态>
            <资源>${杰克.}</资源>
            <目标>${杰克.}</目标>
        </组态>
    </插入>
    </外挂程式>
 
  </建立>
   <属性>
  <弹簧.>4.2.1。发布</弹簧.>
  <杰克.>1.7</杰克.>
   </属性>
</项目>
 

创建控制器 

创建一个名为“org.arpit.java2blog.springmvc.controller”
创建一个名为的控制器类 “HelloWorldController.java”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
组织.Arpit.爪哇2blog.弹簧.控制者;
 
进口 组织.弹簧框架.刻板印象.控制者;
进口 组织.弹簧框架.网路.捆绑.注解.请求映射;
进口 组织.弹簧框架.网路.小服务程序.模型和视图;
 
@控制者
上市 你好世界Controller {
 
@请求映射(“/你好世界”)
上市 模型和视图 您好() {
      返回 模型和视图(“您好”);
}
}
 

创建拦截器 

创建名为SampleInterceptor.java的拦截器类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
组织.Arpit.爪哇2blog.弹簧.拦截器;
 
进口 爪哇x.小服务程序.http.HttpServletRequest;
进口 爪哇x.小服务程序.http.HttpServletResponse;
 
进口 组织.弹簧框架.网路.小服务程序.模型和视图;
进口 组织.弹簧框架.网路.小服务程序.处理程序.HandlerInterceptorAdapter;
 
上市 样品拦截器 延伸 HandlerInterceptorAdapter {
 
@覆写
上市 布尔值 preHandle(HttpServletRequest 请求, HttpServletResponse 响应, 目的 处理程序)
   抛出 例外 {
  请求.setAttribute(“ blogName”, “ 爪哇2blog”);
  返回 真正;
}
 
@覆写
上市 虚空 postHandle(HttpServletRequest 请求, HttpServletResponse 响应, 目的 处理程序,
   模型和视图 模型和视图) 抛出 例外 {
   blogName = () 请求.getAttribute(“ blogName”);
  //我们在这里添加了一些modelAndView对象,并将在view jsp中使用它。
  模型和视图.addObject(“ blogName”,blogName);
  模型和视图.addObject(“ authorName”, “阿尔伯特”);
}
 
@覆写
上市 虚空 完成后(HttpServletRequest 请求, HttpServletResponse 响应, 目的 处理程序, 例外 )
   抛出 例外 {
   blogName = () 请求.getAttribute(“ blogName”);
   authorName = () 请求.getAttribute(“ authorName”);
  系统..打印(“请求网址::” + 请求.getRequestURL().至String());
  系统..打印(“博客名称:” + blogName);
  系统..打印(“作者姓名:” + authorName);
}
}
 

在这里,我在preHandle方法中设置了request属性(blogName),而在postHandle方法中得到了它。我们还在modelAndView中添加了两个对象,这些对象将在jsp中使用。

建立检视

修改 index.jsp as以下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<%@ 语言=“ 爪哇” 内容类型=“文本/ html; charset = UTF-8”
    页Encoding=“ UTF-8”%>
<!DOCTYPE html 上市 “-// W3C // DTD HTML 4.01 Transitional // EN” "http://www.w3.org/TR/html4/loose.dtd">
<html>
<>
<http-当量=“内容类型” 内容=“文本/ html; charset = UTF-8”>
<标题>你好世界</标题>
</>
<身体>
<a href=“ 您好world.html”>请点击 这里 您好 信息 </a>
</身体>
</html>
 

创造 您好.jsp in /WEB-INF / 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<%@ 语言=“ 爪哇” 内容类型=“文本/ html; charset = UTF-8”
    页Encoding=“ UTF-8”%>
<!DOCTYPE html 上市 “-// W3C // DTD HTML 4.01 Transitional // EN” "http://www.w3.org/TR/html4/loose.dtd">
<html>
<>
<http-当量=“内容类型” 内容=“文本/ html; charset = UTF-8”>
<标题>您好</标题>
</>
<身体>
这个 书面 通过 ${authorName} ${blogName}
</身体>
</html>
 

配置Spring MVC应用程序

 现在我们需要配置两个文件“web.xml” and “springmvc-dispatcher-servlet.xml”对于Spring MVC,我们需要在web.xml中声明DispatcherServlet。初始化DisplatcherServlet时,spring尝试从[servlet 名称] -servet.xml文件加载应用程序上下文。因此,在这种情况下,将尝试加载springmvc-dispatcher-servlet.xml。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<网路-应用程式 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:si="http://www.w3.org/2001/XMLSchema-instance"
    si:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    ="3.0">
    <显示-名称>原型 已建立 网页 应用</显示-名称>
     <欢迎-文件-清单>
    <欢迎-文件>指数.jsp</欢迎-文件>
  </欢迎-文件-清单>
    <小服务程序>
  <小服务程序-名称>弹簧-调度员</小服务程序-名称>
  <小服务程序->
   组织.弹簧框架.网路.小服务程序.分派器
        </小服务程序->
  <加载--启动>1</加载--启动>
</小服务程序>
 
<小服务程序-映射>
  <小服务程序-名称>弹簧-调度员</小服务程序-名称>
  <网址-模式>/</网址-模式>
</小服务程序-映射>
    </网路-应用程式>
 

创建名为“springmvc-dispatcher-servlet.xml” in / WEB-INF folder as below.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<豆子:豆子 xmlns="http://www.springframework.org/schema/mvc"
xmlns:si="http://www.w3.org/2001/XMLSchema-instance" xmlns:豆子="http://www.springframework.org/schema/beans"
xmlns:语境="http://www.springframework.org/schema/context"
si:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.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.xsd">
 
<语境:零件-扫描 基础-=“ 组织.arpit.java2blog.springmvc.controller” />
<豆子:=“ 组织.springframework.web.servlet.view.InternalResourceViewResolver”>
  <豆子:属性 名称=“字首” =“ / WEB-INF /”/>
  <豆子:属性 名称=“后缀” =“ .jsp” />  
</豆子:>
<拦截器>
  <拦截器>
   <映射 路径=“ /helloworld.html” />
   <豆子:
    =“ 组织.arpit.java2blog.springmvc.interceptor.SampleInterceptor”></豆子:>
  </拦截器>
</拦截器>
</豆子:豆子>
 

创建名为“springmvc-dispatcher-servlet.xml” in / WEB-INF folder as below.

1
2
3
4
5
6
7
 
xmlns:si="http://www.w3.org/2001/XMLSchema-instance" xmlns:豆子="http://www.springframework.org/schema/beans"
xmlns:语境="http://www.springframework.org/schema/context"
si:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.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.xsd">
 

在这里,我们在上述文件中声明了interceptor(SampleInterceptor),它将拦截特定的URL(/helloworld.html)。

It ‘是时候进行Maven构建了。

Right click 上 项目 -> Run as -> 马文 建立
提供目标作为全新安装(如下所示)并单击运行

运行应用程序

Right click 上 项目 -> run as -> run 上 server
选择Apache 至mcat,然后单击完成

 您将在下面的屏幕上看到:



当您点击上方链接时,您将获得以下屏幕

我们用Spring MVC拦截器示例完成了工作。如果您仍然遇到任何问题,请发表评论。

下载
点击开始20KB .zip

导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 7月10日

    春季MVC教程

    在这篇文章中,我们将学习Spring MVC教程。 春季MVC框架是一个健壮的模型视图控制器框架,可帮助我们开发松耦合的Web应用程序。它借助MVC架构分离Web应用程序的不同方面。模型:模型携带应用程序数据。它通常以[…]

  • 9月13日

    春季MVC + 弹簧数据 + 冬眠 + 的MySQL示例

    在这篇文章中,我们将看到Spring MVC,Spring Data,hibernate和mysql CRUD示例的集成。在上一教程中我们已经看到了Spring MVC,hibernate和mysql示例。 春季数据 JPA提供了CRUD API,因此您不必’不必编写样板代码。您只需要创建存储库接口,spring就会提供[…]

  • 8月26日

    使用@ControllerAdvice示例的Spring MVC异常处理

    在这篇文章中,我们将看到如何使用@ControllerAdvice在Spring MVC中进行异常处理。在上一篇文章中,我们已经看到了如何使用@ExceptionHandler来处理异常,但是@ExceptionHandler只能应用于一个控制器,但是如果要全局(即跨多个控制器)处理异常怎么办?您可以使用@ControllerAdvice处理[…]

  • 8月26日

    使用@ExceptionHandler示例的Spring MVC异常处理

    在这篇文章中,我们将看到如何使用@ExceptionalHandler在Spring MVC中进行异常处理。发生异常时,可以使用@ExceptionHandler重定向到错误视图。让我们借助示例来理解这一点:源代码:下载单击以开始20KB .zip 1)在Eclipse中使用maven创建一个动态Web项目“SpringMVCExceptionalHandlerExample”Maven依赖项2)…]

  • 8月25日

    春季MVC休眠MySQL CRUD示例

    在这篇文章中,我们将看到Spring MVC,hibernate和mysql CRUD示例的集成。在上一教程中,我们已经看到了Spring Rest与hibernate的集成。 春季MVC教程Spring MVC你好世界示例Spring MVC休眠MySQL示例Spring MVC 春季数据示例Spring MVC Interceptor示例Spring MVC angularjs […]

  • 8月23日

    春季MVC + log4j示例

    在本文中,我们将看到如何将Spring MVC与log4j集成。 春季MVC教程:Spring MVC 您好世界示例Spring MVC休眠MySQL示例Spring MVC拦截器示例Spring MVC angularjs示例Spring MVC @RequestMapping示例Spring组件,服务,存储库和控制器示例Spring MVC @ModelAttribute注释示例Spring MVC @RestController注释示例Spring […]

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客