zoukankan      html  css  js  c++  java
  • 基于注释的Spring Security实战

    一、准备工作

    预准备的工具及软件有:

    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的安装目录。

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

    三、添加库文件

    把下列JAR文件添加到项目的WebContentWEB-INFlib目录下。

    四、业务层开发

    1. 在项目src处,新建com.ch.configuration包,并新建WebConfig.java类,内容如下:


     
    1. package com.ch.configuration;  
    2.   
    3. import org.springframework.context.annotation.Bean;  
    4. import org.springframework.context.annotation.ComponentScan;  
    5. import org.springframework.context.annotation.Configuration;  
    6. import org.springframework.context.annotation.ImportResource;  
    7. import org.springframework.web.servlet.ViewResolver;  
    8. import org.springframework.web.servlet.config.annotation.EnableWebMvc;  
    9. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;  
    10. import org.springframework.web.servlet.view.InternalResourceViewResolver;  
    11.   
    12. @EnableWebMvc  
    13. @Configuration  
    14. @ComponentScan(basePackages = "com.jverstry")  
    15. @ImportResource("/WEB-INF/MyServlet-security.xml")  
    16. public class WebConfig extends WebMvcConfigurerAdapter {  
    17.   
    18.     @Bean  
    19.     public ViewResolver getViewResolver() {  
    20.         InternalResourceViewResolver resolver = new InternalResourceViewResolver();  
    21.         resolver.setPrefix("WEB-INF/pages/");  
    22.         resolver.setSuffix(".jsp");  
    23.   
    24.         return resolver;  
    25.     }  
    26.   
    27. }  

    2. 新建com.ch.configuration.controller包,并新建MyController.java类,内容如下:


     
    1. package com.ch.configuration.controller;  
    2.   
    3. import com.ch.configuration.service.MyService;  
    4.   
    5. import org.springframework.beans.factory.annotation.Autowired;  
    6. import org.springframework.stereotype.Controller;  
    7. import org.springframework.ui.Model;  
    8. import org.springframework.web.bind.annotation.RequestMapping;  
    9.   
    10. @Controller  
    11. public class MyController {  
    12.   
    13.     private MyService myService;  
    14.   
    15.     @Autowired  
    16.     public void setMyService(MyService myService) {  
    17.         this.myService = myService;  
    18.     }  
    19.   
    20.     @RequestMapping(value = "/")  
    21.     public String home() {  
    22.         return "index";  
    23.     }  
    24.   
    25.     @RequestMapping(value = "/getTime")  
    26.     public String helloWorld(Model model) {  
    27.         model.addAttribute("TimeIs", myService.getCurrentTimeInMilliseconds());  
    28.         return "getTime";  
    29.     }  
    30.   
    31. }  

    3. 新建com.ch.configuration.service包,并新建MyService.java接口类,内容如下:


    1. package com.ch.configuration.service;  
    2.   
    3. public interface MyService {  
    4.     long getCurrentTimeInMilliseconds();  
    5. }  

    4. 在com.ch.configuration.service包新建MyServiceImpl.java类,内容如下:


     
    1. package com.ch.configuration.service;  
    2.   
    3. public class MyServiceImpl implements MyService {  
    4.   
    5.     @Override  
    6.     public long getCurrentTimeInMilliseconds() {  
    7.         return System.currentTimeMillis();  
    8.     }  
    9.   
    10. }  

    5. 在com.ch.configuration.service包新建MyServicesConfiguration.java类,内容如下:

     
    package com.ch.configuration.service;  
      
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Configuration;  
      
    @Configuration  
    public class MyServicesConfiguration {  
      
        private MyService myService = new MyServiceImpl();  
      
        @Bean  
        public MyService getMyService() {  
            return myService;  
        }  
      
    }  

    五、前台页面层开发

    1. 在WebContentWEB-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. >  
    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. >  
    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>SpringSecurityDemodisplay-name>  
    7.     <context-param>  
    8.         <param-name>contextClassparam-name>  
    9.         <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContextparam-value>  
    10.     context-param>  
    11.   
    12.     <context-param>  
    13.         <param-name>contextConfigLocationparam-name>  
    14.         <param-value>com.ch.configurationparam-value>  
    15.     context-param>  
    16.   
    17.     <filter>  
    18.         <filter-name>springSecurityFilterChainfilter-name>  
    19.         <filter-class>org.springframework.web.filter.DelegatingFilterProxyfilter-class>  
    20.     filter>  
    21.   
    22.     <filter-mapping>  
    23.         <filter-name>springSecurityFilterChainfilter-name>  
    24.         <url-pattern>/*url-pattern>  
    25.     filter-mapping>  
    26.   
    27.     <listener>  
    28.         <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>  
    29.     listener>  
    30.   
    31.     <servlet>  
    32.         <servlet-name>MyServletservlet-name>  
    33.         <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>  
    34.         <init-param>  
    35.             <param-name>contextConfigLocationparam-name>  
    36.             <param-value>param-value>  
    37.         init-param>  
    38.         <load-on-startup>1load-on-startup>  
    39.     servlet>  
    40.   
    41.     <servlet-mapping>  
    42.         <servlet-name>MyServletservlet-name>  
    43.         <url-pattern>/url-pattern>  
    44.     servlet-mapping>  
    45.   
    46.     <welcome-file-list>  
    47.         <welcome-file>welcome-file>  
    48.     welcome-file-list>  
    49. 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.   
    8.     <http auto-config="true">  
    9.         <intercept-url pattern="/*" access="ROLE_USER" />  
    10.     http>  
    11.   
    12.     <authentication-manager alias="authenticationManager">  
    13.         <authentication-provider>  
    14.             <user-service>  
    15.                 <user authorities="ROLE_USER" name="guest" password="guest" />  
    16.             user-service>  
    17.         authentication-provider>  
    18.     authentication-manager>  
    19.   
    20. beans:beans>  

    至此,Demo项目的开发已经完成。项目的整体结构图如图所示:



    六、部署和运行

    1. 在Eclipse选择项目SpringSecurityDemo,右键选择“Run As”,再选择“Run on Server”,选择Apache Tomcat v7.0,Eclipse IDE自动完成部署并运行。

    在浏览器上输入地址:http://localhost:8080/SpringSecurityDemo/

    显示如下:

    注:地址自动被重定向到http://localhost:8080/SpringSecurityDemo/spring_security_login

    User/Password输入guest/guest,显示:

    如果输入错误,显示:

    OK!本文就到这里,对于Spring的注释,可以参考官方文档加以理解。

     
  • 相关阅读:
    Service Name Port Number Transport Protocol tcp udp 端口号16bit
    linux linux 互传文件 win 不通过 ftp sftp 往linux 传文件(文件夹)
    soft deletion Google SRE 保障数据完整性的手段
    Taylor series
    Taylor's theorem
    Moving average
    REQUEST
    Unix file types
    mysqld.sock
    Tunneling protocol
  • 原文地址:https://www.cnblogs.com/jokerjason/p/6000176.html
Copyright © 2011-2022 走看看