SSM(SpringMVC+Spring+Mybatis)框架搭建以及示例web

SSM说明

SpringMVC:主要是进行表现层与控制层之间的数据传递,以及页面之间的跳转。

Spring:利用Spring框架的IoC进行对象的注入,Spring容器管理这些对象。

Mybatis:持久层,控制与数据库之间的操作,相对于hibernate上手简单。

用到的版本在pom.xml文件中会有说明

框架搭建准备

  • 操作系统:window 7
  • 安装JDK8
  • eclipse IDE
  • Maven进行包的管理
  • mysql5.6.10

框架搭建过程

第一步

利用Maven在eclipse中新建web工程,具体如何操作可以参考网上资料
Maven生成web项目eclipse
这里我首次生成的web项目目录如下:
SSM(SpringMVC+Spring+Mybatis)框架搭建以及示例web_第1张图片
在这里我们可以看到没有src/main/java以及src/test/java文件夹,这是因为我们的项目没有添加JRE Library,右键项目,选择properties,弹出如下对话框:
SSM(SpringMVC+Spring+Mybatis)框架搭建以及示例web_第2张图片
选择Add Library,在弹出的对话框中选择JRE System Library,最终生成的项目目录如下:
SSM(SpringMVC+Spring+Mybatis)框架搭建以及示例web_第3张图片

目录说明:src/main/java主要是写java文件,src/main/resources写配置文件,src/test/java是测试文件,webapp是页面的js,image以及css等文件。

第二步

生成所需的项目文件夹

我们在src/main/java下com.ll包下新建如下包:
SSM(SpringMVC+Spring+Mybatis)框架搭建以及示例web_第4张图片
其中enums跟exception我们先不管。在resources新建mapper,spring,sql文件夹。
com.ll包下层次说明:

  1. controller:主要负责进行控制流转,对不同的url进行相应,又叫web层
  2. service:业务逻辑层,我们将项目的业务逻辑放在这里
  3. entity:数据库表对应的实体
  4. dao : 控制数据持久化,与数据库打交道的接口一般都是放到这里
  5. dto : 有时候我们传递到前台的数据需要多种结构,而不单单是数据库表提供的数据。主要是dao层与service层之间的数据传输。

src/main/resources下文件说明

  1. mapper:由于使用了mybatis进行数据操作,所以这里放置sql的xml文件,sql语句都写在这里的xml文件中。
  2. spring:放置与spring相关的配置文件,spring-dao.xml与dao层相关的配置,spring-service.xml与service层相关的配置,spring-web.xml与controller层相关的配置。
  3. sql : 数据库建表操作语句

配置

pom.xml文件

修改pom.xml文件,添加项目需要的jar包,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.0modelVersion>
    <groupId>com.llgroupId>
    <artifactId>demowebartifactId>
    <packaging>warpackaging>
    <version>0.0.1-SNAPSHOTversion>
    <name>demoweb Maven Webappname>
    <url>http://maven.apache.orgurl>
    <properties>
        
        <spring.version>4.0.2.RELEASEspring.version>
        
        <mybatis.version>3.2.6mybatis.version>
        
        <slf4j.version>1.7.7slf4j.version>
        <log4j.version>1.2.17log4j.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>
    <dependencies>
        <dependency>
            <groupId>javaxgroupId>
            <artifactId>javaee-apiartifactId>
            <version>7.0version>
        dependency>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.11version>
            
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-oxmartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aopartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-context-supportartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${spring.version}version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>${mybatis.version}version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>1.2.2version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.39version>
        dependency>
        <dependency>
            <groupId>c3p0groupId>
            <artifactId>c3p0artifactId>
            <version>0.9.1.1version>
        dependency>
        
        <dependency>
            <groupId>taglibsgroupId>
            <artifactId>standardartifactId>
            <version>1.1.2version>
        dependency>
        <dependency>
            <groupId>jstlgroupId>
            <artifactId>jstlartifactId>
            <version>1.2version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.5.4version>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
        dependency>
        






        
        
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>${log4j.version}version>
        dependency>


        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.1.41version>
        dependency>


        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>${slf4j.version}version>
        dependency>

        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>${slf4j.version}version>
        dependency>
        
        
        <dependency>
            <groupId>org.codehaus.jacksongroupId>
            <artifactId>jackson-mapper-aslartifactId>
            <version>1.9.13version>
        dependency>
        
        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.3.1version>
        dependency>
        <dependency>
            <groupId>commons-iogroupId>
            <artifactId>commons-ioartifactId>
            <version>2.4version>
        dependency>
        <dependency>
            <groupId>commons-codecgroupId>
            <artifactId>commons-codecartifactId>
            <version>1.9version>
        dependency>
    dependencies>
    <build>
        <finalName>demowebfinalName>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generatorgroupId>
                <artifactId>mybatis-generator-maven-pluginartifactId>
                <version>1.3.2version>
                <configuration>
                    <verbose>trueverbose>
                    <overwrite>trueoverwrite>
                configuration>
            plugin>
        plugins>
    build>
project>

其中用到了mybatis generaror插件,我们后面会有说明。

spring-dao.xml文件

spring-dao.xml主要说明了dao层的配置,文件内容如下:


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    
    
    <context:property-placeholder location="classpath:jdbc.properties" />

    
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        
        <property name="driverClass" value="${jdbc.driver}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        
        <property name="maxPoolSize" value="30" />
        <property name="minPoolSize" value="10" />
        
        <property name="autoCommitOnClose" value="false" />
        
        <property name="checkoutTimeout" value="10000" />
        
        <property name="acquireRetryAttempts" value="2" />
    bean>

    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        
        <property name="dataSource" ref="dataSource" />
        
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        
        <property name="typeAliasesPackage" value="com.ll.entity" />
        
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
    bean>

    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        
        <property name="basePackage" value="com.ll.dao" />
    bean>
beans>

这里用到了jdbc.properties(数据库连接信息),文件内容如下:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=
jdbc.initialSize=0
jdbc.maxActive=20
jdbc.maxIdle=20
jdbc.minIdle=1
jdbc.maxWait=60000
drive.class.path=C:\\Users\\Administrator\\.m2\\repository\\mysql\\mysql-connector-java\\5.1.39\\mysql-connector-java-5.1.39.jar

从这里我们可以看到用到了ssm数据库,不过现在还用不到。

spring-web.xml文件

spring-web.xml文件内容如下:


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
    
    
    <mvc:annotation-driven />

    
     <mvc:default-servlet-handler/>

     
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
     bean>

     
     <context:component-scan base-package="com.ll.comtroller" />
beans>

spring-service.xml


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    <context:component-scan base-package="com.ll.service" />

    
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        
        <property name="dataSource" ref="dataSource" />
    bean>

    
    <tx:annotation-driven transaction-manager="transactionManager" />
beans>

web.xml文件


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0" metadata-complete="true">
    <display-name>Archetype Created Web Applicationdisplay-name>
    
    <servlet>
        <servlet-name>seckill-dispatcherservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:spring/spring-*.xmlparam-value>
        init-param>
    servlet>
    <servlet-mapping>
        <servlet-name>seckill-dispatcherservlet-name>
        
        <url-pattern>/url-pattern>
    servlet-mapping>
    <welcome-file-list>
        <welcome-file>/index.jspwelcome-file>
    welcome-file-list>
web-app>

log4j.properties日志配置

#定义LOG输出级别  
log4j.rootLogger=INFO,Console,File  
#定义日志输出目的地为控制台  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
#可以灵活地指定日志输出格式,下面一行是指定具体的格式  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  

#文件大小到达指定尺寸的时候产生一个新的文件  
log4j.appender.File = org.apache.log4j.RollingFileAppender  
#指定输出目录  
log4j.appender.File.File = logs/ssm.log  
#定义文件最大大小  
log4j.appender.File.MaxFileSize = 10MB  
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志  
log4j.appender.File.Threshold = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n 

mybatis-config.xml配置



<configuration>
    
    <settings>
        
        <setting name="useGeneratedKeys" value="true"/>
        
        <setting name="useColumnLabel" value="true"/>

        
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    settings>

configuration>

mybatis generator自动生成代码

mybatis generator可以自动帮助我们生成数据表对应的实体,常用的增删查改操作,可以提高开发效率。

  1. 首先我们要将mybatis generator插件安装到eclipse中,mybatis generator插件安装
  2. 在pom.xml添加,如pom.xml文件中所示
  3. 新建generatorConfig.xml文件,写如下内容


<generatorConfiguration>


    
    <properties resource="jdbc.properties" />
    
    <classPathEntry location="${drive.class.path}"/>
    <context id="context1" defaultModelType="flat" targetRuntime="MyBatis3">
        <commentGenerator>
            
            <property name="suppressAllComments" value="true" />
        commentGenerator>
        
        <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}"
                        password="${jdbc.password}">
        jdbcConnection>           




        
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        javaTypeResolver>

        
        <javaModelGenerator targetPackage="com.ll.entity"
            targetProject="demoweb">
            
            <property name="enableSubPackages" value="false" />
            
            <property name="trimStrings" value="true" />
        javaModelGenerator>

        
        <sqlMapGenerator targetPackage="mapper"
            targetProject="demoweb\src\main\resources">
            
            <property name="enableSubPackages" value="false" />
        sqlMapGenerator>

        
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="com.ll.dao" targetProject="demoweb">
            
            <property name="enableSubPackages" value="false" />
        javaClientGenerator>

        


        
        <table schema="" tableName="appointment" enableCountByExample="false" 
                enableUpdateByExample="false" enableDeleteByExample="false" 
                enableSelectByExample="false" selectByExampleQueryId="false"> 

        table>
    context>
generatorConfiguration>

具体配置可以参考mybatis generator配置

具体例子使用可以参考图书管理或者图书管理

参考链接:
建议同学们可以看下SSM框架搭建,本文也主要是参考这篇文章进行搭建

你可能感兴趣的:(web开发)