zoukankan      html  css  js  c++  java
  • 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)

      一直希望能够搭建一个完整的,基础Web框架,方便日后接一些外快的时候,能够省时省力,终于花了一周的时间,把这个东西搞定了。特此写下此博客,一来是纪念,二来是希望能够为别人提供方便。顺带说一下,恩,组合框架的各个部分用的版本有的是最新的,有的则不是,不敢保证最新版本下,按照这个整合方式,不会报错...

    简单介绍一下,本框架的基本功能点:


    1. Spring:整个框架的主体部分,这个自不用说。
    2. SpringMVC:MVC部分我还是比较喜欢Spring的。
    3. MyBatis:选型的时候选择这个ORM主要也是考虑其灵活性的问题,毕竟我也不知道,今后会遇到怎样的需求,用Hibernate一来是不太会用,二来,我还是比较喜欢直接写SQL来的简单一点。
    4. SpringSecurity:这个主要是安全框架,负责用户登录验证及整站权限分配的相关事项(权限分配真的很有用,这个我就不多说了)。
    5. EhCache:一个非常流行又非常简单好用的缓存框架,并且目前已经支持分布式,如果觉得不好用,自己换成Redis也都OK。
    6. JCaptcha:一个简单的验证码生成框架(或者说工具)。
    7. Log4J:现在没人不知道这个日志框架吧...

      按照这样的选型,基本可以完成大部分网站的基础框架,如:

      1. 用户登录管理,
      2. 整站权限分配,
      3. 数据缓存,
      4. 登录验证码,
      5. 数据库操作,
      6. 统一异常处理,
      7. 日志输出。

      网上找了很多文章,大部分都是只有部分整合的,比如SSH整合,SSM整合,SpringMVC+SpringSecurity,等等,东一块,西一块,非常分散,而且每个人的配置方式还不一样,不统一,有的人喜欢注解配置,有的人喜欢XML配置,有的文章甚至直接就是有东没西,神龙见首不见尾。看的我是很郁闷,很蛋疼,因为当我好不容易搭好一个SSM框架,我发现,我要管理用户登录及权限分配的时候,咦,我还得去配置Security,然后又要找很多文章来补充知识,配置Security的时候,又要找验证码的框架,都搞好了以后,发现诶,缓存这个东西不都是任何一个网站必备的吗?所以就有了现在这篇文章,花了好大得劲,终于把所有都整合起来了。

    但是,本文章,不提供项目源码!

    只有自己亲手走过一遍,才真正学得会知识。作为一个程序员,我相信这样才是对我们是最好的一个方式。所以不要索要源码,不会给的。 先给出整个项目的

    Pom.xml


     

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4     <groupId>com.magic.rent</groupId>
      5     <artifactId>ssm</artifactId>
      6     <packaging>war</packaging>
      7     <version>1.0-SNAPSHOT</version>
      8     <name>ssm Maven Webapp</name>
      9     <url>http://maven.apache.org</url>
     10     <repositories>
     11         <repository>
     12             <id>atlassian</id>
     13             <name>atlassian</name>
     14             <url>http://maven.jahia.org/maven2/</url>
     15         </repository>
     16     </repositories>
     17     <build>
     18         <finalName>ssm</finalName>
     19         <plugins>
     20             <!--Mybatis 逆向工程插件-->
     21             <plugin>
     22                 <groupId>org.mybatis.generator</groupId>
     23                 <artifactId>mybatis-generator-maven-plugin</artifactId>
     24                 <version>1.3.2</version>
     25                 <configuration>
     26                     <verbose>true</verbose>
     27                     <overwrite>true</overwrite>
     28                 </configuration>
     29             </plugin>
     30         </plugins>
     31     </build>
     32     <properties>
     33         <security.version>4.1.3.RELEASE</security.version>
     34         <spring.version>4.3.3.RELEASE</spring.version>
     35     </properties>
     36     <dependencies>
     37         <!-- SpringFramework Start -->
     38         <dependency>
     39             <groupId>org.springframework</groupId>
     40             <artifactId>spring-core</artifactId>
     41             <version>${spring.version}</version>
     42         </dependency>
     43 
     44         <dependency>
     45             <groupId>org.springframework</groupId>
     46             <artifactId>spring-web</artifactId>
     47             <version>${spring.version}</version>
     48         </dependency>
     49 
     50         <dependency>
     51             <groupId>org.springframework</groupId>
     52             <artifactId>spring-oxm</artifactId>
     53             <version>${spring.version}</version>
     54         </dependency>
     55 
     56         <dependency>
     57             <groupId>org.springframework</groupId>
     58             <artifactId>spring-tx</artifactId>
     59             <version>${spring.version}</version>
     60         </dependency>
     61 
     62         <dependency>
     63             <groupId>org.springframework</groupId>
     64             <artifactId>spring-jdbc</artifactId>
     65             <version>${spring.version}</version>
     66         </dependency>
     67 
     68         <dependency>
     69             <groupId>org.springframework</groupId>
     70             <artifactId>spring-webmvc</artifactId>
     71             <version>${spring.version}</version>
     72         </dependency>
     73 
     74         <dependency>
     75             <groupId>org.springframework</groupId>
     76             <artifactId>spring-aop</artifactId>
     77             <version>${spring.version}</version>
     78         </dependency>
     79 
     80         <dependency>
     81             <groupId>org.springframework</groupId>
     82             <artifactId>spring-context-support</artifactId>
     83             <version>${spring.version}</version>
     84         </dependency>
     85 
     86         <dependency>
     87             <groupId>org.springframework</groupId>
     88             <artifactId>spring-test</artifactId>
     89             <version>${spring.version}</version>
     90         </dependency>
     91 
     92         <dependency>
     93             <groupId>org.springframework</groupId>
     94             <artifactId>spring-expression</artifactId>
     95             <version>${spring.version}</version>
     96         </dependency>
     97         <!-- SpringFramework End -->
     98 
     99         <!--SpringSecurity Start-->
    100         <dependency>
    101             <groupId>org.springframework.security</groupId>
    102             <artifactId>spring-security-core</artifactId>
    103             <version>${security.version}</version>
    104         </dependency>
    105         <dependency>
    106             <groupId>org.springframework.security</groupId>
    107             <artifactId>spring-security-web</artifactId>
    108             <version>${security.version}</version>
    109         </dependency>
    110         <dependency>
    111             <groupId>org.springframework.security</groupId>
    112             <artifactId>spring-security-config</artifactId>
    113             <version>${security.version}</version>
    114         </dependency>
    115         <dependency>
    116             <groupId>org.springframework.security</groupId>
    117             <artifactId>spring-security-taglibs</artifactId>
    118             <version>${security.version}</version>
    119         </dependency>
    120         <dependency>
    121             <groupId>org.springframework.security</groupId>
    122             <artifactId>spring-security-crypto</artifactId>
    123             <version>${security.version}</version>
    124         </dependency>
    125         <!--SpringSecurity End-->
    126 
    127         <!--aspectj start-->
    128         <dependency>
    129             <groupId>org.aspectj</groupId>
    130             <artifactId>aspectjweaver</artifactId>
    131             <version>1.8.6</version>
    132         </dependency>
    133 
    134         <dependency>
    135             <groupId>org.aspectj</groupId>
    136             <artifactId>aspectjrt</artifactId>
    137             <version>1.8.6</version>
    138         </dependency>
    139         <!--aspectj end-->
    140 
    141         <!--c3p0-->
    142         <dependency>
    143             <groupId>com.mchange</groupId>
    144             <artifactId>c3p0</artifactId>
    145             <version>0.9.5.1</version>
    146         </dependency>
    147 
    148         <!--servlet/jsp api start-->
    149         <dependency>
    150             <groupId>javax.servlet</groupId>
    151             <artifactId>servlet-api</artifactId>
    152             <version>2.5</version>
    153         </dependency>
    154 
    155         <dependency>
    156             <groupId>javax.servlet.jsp</groupId>
    157             <artifactId>jsp-api</artifactId>
    158             <version>2.1</version>
    159             <scope>provided</scope>
    160         </dependency>
    161         <!--servlet/jsp api end-->
    162 
    163         <!--junit4-->
    164         <dependency>
    165             <groupId>junit</groupId>
    166             <artifactId>junit</artifactId>
    167             <version>4.11</version>
    168             <scope>test</scope>
    169         </dependency>
    170 
    171         <!--Mybatis-->
    172         <dependency>
    173             <groupId>org.mybatis</groupId>
    174             <artifactId>mybatis</artifactId>
    175             <version>3.3.0</version>
    176         </dependency>
    177         <!--Mybatis Spring整合-->
    178         <dependency>
    179             <groupId>org.mybatis</groupId>
    180             <artifactId>mybatis-spring</artifactId>
    181             <version>1.2.3</version>
    182         </dependency>
    183 
    184         <!--MySQL Driver-->
    185         <dependency>
    186             <groupId>mysql</groupId>
    187             <artifactId>mysql-connector-java</artifactId>
    188             <version>5.1.6</version>
    189         </dependency>
    190 
    191         <dependency>
    192             <groupId>jstl</groupId>
    193             <artifactId>jstl</artifactId>
    194             <version>1.2</version>
    195         </dependency>
    196 
    197         <!--JCaptcha验证码-->
    198         <dependency>
    199             <groupId>com.octo.captcha</groupId>
    200             <artifactId>jcaptcha</artifactId>
    201             <version>1.0</version>
    202         </dependency>
    203 
    204         <!--公共工具包-->
    205         <dependency>
    206             <groupId>org.apache.commons</groupId>
    207             <artifactId>commons-lang3</artifactId>
    208             <version>3.4</version>
    209         </dependency>
    210 
    211         <!--Ehcache缓存框架 start-->
    212         <dependency>
    213             <groupId>net.sf.ehcache</groupId>
    214             <artifactId>ehcache-core</artifactId>
    215             <version>2.6.11</version>
    216         </dependency>
    217         <!--Mybatis-Ehcache整合包-->
    218         <dependency>
    219             <groupId>org.mybatis</groupId>
    220             <artifactId>mybatis-ehcache</artifactId>
    221             <version>1.0.0</version>
    222         </dependency>
    223         <!--Ehcache-Web页面及对象缓存-->
    224         <dependency>
    225             <groupId>net.sf.ehcache</groupId>
    226             <artifactId>ehcache-web</artifactId>
    227             <version>2.0.4</version>
    228         </dependency>
    229         <dependency>
    230             <groupId>org.slf4j</groupId>
    231             <artifactId>slf4j-api</artifactId>
    232             <version>1.6.1</version>
    233         </dependency>
    234         <dependency>
    235             <groupId>org.slf4j</groupId>
    236             <artifactId>slf4j-log4j12</artifactId>
    237             <version>1.6.2</version>
    238         </dependency>
    239         <!--Ehcache缓存框架 end-->
    240     </dependencies>
    241 </project>

    项目结构截图


     

    [图是高清的,我从1080P的屏幕下截取的]

    [字太小可以下载到本地后放大,可以看得很清楚,亲测]

    [回头有空,我再补一个目录结构文档]

  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/wuxinzhe/p/5922449.html
Copyright © 2011-2022 走看看