`
游其是你
  • 浏览: 12796 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring+Spring Security+Maven 实现的一个Hello World例子

阅读更多

Spring Security允许开发人员轻松地将安全功能集成到J2EE Web应用程序中,它通过Servlet过滤器实现“用户自定义”安全检查。

在本教程中,我们将向您展示如何在Spring MVC中集成Spring Security 3.0并安全访问。在集成成功后,当我们查看页面的内容时用户需要先输入正确的“用户名”和“密码”。

本教程的开发环境为:

1.Spring 3.0.5.RELEASE

2.Spring Security 3.0.5.RELEASE

3.Eclipse 3.6

4.JDK 1.6

5.Maven 3

注意:Spring Security 3.0 至少需要java 5.0或更高的运行环境。

1.目录结构

本教程的最终目录如下所示:

2.Spring Security依赖关系

为了正常运行 Spring security 3.0, 你需要加入 “spring-security-core.jar“, “spring-security-web.jar” and “spring-security-config.jar“. 在Maven库中你需要加入Spring配置库

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
<properties>
        <spring.version>3.0.5.RELEASE</spring.version>
    </properties>
  
    <dependencies>
  
        <!-- Spring 3 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <!-- Spring Security -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
    </dependencies>
  
</project>

3.Spring MVC Web应用程序

本教程是一个简单的Spring MVC 应用程序,即访问“/welcome”跳转到“hello.jsp”页面,稍后用Spring Security安全访问这个链接。

HelloController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.mkyong.common.controller;
  
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
  
@Controller
@RequestMapping("/welcome")
public class HelloController {
  
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
  
        model.addAttribute("message""Spring Security Hello World");
        return "hello";
  
    }
  
}

hello.jsp

1
2
3
4
5
<html>
<body>
    <h1>Message : ${message}</h1>
</body>
</html>

mvc-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
    xsi:schemaLocation="
  
    <context:component-scan base-package="com.mkyong.common.controller" />
  
    <bean
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix">
        <value>/WEB-INF/pages/</value>
      </property>
      <property name="suffix">
        <value>.jsp</value>
      </property>
    </bean>
  
</beans>

4.Spring Secuity:用户验证

创建一个单独的Spring配置文件去定义Spring Security相关的东西。它要实现的是:只有用户输入了正确的用户名“mkyong”和密码“123456”才可以访问“/welcome” 。

下面的Spring配置文件你应该明白是什么意思。

spring-security.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    xsi:schemaLocation="http://www.springframework.org/schema/beans
  
    <http auto-config="true">
        <intercept-url pattern="/welcome*" access="ROLE_USER" />
    </http>
  
    <authentication-manager>
      <authentication-provider>
        <user-service>
        <user name="mkyong" password="123456" authorities="ROLE_USER" />
        </user-service>
      </authentication-provider>
    </authentication-manager>
  
</beans:beans>

5.整合Spring Security

想要在Web应用程序中整合Spring Security,只需加入“DelegatingFilterProxy”作为Servlet过滤器拦截到来的请求即可。

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
38
39
40
41
42
43
44
45
46
47
48
49
<web-app id="WebApp_ID" version="2.4"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  
    <display-name>Spring MVC Application</display-name>
  
    <!-- Spring MVC -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
                    org.springframework.web.servlet.DispatcherServlet
                </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  
    <listener>
        <listener-class>
                  org.springframework.web.context.ContextLoaderListener
                </listener-class>
    </listener>
  
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/mvc-dispatcher-servlet.xml,
            /WEB-INF/spring-security.xml
        </param-value>
    </context-param>
  
    <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>
                  org.springframework.web.filter.DelegatingFilterProxy
                </filter-class>
    </filter>
  
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  
</web-app>

6.Demo

就是以上这些配置了,登陆页面在哪儿呢?不要着急,如果你不知道怎么创建登陆页面,我们将会创建一个简单的登陆页面去验证。

(登陆验证页面请访问:Spring Security实现的表单登陆的例子

当我们访问“http://localhost:8080/SpringMVC/welcome”时,Spring Security 将会自动拦截到“http://localhost:8080/SpringMVC/spring_security_login”登陆页面验证身份。

http://localhost:8080/SpringMVC/spring_security_login页面如下所示:

如果输错了用户名和密码则页面会显示错误的消息,如下所示:

http://localhost:8080/SpringMVC/spring_security_login?login_error

如果我们输对了用户名和密码,Spring Security则会跳转到欢迎页面,如下所示:

http://localhost:8080/SpringMVC/welcome

本文为原创文章,转载请注明出处,首发于http://www.it161.com/article/javaDetail?articleid=140107223703

更多IT文章,请访问http://www.it161.com/

分享到:
评论

相关推荐

    spring-security-helloworld

    【标题】"spring-security-helloworld" 是一个基于Spring Security框架的简单示例项目,它用于初学者理解并实践Spring Security的基础用法。Spring Security是一个强大的安全框架,为Java应用程序提供了全面的安全...

    Spring-Security-3-HelloWorld 实例简单代码

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于Java应用程序。在这个"Spring-Security-3-HelloWorld"实例中,我们将探讨如何在Spring MVC应用中集成Spring Security的基本配置和用法。 ...

    spring security (-) helloWorld

    本篇文章将基于“spring security - helloWorld”项目,探讨Spring Security的基本概念和实现步骤。 一、Spring Security简介 Spring Security的核心功能包括身份验证、授权和会话管理。它提供了安全的RESTful服务...

    基于Maven的SpringBoot项目之Helloworld

    在本文中,我们将深入探讨如何基于Maven构建一个SpringBoot项目,并通过解决常见的导入问题来实现"Hello, World!"的应用。SpringBoot是一个流行的Java框架,它简化了Spring应用程序的开发,而Maven则是一个强大的...

    SpringBoot之HelloWorld的Maven项目(Eclipse)

    **SpringBoot之HelloWorld的Maven项目(Eclipse)** SpringBoot是由Pivotal团队开发的一个框架,旨在简化Spring应用程序的初始搭建以及开发过程。它集成了大量的常用库,如数据访问、安全、Web等,使得开发者可以...

    spring-boot-helloworld

    在“spring-boot-helloworld”项目中,我们看到这是一个入门级的Spring Boot应用,虽然规模不大,但包含了Spring Boot的核心特性,为初学者提供了很好的学习模板。下面我们将深入探讨其中的关键知识点。 1. **...

    JavaEE开发的颠覆者+Spring+Boot实战前三章源码

    3. **Hello World示例**:通过编写一个简单的Controller,返回"Hello World",理解Spring MVC的工作原理。 4. **Maven/Gradle构建**:学习如何使用Maven或Gradle构建Spring Boot项目,添加起步依赖,管理项目依赖。...

    maven + springmvc 入门实例

    1. **创建SpringMVC项目**: 使用Maven创建一个新的Maven项目,在`pom.xml`中添加SpringMVC相关的依赖,如`spring-webmvc`、`spring-context`、`jstl`等。 2. **配置SpringMVC**: 创建`web.xml`配置文件,配置...

    spring security3.2下载、配置

    security3.2最新版本配置,资源里面有4个小项目,都是利用maven搭建的,先在mysql中新建一个security空数据库,不要建表,然后只要在myeclipse导入,运行maven install,在连网状态下就会自动下载jar包了,无需再去...

    Maven+Sprint MVC简单入门例子

    以上是 Maven 和 Spring MVC 简单入门的例子,通过这个例子,你可以了解如何配置 Maven 项目、编写简单的 Spring MVC 控制器,并将它们结合在一起创建一个 Web 应用。随着学习的深入,你可以掌握更多高级特性和最佳...

    SpringMVC HelloWorld程序

    Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、模块化且高度解耦的Web应用程序。本教程将引导你逐步创建一个简单的“Hello World”程序,让你对Spring MVC有初步的理解。 首先,我们需要理解Spring ...

    HelloWorld.zip

    【HelloWorld.zip】是一个入门级的Spring开发项目压缩包,其中包含了使用JavaSpring框架构建的基础应用。这个项目旨在帮助初学者理解Spring的核心概念,并提供了一个实际的代码示例。使用JDK版本为12,意味着它遵循...

    spring boot入门例子

    6. **Helloworld 示例**:在Spring Boot中,创建一个简单的Hello World应用,只需要定义一个带有`@RestController`注解的控制器类,以及一个返回字符串的方法,比如`@GetMapping("/") public String hello() { ...

    springboot的helloworld入门程序

    这个"springboot的helloworld入门程序"是初学者理解并掌握SpringBoot基础的一个绝佳起点。下面我们将深入探讨SpringBoot的基本概念、核心特性以及如何创建一个简单的"Hello, World!"程序。 1. **SpringBoot简介** ...

    SpringSecurity安全权限管理手册

    第一章的"HelloWorld"示例通常是一个简单的入门教程,旨在演示如何在Spring Security中设置基本的权限控制。在这个例子中,可能会涉及到定义用户、角色和权限,以及如何拦截和处理未授权的访问请求。通过配置URL过滤...

    Spring2.0(一)第一个Spring程序、IoC的应用

    3. **编写Java类**:在上述配置中,我们定义了一个`HelloWorld`类,需要实现相应的方法: ```java package com.example; public class HelloWorld { private String message; public void setMessage...

    【42】使用dubbo、spring-boot等技术实现互联网后台服务项目架构视频教程 .txt

    本教程旨在通过具体的案例介绍如何利用Dubbo、Spring Boot等技术实现一个完整的互联网后台服务项目架构。 #### 二、Dubbo简介 ##### 1. Dubbo是什么? Apache Dubbo(以下简称“Dubbo”)是一款高性能、轻量级的...

    spring-security-reference-4.2.2.pdf

    Spring Security是为基于Spring框架的应用提供安全性解决方案的一个框架。Spring Security 4.2.2版的使用手册详细介绍了这个版本的相关功能、配置方法、使用示例等。手册从基础概念出发,逐步深入到具体技术实现,...

    Spring-Security安全权限管理手册

    在示例的 "一个简单的 HelloWorld" 中,Spring Security 的配置可能涉及以下几个关键组件: 1. **Filter Security Interceptor**: 这是Spring Security的核心组件,它拦截HTTP请求,根据配置的访问控制规则决定是否...

    xfire的一个helloworld

    标题 "xfire的一个helloworld" 暗示我们即将探讨的是关于XFire框架的一个简单示例应用。XFire是一款早期的Java SOAP服务框架,后来发展成为Apache CXF的一部分。这个"Hello World"程序通常用于介绍如何使用XFire来...

Global site tag (gtag.js) - Google Analytics