爪哇 2博客
 爪哇 2博客

弹簧 休息+春季安全示例

在本文中,我们将在Spring Rest示例中应用Spring Security。

网页 服务教程:

以下是使用Spring Security创建一个简单的Spring Restful 网页 服务的步骤,该服务将返回json。
1) 创建一个 在Eclipse中使用Maven的动态Web项目.

2) We need to 加 春季证券y和类路径中的Jackson json实用程序。

1
2
3
4
5
6
7
 
<依赖>
            <groupId> com .fastxml.杰克逊. 核心 </groupId>
            <artifactId>杰克逊-数据绑定</artifactId>
             <>2.4.1</>
</依赖>
 

弹簧将自动将Jackson2JsonMessageConverter加载到其应用程序上下文中。每当您使用接受的标头=”接受= 应用程式 lication / json”,然后Jackson2JsonMessageConverter进入图片并将资源转换为json格式。

现在,按如下所示更改pom.xml:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 
<项目 XML文件 ns ="http://maven.apache.org/POM/4.0.0" XML文件 ns : 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>弹簧RestSpringSecurityExample</artifactId>
<打包> 战争 </打包>
<>0.0.1-快照</>
< 名称 >弹簧RestSpringSecurityExample 马文 网络应用</ 名称 >
< 网址 > 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>弹簧- 网路 多媒体 </artifactId>
   <>${弹簧.}</>
  </依赖>
  <依赖>
   <groupId> com .fastxml.杰克逊. 核心 </groupId>
   <artifactId>杰克逊-数据绑定</artifactId>
   <>2.4.1</>
  </依赖>
  <依赖>
   <groupId> 组织 .弹簧框架.安全</groupId>
   <artifactId>弹簧-安全- 核心 </artifactId>
   <>${安全.}</>
  </依赖>
 
  <依赖>
   <groupId> 组织 .弹簧框架.安全</groupId>
   <artifactId>弹簧-安全- 网路 </artifactId>
   <>${安全.}</>
  </依赖>
 
  <依赖>
   <groupId> 组织 .弹簧框架.安全</groupId>
   <artifactId>弹簧-安全-配置</artifactId>
   <>${安全.}</>
  </依赖>
</依存关系>
< 建立 >
  <finalName>弹簧RestSpringSecurityExample</finalName>
 
  <外挂程式>
   <插入>
    <groupId> 组织 .阿帕奇. 专家 .外挂程式</groupId>
    <artifactId> 专家 -编译器-插入</artifactId>
    <>3.1</>
    <组态>
     <资源>${ 杰克 .}</资源>
     <目标 >${ 杰克 .}</目标 >
    </组态>
   </插入>
    <插入>
    <groupId> 组织 .阿帕奇. 专家 .外挂程式</groupId>
    <artifactId> 专家 - 战争 -插入</artifactId>
    <组态>
     <failOnMissingWebXml></failOnMissingWebXml>
    </组态>
   </插入>
  </外挂程式>
 
</ 建立 >
<属性>
  <弹簧.>4.2.1。发布</弹簧.>
  <安全.>4.0.3发布</安全.>
  < 杰克 .>1.7</ 杰克 .>
</属性>
 
</项目>
 

3) 如下更改web.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
 
<? XML文件 ="1.0" 编码方式=“ UTF-8”?>
< 网路 - 应用程式 XML文件 ns : si ="http://www.w3.org/2001/XMLSchema-instance" XML文件 ns ="http://java.sun.com/xml/ns/javaee" 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</ 加载 --启动>
  </小服务程序>
  <小服务程序-映射>
    <小服务程序- 名称 >弹簧座</小服务程序- 名称 >
    < 网址 -模式>/</ 网址 -模式>
  </小服务程序-映射>
  <语境- 参数 >
    < 参数 - 名称 >语境ConfigLocation</ 参数 - 名称 >
    < 参数 ->
   / 网页 - INF /弹簧-安全. XML文件
  </ 参数 ->
  </语境- 参数 >
  <听众>
    <听众-> 组织 .弹簧框架. 网路 .语境.ContextLoaderListener</听众->
  </听众>
  <过滤>
    <过滤- 名称 >弹簧SecurityFilterChain</过滤- 名称 >
    <过滤-> 组织 .弹簧框架. 网路 .过滤.DelegatingFilterProxy</过滤->
  </过滤>
  <过滤-映射>
    <过滤- 名称 >弹簧SecurityFilterChain</过滤- 名称 >
    < 网址 -模式>/*</ 网址 -模式>
  </过滤-映射>
</ 网路 - 应用程式 >
 

4) 在/ 网页 -INF /文件夹中创建一个名为springrest-servlet.xml的xml文件。
如果您想使用不同的弹簧包来搜索控制器,请更改context:component-scan。请参考 春季MVC Hello World示例 了解更多。

1
2
3
4
5
6
7
8
9
10
11
12
 
< 豆子 XML文件 ns ="http://www.springframework.org/schema/beans"
XML文件 ns :语境="http://www.springframework.org/schema/context"
XML文件 ns : 多媒体 ="http://www.springframework.org/schema/mvc" XML文件 ns : si ="http://www.w3.org/2001/XMLSchema-instance"
si :schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
 
< 多媒体 :注解-驱动的/>
<语境:零件- 扫描 基础 -=“ 组织 .arpit.java2blog.controller” />
 
</ 豆子 >
 

配置Spring安全性:

如下所示在WEB-INF文件夹中创建一个名为spring-security.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
 
< 豆子 : 豆子 XML文件 ns ="http://www.springframework.org/schema/security"
     XML文件 ns : 豆子 ="http://www.springframework.org/schema/beans"
     XML文件 ns : si ="http://www.w3.org/2001/XMLSchema-instance"
     si :schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-4.0.xsd">
 
    < http 汽车 -配置= “真正” 利用 -表达= “真正” >
      <截距- 网址 模式=“ /资源/ **” 访问=“ permitAll” />
 
       <截距- 网址 模式=“/计数*” 访问=“ hasRole('ROLE_ADMIN')” />
<登出 登出-成功- 网址 = “ /” 登出- 网址 =“ / j_spring_security_logout” />
   < csrf 残障人士= “真正” />
    </ http >
 
    <认证方式-经理>
      <认证方式-提供者>
        < 用户 -服务>
            < 用户 名称 =“ 爪哇 2blog” 密码=“ 爪哇 123” 当局=“ ROLE_ADMIN” />          
        </ 用户 -服务>
      </认证方式-提供者>
    </认证方式-经理>
 
</ 豆子 : 豆子 >
 

您可以阅读有关Spring安全性的更多信息,以更好地了解上述配置。当用户尝试访问国家或国家(地区)/ {id} URL时,他将获得登录表格,并且需要输入正确的凭据(用户名:java2blog和password = 爪哇 123)以访问Spring Rest API。

创建bean类

5) Create a 豆 名称 “Country.java”在org.arpit.java2blog.bean中。

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
 
组织 . Arpit . 爪哇 2blog.;
 
上市 国家{
 
     整型 ID ;
     国家的名字;
 
    上市 国家( 整型 i, 国家的名字) {
        ();
         这个 . ID = i;
         这个 .国家的名字 = 国家的名字;
    }
    上市 整型 getId () {
        返回 ID ;
    }
    上市 虚空 设置名称 ( 整型 ID ) {
         这个 . ID = ID ;
    }
    上市 getCountryName() {
        返回 国家的名字;
    }
    上市 虚空 setCountryName( 国家的名字) {
         这个 .国家的名字 = 国家的名字;
    }
 
}
 

创建控制器

6) 创建一个名为的控制器“CountryController.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
组织 . Arpit . 爪哇 2blog.控制者;
 
进口 爪哇 . 实用程序 .数组列表;
进口 爪哇 . 实用程序 . 清单 ;
 
进口 组织 . Arpit . 爪哇 2blog..国家;
进口 组织 .弹簧框架. 网路 . 捆绑 .注解.路径变量;
进口 组织 .弹簧框架. 网路 . 捆绑 .注解.请求映射;
进口 组织 .弹簧框架. 网路 . 捆绑 .注解.请求方法;
进口 组织 .弹簧框架. 网路 . 捆绑 .注解.RestController;
 
@RestController
上市 国家Controller {
 
    @请求映射( = “ /国家”, 方法 = 请求方法. 得到 ,标头="接受= 应用程式 lication / json")
    上市 清单 getCountries()
    {
         清单 清单 OfCountries = 数组列表();
         清单 OfCountries=createCountryList();
        返回 清单 OfCountries;
    }
 
    @请求映射( = “ /国家/ {id}”, 方法 = 请求方法. 得到 ,标头="接受= 应用程式 lication / json")
    上市 国家 getCountryById(@路径变量 整型 ID )
    {
         清单 清单 OfCountries = 数组列表();
         清单 OfCountries=createCountryList();
 
         对于 (国家 国家: 清单 OfCountries) {
             如果 (国家. getId () == ID )
                返回 国家;
        }
 
        返回 空值 ;
    }
 
    //使用Utiliy方法创建国家/地区列表。
    上市 清单 createCountryList()
    {
        国家 印度国家= 国家(1, “印度”);
        国家 中国国家= 国家(4, “中国”);
        国家 尼泊尔国家= 国家(3, “尼泊尔”);
        国家 不丹国家= 国家(2, “不丹”);
 
         清单 <国家> 清单 OfCountries = 数组列表< gt ;();
         清单 OfCountries.(印度国家);
         清单 OfCountries.(中国国家);
         清单 OfCountries.(尼泊尔国家);
         清单 OfCountries.(不丹国家);
        返回 清单 OfCountries;
    }
}
 

@PathVariable: 用于将URL中的值注入到方法参数中。通过这种方式,您可以在getCountryById方法中注入id。

我们不提供任何视图信息 弹簧座-servlet.xml,就像我们在 春季MVC。 如果我们需要直接从控制器获取资源,则需要按照Spring 3返回@ResponseBody,但对于Spring 4,我们可以使用@RestController。
在Spring 4.0中,我们可以使用@RestController,它是@Controller + @ResponseBody的组合。

1
2
3
 
@RestController = @控制者 + @ResponseBody
 

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

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

运行应用程序

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

当您运行应用程序时,您可能会收到这种警告

1
2
3
4
 
三月 26, 2016 1:45:51 上午 组织 .弹簧框架. 网路 .小服务程序.找不到网页 noHandlerFound
警告: 没有 映射 发现 对于 HTTP 请求 URI [/弹簧RestfulWebServicesWithJSONExample/] 分派器 名称 'SpringRestfulWebServicesWithJSONExample'
 

请忽略以上警告。启动应用程序时,如果未提供起始页,则位于URL下方:
http :// localhost:8080 / 弹簧RestSpringSecurityExample / 

当我们在web.xml中使用DispatcherServlet时,此请求转到spring 分派器,并且未在controller中找到相应的映射,因此收到该警告。

9) 在以下条件下测试您的REST服务:“http:// localhost:8080 / 弹簧RestSpringSecurityExample /国家”.
当您尝试访问上述URL时,您将获得如下登录页面

春季休息安全性登录

如果输入正确的用户名和密码,则会显示以下页面:

春季休息安全性成功登录
我们已经完成了带有Spring Security示例的Spring Restful 网页 服务。如果您仍然遇到任何问题,请发表评论。

如果您在执行上述步骤时遇到404错误,则可能需要执行以下步骤:


1) 如果您在Tomcat启动控制台日志中收到此警告,则可能导致此问题
警告:[SetPropertiesRule] {服务器/服务/引擎/主机/上下文}设置属性‘source’ to ‘org.eclipse.jst.j2ee.server:SpringRestfulWebServicesExample’找不到匹配的属性。
此特定警告基本上意味着Tomcat中的元素’s server.xml包含未知属性源,而Tomcat不包含’不知道如何处理此属性,因此将忽略它​​。
为了解决这个问题,
Remove the 项目 from the server from the Server View. Right click 上 server -> 加 and remove
然后从服务器配置中删除项目。
然后在同一服务器下运行该项目。警告应立即删除
或者,如果警告仍然存在,则
  • 转到服务器视图
  • 双击您的tomcat服务器。它将打开服务器配置。
  • 在服务器选项下,选中“将模块内容发布到单独的XML文件”复选框。
  • 重新启动服务器。这次,您的页面将没有任何问题。
2) 尝试更新Maven项目。
Right click 上 项目 -> 马文 -> update 项目
然后

这应该可以解决您的问题。


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 4月29日

    春季靴 Rest示例

    在本教程中,我们将看到如何使用Spring boot创建Restful 网页 服务。使用Spring 剩余JSON创建Rest API之间没有太多区别,我们之前已经看到过。 春季靴使得Rest API更容易。你不’不必在类路径中提供任何其他JSON依赖关系。春天[…]

  • 8月19日

    弹簧 @RestController示例

    在本文中,我们将看到另一个名为@RestController的重要注释。通常在与Spring Restful 网页 服务实现一起使用时使用。 春季MVC教程:Spring MVC你好世界示例Spring MVC休眠MySQL示例Spring MVC拦截器示例Spring MVC angularjs示例Spring MVC @RequestMapping示例Spring Component,Service,Repository和Controller […]

  • 8月17日

    弹簧 休眠休眠示例

    在上一篇文章中,我们已经看到了Spring Rest的示例。在本文中,我们将扩展相同的示例并将其与hibernate和mysql集成。我们将在CRUD操作中使用以下注释。方法描述Get用于读取资源Post用于创建新资源。它不是 […]

  • 8月08

    春季MVC @RequestMapping注释示例

    我们已经看到了Spring MVC的hello世界示例。 @RequestMapping是在Spring MVC中使用的重要注释之一。 春季MVC教程:Spring MVC你好世界示例Spring MVC休眠MySQL示例Spring MVC拦截器示例Spring MVC angularjs示例Spring MVC @RequestMapping示例Spring Component,Service,Repository和Controller示例Spring MVC @ModelAttribute注解[…]

  • 8月06

    春季MVC angularjs示例

    在本教程中,我们将看到Spring MVC angularjs示例。 春季MVC教程:Spring MVC hello世界示例Spring MVC休眠MySQL示例Spring MVC拦截器示例Spring MVC angularjs示例Spring MVC @RequestMapping示例Spring Component,Service,Repository和Controller示例Spring MVC @ModelAttribute注释示例Spring MVC @RestController注释示例Spring MultiActionController春季示例[…]

  • 八月04

    春季休息ful 网页 服务XML示例

    这篇文章是Web服务教程(第-10部分)的继续。在本教程中,我们将看到Spring Restful 网页 服务xml示例。 网页 服务教程内容:Web服务介绍Web服务访谈问题SOAP 网页 服务介绍RESTful 网页 服务介绍SOAP和REST 网页 服务之间的区别[…]

发表评论 取消回复

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

订阅我们的新闻

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


成为朋友

©2020 爪哇 2博客