基于Spring + Spring MVC + Mybatis + shiro 高性能web构建

Posted 彼岸的命運╰'

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Spring + Spring MVC + Mybatis + shiro 高性能web构建相关的知识,希望对你有一定的参考价值。

一直想写这篇文章,前段时间 痴迷于JavaScript、NodeJs、AngularJS,做了大量的研究,对前后端交互有了更深层次的认识。

今天抽个时间写这篇文章,我有预感,这将是一篇很详细的文章,详细的配置,详细的注释,看起来应该很容易懂。

用最合适的技术去实现,并不断追求最佳实践。这就是架构之道。

希望这篇文章能给你们带来一些帮助,同时希望你们可以为这个项目贡献你的想法。 

源码地址:https://github.com/starzou/quick4j 点击打开

看我们的项目结构:

是一个典型的Maven 项目 :

src/main/Java:存放java源文件
src/main/resources:存放程序资源、配置文件
src/test/java:存放测试代码文件
src/main/webapp:web根目录
pom.xml : maven项目配置文件,管理依赖,编译,打包

主要的后端架构:spring + Spring MVC + Mybatis + Apache Shiro

前端界面主要使用MetroNic 模板 

先看我们搭建完成,跑起来的效果,这样你才有兴趣看下去:

你可以 在github 上 checkout quick4j项目 查看 ,并跟下面步骤 来搭建:

强烈建议你,checkout  https://github.com/starzou/quick4j ,在本地跑起来,再试着自己搭建框架

1、首先创建 maven 项目,用 idea 、eclipse 或 mvn 命令行都行 

2、配置 pom.xml,添加框架依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi: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.eliteams</groupId>  
    <artifactId>quick4j</artifactId>  
    <packaging>war</packaging>  
    <version>1.0.0</version>  
    <name>quick4j App</name>  
    <url>https://github.com/starzou/quick4j</url>  
  
    <build>  
        <finalName>quick4j</finalName>  
        <plugins>  
            <!-- Mybatis generator代码生成插件 配置 -->  
            <plugin>  
                <groupId>org.mybatis.generator</groupId>  
                <artifactId>mybatis-generator-maven-plugin</artifactId>  
                <version>${plugin.mybatis.generator}</version>  
                <configuration>  
                    <configurationFile>${mybatis.generator.generatorConfig.xml}</configurationFile>  
                    <overwrite>true</overwrite>  
                    <verbose>true</verbose>  
                </configuration>  
            </plugin>  
  
            <!--Maven编译插件 配置-->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-compiler-plugin</artifactId>  
                <version>${plugin.maven-compiler}</version>  
                <configuration>  
                    <source>${project.build.jdk}</source>  
                    <target>${project.build.jdk}</target>  
                    <encoding>${project.build.sourceEncoding}</encoding>  
                </configuration>  
            </plugin>  
        </plugins>  
  
        <!--配置Maven 对resource文件 过滤 -->  
        <resources>  
            <resource>  
                <directory>src/main/resources</directory>  
                <includes>  
                    <include>**/*.properties</include>  
                    <include>**/*.xml</include>  
                </includes>  
                <filtering>true</filtering>  
            </resource>  
            <resource>  
                <directory>src/main/java</directory>  
                <includes>  
                    <include>**/*.properties</include>  
                    <include>**/*.xml</include>  
                </includes>  
                <filtering>true</filtering>  
            </resource>  
        </resources>  
    </build>  
  
    <properties>  
        <!-- base setting -->  
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
        <project.build.locales>zh_CN</project.build.locales>  
        <project.build.jdk>1.7</project.build.jdk>  
  
        <!-- plugin setting -->  
        <mybatis.generator.generatorConfig.xml>${basedir}/src/test/resources/generatorConfig.xml</mybatis.generator.generatorConfig.xml>  
        <mybatis.generator.generatorConfig.properties>file:///${basedir}/src/test/resources/generatorConfig.properties</mybatis.generator.generatorConfig.properties>  
  
        <!-- plugin versions -->  
        <plugin.mybatis.generator>1.3.1</plugin.mybatis.generator>  
        <plugin.maven-compiler>3.1</plugin.maven-compiler>  
  
        <!-- lib versions -->  
        <junit.version>4.11</junit.version>  
        <spring.version>4.0.2.RELEASE</spring.version>  
        <mybatis.version>3.2.2</mybatis.version>  
        <mybatis.spring.version>1.2.2</mybatis.spring.version>  
        <mysql.connector.version>5.1.30</mysql.connector.version>  
        <postgresql.version>9.1-901.jdbc4</postgresql.version>  
        <slf4j.version>1.6.6</slf4j.version>  
        <log4j.version>1.2.12</log4j.version>  
        <httpclient.version>4.1.2</httpclient.version>  
        <jackson.version>1.9.13</jackson.version>  
        <c3p0.version>0.9.1.2</c3p0.version>  
        <druid.version>1.0.5</druid.version>  
        <tomcat.jdbc.version>7.0.53</tomcat.jdbc.version>  
        <jstl.version>1.2</jstl.version>  
        <google.collections.version>1.0</google.collections.version>  
        <cglib.version>3.1</cglib.version>  
        <shiro.version>1.2.3</shiro.version>  
        <commons.fileupload.version>1.3.1</commons.fileupload.version>  
        <commons.codec.version>1.9</commons.codec.version>  
        <commons.net.version>3.3</commons.net.version>  
        <aspectj.version>1.6.12</aspectj.version>  
        <netty.version>4.0.18.Final</netty.version>  
        <hibernate.validator.version>5.1.1.Final</hibernate.validator.version>  
    </properties>  
  
    <dependencies>  
        <!-- junit -->  
        <dependency>  
            <groupId>junit</groupId>  
            <artifactId>junit</artifactId>  
            <version>${junit.version}</version>  
        </dependency>  
  
        <!-- springframe start -->  
        <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-oxm</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-tx</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-jdbc</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-webmvc</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-aop</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-context-support</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-test</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
        <!-- springframe end -->  
  
        <!-- mybatis start-->  
        <dependency>  
            <groupId>org.mybatis</groupId>  
            <artifactId>mybatis</artifactId>  
            <version>${mybatis.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.mybatis</groupId>  
            <artifactId>mybatis-spring</artifactId>  
            <version>${mybatis.spring.version}</version>  
        </dependency>  
        <!--mybatis end-->  
  
        <!-- mysql-connector -->  
        <dependency>  
            <groupId>mysql</groupId>  
            <artifactId>mysql-connector-java</artifactId>  
            <version>${mysql.connector.version}</version>  
        </dependency>  
  
        <!-- DruidDataSource -->  
        <dependency>  
            <groupId>com.alibaba</groupId>  
            <artifactId>druid</artifactId>  
            <version>${druid.version}</version>  
        </dependency>  
  
        <!-- jackson -->  
        <dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-mapper-asl</artifactId>  
            <version>${jackson.version}</version>  
        </dependency>  
  
        <!-- log start -->  
        <dependency>  
            <groupId>log4j</groupId>  
            <artifactId>log4j</artifactId>  
            <version>${log4j.version}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-api</artifactId>  
            <version>${slf4j.version}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-log4j12</artifactId>  
            <version>${slf4j.version}</version>  
        </dependency>  
        <!-- log end -->  
  
        <!-- servlet api -->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>javax.servlet-api</artifactId>  
            <version>3.0.1</version>  
            <scope>provided</scope>  
        </dependency>  
  
        <!-- jstl -->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>jstl</artifactId>  
            <version>${jstl.version}</version>  
        </dependency>  
  
        <!-- start apache -->  
        <dependency>  
            <groupId>commons-fileupload</groupId>  
            <artifactId>commons-fileupload</artifactId>  
            <version>${commons.fileupload.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>org.apache.httpcomponents</groupId>  
            <artifactId>httpclient</artifactId>  
            <version>${httpclient.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>commons-codec</groupId>  
            <artifactId>commons-codec</artifactId>  
            <version>${commons.codec.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>commons-net</groupId>  
            <artifactId>commons-net</artifactId>  
            <version>${commons.net.version}</version>  
        </dependency>  
  
        <dependency>  
            <groupId>commons-logging</以上是关于基于Spring + Spring MVC + Mybatis + shiro 高性能web构建的主要内容,如果未能解决你的问题,请参考以下文章

Spring+Spring mvc+Mybatis整合教程(基于Maven)

Spring : 基于注解的 Spring MVC( 上 )

基于Spring MVC + Spring + MyBatis的医院就诊挂号系统

基于Spring MVC + Spring + MyBatis的医院就诊挂号系统

基于Spring MVC + Spring + MyBatis的网上购物系统

基于Spring MVC + Spring + MyBatis的银行卡系统