查看: 8351|回复: 6

[精华] Spring Security 3.1.2 + Spring Framework 3.1.2+使用Annotation实战指南

[复制链接]
论坛徽章:
63
2010广州亚运会纪念徽章:台球
日期:2010-10-18 12:43:48茶鸡蛋
日期:2013-01-09 10:59:002013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:帆船
日期:2013-04-02 17:07:052013年新春福章
日期:2013-04-08 17:42:48奥运纪念徽章
日期:2013-07-18 13:55:12优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11
发表于 2012-9-19 21:12 | 显示全部楼层 |阅读模式
本帖最后由 chszs 于 2012-9-19 21:25 编辑

《Spring Security 3.1.2 + Spring Framework 3.1.2+使用Annotation实战指南》

版权声明:本文属于原创,版权归作者chszs所有,使用源码无任何限制,但转载文章需经作者同意。

一、准备工作
预准备的工具及软件有:
1. Eclipse IDE:我使用Eclipse JEE 3.7版,即eclipse-jee-indigo-SR2-win32-x86_64.zip
2. JDK 7:我使用JDK 7u4版,即jdk-7u4-windows-x64.exe
3. Spring Framework:我使用Spring Framework 3.1.2版,即spring-framework-3.1.2.RELEASE-with-docs.zip
4. Spring Security:我使用Spring Security 3.1.2版,即spring-security-3.1.2.RELEASE-dist
5. 其它JAR包:jstl-1.2.jar,commons-logging-1.1.1.jar,cglib-nodep-2.2.jar
6. Tomcat应用服务器:我使用Tomcat 7.0.29版,即apache-tomcat-7.0.29-windows-x64.zip


说明:
1. Eclipse IDE和JDK 7的版本可以更高一些,不影响开发和调试。
2. Eclipse一定要下载JEE版。
3. Eclipse、JDK和Tomcat的安装过程省略。
4. 我的操作系统是64位版本,故开发环境对应的工具都是下载64位的安装包。


二、新建项目
在Eclipse环境下新建Dynamic Web Project。
项目名为:SpringSecurityDemo,
Target runtime选择New Runtime,然后选择Apache Tomcat v7.0,并设置好Tomcat的安装目录。

p1.jpg
连续点击两次Next,在“Generate web.xml deployment descriptor”处打勾选择,并点击Finish。
p2.jpg

三、添加库文件
把下列JAR文件添加到项目的WebContent\WEB-INF\lib目录下。

p3.jpg

四、业务层开发
1. 在项目src处,新建com.ch.configuration包,并新建WebConfig.java类,内容如下:
  1. package com.ch.configuration;

  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.ComponentScan;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.context.annotation.ImportResource;
  6. import org.springframework.web.servlet.ViewResolver;
  7. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  8. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  9. import org.springframework.web.servlet.view.InternalResourceViewResolver;

  10. @EnableWebMvc
  11. @Configuration
  12. @ComponentScan(basePackages = "com.jverstry")
  13. @ImportResource("/WEB-INF/MyServlet-security.xml")
  14. public class WebConfig extends WebMvcConfigurerAdapter {

  15.         @Bean
  16.         public ViewResolver getViewResolver() {
  17.                 InternalResourceViewResolver resolver = new InternalResourceViewResolver();
  18.                 resolver.setPrefix("WEB-INF/pages/");
  19.                 resolver.setSuffix(".jsp");

  20.                 return resolver;
  21.         }

  22. }
复制代码
2. 新建com.ch.configuration.controller包,并新建MyController.java类,内容如下:
  1. package com.ch.configuration.controller;

  2. import com.ch.configuration.service.MyService;

  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.ui.Model;
  6. import org.springframework.web.bind.annotation.RequestMapping;

  7. @Controller
  8. public class MyController {

  9.         private MyService myService;

  10.         @Autowired
  11.         public void setMyService(MyService myService) {
  12.                 this.myService = myService;
  13.         }

  14.         @RequestMapping(value = "/")
  15.         public String home() {
  16.                 return "index";
  17.         }

  18.         @RequestMapping(value = "/getTime")
  19.         public String helloWorld(Model model) {
  20.                 model.addAttribute("TimeIs", myService.getCurrentTimeInMilliseconds());
  21.                 return "getTime";
  22.         }

  23. }
复制代码
3. 新建com.ch.configuration.service包,并新建MyService.java接口类,内容如下:
  1. package com.ch.configuration.service;

  2. public interface MyService {
  3.         long getCurrentTimeInMilliseconds();
  4. }
复制代码
4. 在com.ch.configuration.service包新建MyServiceImpl.java类,内容如下:
  1. package com.ch.configuration.service;

  2. public class MyServiceImpl implements MyService {

  3.         @Override
  4.         public long getCurrentTimeInMilliseconds() {
  5.                 return System.currentTimeMillis();
  6.         }

  7. }
复制代码
5. 在com.ch.configuration.service包新建MyServicesConfiguration.java类,内容如下:
  1. package com.ch.configuration.service;

  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;

  4. @Configuration
  5. public class MyServicesConfiguration {

  6.         private MyService myService = new MyServiceImpl();

  7.         @Bean
  8.         public MyService getMyService() {
  9.                 return myService;
  10.         }

  11. }
复制代码
五、前台页面层开发
1. 在WebContent\WEB-INF目录新建pages文件夹,接着在pages目录下新建getTime.jsp文件,内容如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.         pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>Get Time !!!</title>
  9. </head>
  10. <body>
  11.         The time in milliseconds is:
  12.         <c:out value="${TimeIs}" />
  13.         !
  14. </body>
  15. </html>
复制代码
2. 在pages目录下新建index.jsp文件,内容如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.         pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Welcome !!!</title>
  8. </head>
  9. <body>
  10.         <h1>Welcome To Spring MVC With Annotations !!!</h1>
  11.         <h1>(with login...)</h1>
  12. </body>
  13. </html>
复制代码
3. 修改WEB-INF下的web.xml文件,内容如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.         xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  4.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  5.         id="WebApp_ID" version="3.0">
  6.         <display-name>SpringSecurityDemo</display-name>
  7.         <context-param>
  8.                 <param-name>contextClass</param-name>
  9.                 <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
  10.         </context-param>

  11.         <context-param>
  12.                 <param-name>contextConfigLocation</param-name>
  13.                 <param-value>com.ch.configuration</param-value>
  14.         </context-param>

  15.         <filter>
  16.                 <filter-name>springSecurityFilterChain</filter-name>
  17.                 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  18.         </filter>

  19.         <filter-mapping>
  20.                 <filter-name>springSecurityFilterChain</filter-name>
  21.                 <url-pattern>/*</url-pattern>
  22.         </filter-mapping>

  23.         <listener>
  24.                 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  25.         </listener>

  26.         <servlet>
  27.                 <servlet-name>MyServlet</servlet-name>
  28.                 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  29.                 <init-param>
  30.                         <param-name>contextConfigLocation</param-name>
  31.                         <param-value></param-value>
  32.                 </init-param>
  33.                 <load-on-startup>1</load-on-startup>
  34.         </servlet>

  35.         <servlet-mapping>
  36.                 <servlet-name>MyServlet</servlet-name>
  37.                 <url-pattern>/</url-pattern>
  38.         </servlet-mapping>

  39.         <welcome-file-list>
  40.                 <welcome-file></welcome-file>
  41.         </welcome-file-list>
  42. </web-app>
复制代码
4. 在WEB-INF下新建MyServlet-security.xml文件,内容如下:
  1. <beans:beans xmlns="http://www.springframework.org/schema/security"
  2.         xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.         xsi:schemaLocation="http://www.springframework.org/schema/beans
  4.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  5.     http://www.springframework.org/schema/security
  6.     http://www.springframework.org/schema/security/spring-security-3.1.xsd">

  7.         <http auto-config="true">
  8.                 <intercept-url pattern="/*" access="ROLE_USER" />
  9.         </http>

  10.         <authentication-manager alias="authenticationManager">
  11.                 <authentication-provider>
  12.                         <user-service>
  13.                                 <user authorities="ROLE_USER" name="guest" password="guest" />
  14.                         </user-service>
  15.                 </authentication-provider>
  16.         </authentication-manager>

  17. </beans:beans>
复制代码
至此,Demo项目的开发已经完成。项目的整体结构图如图所示:
p4-1.jpg

六、部署和运行
1. 在Eclipse选择项目SpringSecurityDemo,右键选择“Run As”,再选择“Run on Server”,选择Apache Tomcat v7.0,Eclipse IDE自动完成部署并运行。
在浏览器上输入地址:http://localhost:8080/SpringSecurityDemo/
显示如下:
p4.jpg

注:地址自动被重定向到http://localhost:8080/SpringSecurityDemo/spring_security_login
User/Password输入guest/guest,显示:
p5.jpg

如果输入错误,显示:
p6.jpg

OK!本文就到这里,对于Spring的注释,可以参考官方文档加以理解。
论坛徽章:
63
2010广州亚运会纪念徽章:台球
日期:2010-10-18 12:43:48茶鸡蛋
日期:2013-01-09 10:59:002013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:帆船
日期:2013-04-02 17:07:052013年新春福章
日期:2013-04-08 17:42:48奥运纪念徽章
日期:2013-07-18 13:55:12优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11
 楼主| 发表于 2012-9-19 21:26 | 显示全部楼层
抽空写了篇长文,供大家参考。

使用道具 举报

回复
认证徽章
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2012-9-20 14:15 | 显示全部楼层
入门级的精品文章。

使用道具 举报

回复
认证徽章
论坛徽章:
65
双鱼座
日期:2016-01-05 20:12:37咸鸭蛋
日期:2013-06-14 15:32:57迷宫蛋
日期:2013-05-12 08:44:37IT宝贝
日期:2013-04-23 10:39:15蛋疼蛋
日期:2013-04-15 13:49:052013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2012-12-17 11:07:42鲜花蛋
日期:2012-12-12 09:00:39ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42
发表于 2012-9-21 08:45 | 显示全部楼层
good job.

使用道具 举报

回复
论坛徽章:
0
发表于 2012-9-21 17:46 | 显示全部楼层
xiaosanaiq 发表于 2012-9-21 08:45
good job.

使用道具 举报

回复
论坛徽章:
93
生肖徽章2007版:羊
日期:2014-03-13 22:28:49生肖徽章2007版:羊
日期:2014-03-13 22:28:50生肖徽章2007版:羊
日期:2014-03-13 22:28:50生肖徽章2007版:羊
日期:2014-03-13 22:28:50生肖徽章2007版:羊
日期:2014-03-13 22:28:50生肖徽章2007版:羊
日期:2014-03-13 22:28:49金牛座
日期:2015-11-06 13:21:41奥运会纪念徽章:艺术体操
日期:2014-03-13 22:28:49奥运会纪念徽章:艺术体操
日期:2014-03-13 22:28:49奥运会纪念徽章:艺术体操
日期:2014-03-13 22:28:49
发表于 2012-10-17 11:13 | 显示全部楼层
支持,谢谢楼主分享

使用道具 举报

回复
论坛徽章:
0
发表于 2013-1-4 13:36 | 显示全部楼层
Spring Security 一直想了解下这个框架 mark 下

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表