您的位置:首页 > 编程语言 > Java开发

SSM框架整合教程(Spring+SpringMVC+MyBatis)

2017-09-22 17:24 489 查看
SSM框架

1、ssm在各层中的作用

ssm框架与ssh框架类似,使用springmvc代替strusts2、mybatis代替hibernate

Spring:

主要作用是依赖注入、控制反转以达到解耦的目的,用于对整个应用中的bean实例进行管理,作用于ssm各个层;(aop用于复杂的业务交叉开发)

SpringMVC:

整个应用架构的骨架,负责应用中mvc模型的实现,向下层传递前端请求,向上层传递服务响应,主要作用于action层;

Mybatis:

主要用于数据库操作,提供了便捷的数据库操作框架,主要作用于dao层;

2、ssm注解框架整合配置

前置:eclipse javaee +mysql5.7+tomcat9.0

新建maven项目:

创建相应目录如图:



com.zhangteng.controller
控制层
com.zhangteng.dao
Dao层
com.zhangteng.mapping
Mybatis映射文件
com.zhangteng.pojo
实体
com.zhangteng.service
业务层
com.zhangteng.springAOPTest
Aop demo代码
resources.jdbc.properties
Jdbc配置信息
resources.log4j.properties
Log配置信息
resources.spring-mvc.xml
Spring-mvc配置信息
resources.spring-mybatis.xml
Spring与mybatis配置信息
logs
日志
mybatis-auto-libs
Mybatis自动生成实体、dao、映射的lib

ssm配置信息:

pom:

 
<projectxmlns="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.0http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>ssmDemo</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>ssmDemoMaven Webapp</name>
    <url>http://maven.apache.org</url>
 
    <properties>
        <!-- spring版本号 -->
        <spring.version>4.0.2.RELEASE</spring.version>
        <!-- mybatis版本号 -->
        <mybatis.version>3.2.6</mybatis.version>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>
 
    <dependencies>
 
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
            <scope>test</scope>
        </dependency>
        <!-- aspectj jar -->
        <dependency>
           
2270b
<groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.9</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>1.8.9</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.4</version>
        </dependency>
        <!-- spring核心包 -->
        <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>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- 导入Mysql数据库链接jar包
-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库
-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- JSTL标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</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 -->
 
        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
 
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.4</version>
        </dependency>
        <!-- <dependency><groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId>
            <version>1.1.41</version></dependency> <dependency> <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId><version>1.9</version> </dependency> -->
    </dependencies>
    <build>
        <finalName>ssmDemo</finalName>
    </build>
</project>
 

Jdbc.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
#定义初始连接数 
jdbc.initialSize=0
#定义最大连接数 
jdbc.maxActive=20
#定义最大空闲 
jdbc.maxIdle=20
#定义最小空闲 
jdbc.minIdle=1
#定义最长等待时间 
jdbc.maxWait=60000

 

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-ddHH\:mm\:ss}][%c]%m%n 

 

spring-mvc.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
    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-3.1.xsd   
                       http://www.springframework.org/schema/context   
                       http://www.springframework.org/schema/context/spring-context-3.1.xsd   
                       http://www.springframework.org/schema/mvc   
                       http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器
-->
    <context:component-scanbase-package="com.zhangteng.controller"/>
    <!-- don't handle the static resource -->
    <mvc:default-servlet-handler/>
 
    <!-- if you use annotation you must configurefollowing setting -->
    <mvc:annotation-driven/>
 
    <!--避免IE执行AJAX时,返回JSON出现下载文件
-->
    <beanid="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <propertyname="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射
-->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <propertyname="messageConverters">
            <list>
                <refbean="mappingJacksonHttpMessageConverter"/><!--
JSON转换器 -->
            </list>
        </property>
    </bean>
 
    <!-- 定义跳转的文件的前后缀,视图模式配置 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个可用的url地址
-->
        <propertyname="prefix"value="/WEB-INF/jsp/"/>
        <propertyname="suffix"value=".jsp"/>
    </bean>
 
    <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
    <beanid="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 默认编码 -->
        <propertyname="defaultEncoding"value="utf-8"/>
        <!-- 文件大小最大值 -->
        <propertyname="maxUploadSize"value="10485760000"/>
        <!-- 内存中的最大值 -->
        <propertyname="maxInMemorySize"value="40960"/>
    </bean>
 
</beans> 
 

spring-mabatis.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/mvc   
        http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
    <!-- 自动扫描 -->
    <context:component-scanbase-package="com.zhangteng"/>
    <!-- aop 自动代理配置 -->
    <!-- <aop:aspectj-autoproxy proxy-target-class="true"/> -->
 
    <!-- 引入配置文件 -->
    <beanid="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <propertyname="location"value="classpath:jdbc.properties"/>
    </bean>
 
    <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <propertyname="driverClassName"value="${jdbc.driver}"/>
        <propertyname="url"value="${jdbc.url}"/>
        <propertyname="username"value="${jdbc.username}"/>
        <propertyname="password"value="${jdbc.password}"/>
        <!-- 初始化连接大小 -->
        <propertyname="initialSize"value="${jdbc.initialSize}"></property>
        <!-- 连接池最大数量 -->
        <propertyname="maxActive"value="${jdbc.maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <propertyname="maxIdle"value="${jdbc.maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <propertyname="minIdle"value="${jdbc.minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <propertyname="maxWait"value="${jdbc.maxWait}"></property>
    </bean>
 
    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件
-->
    <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
        <propertyname="dataSource"ref="dataSource"/>
        <!-- 自动扫描mapping.xml文件 -->
        <propertyname="mapperLocations"value="classpath:com/zhangteng/mapping/*.xml"></property>
    </bean>
 
    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <propertyname="basePackage"value="com.zhangteng.dao"/>
        <propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"></property>
    </bean>
 
    <!-- (事务管理)transaction manager, use JtaTransactionManager for globaltx-->
    <beanid="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <propertyname="dataSource"ref="dataSource"/>
    </bean>
 
</beans> 

web.xml:

<?xmlversion="1.0"encoding="UTF-8"?> 
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
   <display-name>Archetype Created Web Application</display-name> 
   <!-- Spring和mybatis的配置文件 --> 
   <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>classpath:spring-mybatis.xml</param-value> 
   </context-param> 
   <!-- 编码过滤器 --> 
   <filter> 
        <filter-name>encodingFilter</filter-name> 
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
        <async-supported>true</async-supported> 
        <init-param> 
            <param-name>encoding</param-name> 
            <param-value>UTF-8</param-value> 
        </init-param> 
   </filter> 
   <filter-mapping> 
        <filter-name>encodingFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
   </filter-mapping> 
   <!-- Spring监听器 --> 
   <listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
   </listener> 
   <!-- 防止Spring内存溢出监听器 --> 
   <listener> 
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> 
   </listener> 
 
   <!-- Spring MVC servlet --> 
   <servlet> 
        <servlet-name>SpringMVC</servlet-name> 
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <init-param> 
            <param-name>contextConfigLocation</param-name> 
            <param-value>classpath:spring-mvc.xml</param-value> 
        </init-param> 
        <load-on-startup>1</load-on-startup> 
        <async-supported>true</async-supported> 
   </servlet> 
   <servlet-mapping> 
        <servlet-name>SpringMVC</servlet-name> 
        <!-- 此处可以可以配置成*.do,对应struts的后缀习惯
--> 
        <url-pattern>/</url-pattern> 
   </servlet-mapping> 
   <welcome-file-list> 
        <welcome-file>/index.jsp</welcome-file> 
   </welcome-file-list> 
 
</web-app> 
 

Mybatis自动生成dao、map、pojo

目录结构:



配置信息generatorConfig.xml:

<?xmlversion="1.0"encoding="UTF-8"?>   
<!DOCTYPEgeneratorConfiguration   

  PUBLIC
"-//mybatis.org//DTDMyBatis Generator Configuration 1.0//EN"   
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">   
<generatorConfiguration>   
<!-- 数据库驱动-->   
   <classPathEntry location="mysql-connector-java-5.1.25.jar"/>   
   <contextid="DB2Tables" targetRuntime="MyBatis3">   
        <commentGenerator>   
            <propertyname="suppressDate"value="true"/>   
            <!-- 是否去除自动生成的注释 true:是: false:否
-->   
            <propertyname="suppressAllComments"value="true"/>   
        </commentGenerator>   
        <!--数据库链接URL,用户名、密码 -->   
        <jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/test"userId="root"password="root">   
        </jdbcConnection>   
        <javaTypeResolver>   
            <propertyname="forceBigDecimals"value="false"/>   
        </javaTypeResolver>   
        <!-- 生成模型的包名和位置-->   
        <javaModelGeneratortargetPackage="test.domain"targetProject="src">   
            <propertyname="enableSubPackages"value="true"/>   
            <propertyname="trimStrings"value="true"/>   
        </javaModelGenerator>   
        <!-- 生成映射文件的包名和位置-->   
        <sqlMapGeneratortargetPackage="test.mapping"targetProject="src">   
            <propertyname="enableSubPackages"value="true"/>   
        </sqlMapGenerator>   
        <!-- 生成DAO的包名和位置-->   
        <javaClientGeneratortype="XMLMAPPER"targetPackage="test.IDao"targetProject="src">   
            <propertyname="enableSubPackages"value="true"/>   
        </javaClientGenerator>   
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->   
        <tabletableName="user_t"domainObjectName="User"enableCountByExample="false"enableUpdateByExample="false"enableDeleteByExample="false"enableSelectByExample="false"selectByExampleQueryId="false"></table> 
   </context>   
</generatorConfiguration>   

运行:

控制台输入以下命令自动构建mbatis 实体类、dao及map
java -jar mybatis-generator-core-1.3.2.jar-configfile generatorConfig.xml-overwrite

注解标签:

Spring:

1、使用@Repository、@Service、@Controller和 @Component 将类标识为Bean

2、使用 @PostConstruct 和@PreDestroy 指定生命周期回调方法

3、使用 @Required 进行Bean 的依赖检查

4、使用 @Resource、@Autowired和 @Qualifier 指定Bean 的自动装配策略

5、使用 @Configuration 和@Bean 进行 Bean 的声明

# @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
 
共同点
 
两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。
 
不同点
 
(1)@Autowired
 
@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。如下:
 
publicclass TestServiceImpl {
    @Autowired
    @Qualifier("userDao")
    private UserDao userDao;
}
(2)@Resource
 
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。
注:最好是将@Resource放在setter方法上,因为这样更符合面向对象的思想,通过set、get去操作属性,而不是直接去操作属性。
 
@Resource装配顺序:
 
①如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
 
②如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。
 
③如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。
 
④如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
 
@Resource的作用相当于@Autowired,只不过@Autowired按照byType自动注入。
 

Spring-mvc:

1、@Controller

在SpringMVC 中,控制器Controller负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL
请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
 
@Controller用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring
才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式:
 
  (1)在SpringMVC 的配置文件中定义MyController的bean 对象。
 
  (2)在SpringMVC 的配置文件中告诉Spring该到哪里去找标记为@Controller 的Controller 控制器。
 
<!--方式一-->
<beanclass="com.host.app.web.controller.MyController"/>
<!--方式二-->
<context:component-scan base-package = "com.host.app.web" />//路径写到controller的上一层(扫描包详解见下面浅析)

2、@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
 
RequestMapping注解有六个属性,下面我们把她分成三类进行说明(下面有相应示例)。
 
1、 value, method;
 
value:     指定请求的实际地址,指定的地址可以是URITemplate 模式(后面将会说明);
 
method:  指定请求的method类型, GET、POST、PUT、DELETE等;
 
2、consumes,produces
 
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json,text/html;
 
produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
 
3、params,headers
 
params: 指定request中必须包含某些参数值是,才让该方法处理。
 
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
 

3、@ModelAttribute和 @SessionAttributes

代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中,可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。
 
 @SessionAttributes即将值放到session作用域中,写在class上面。
 
具体示例参见下面:使用@ModelAttribute 和 @SessionAttributes 传递和保存数据
 

4、@PathVariable

用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。

5、@requestParam

@requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter("name"),它有三个常用参数:defaultValue= "0", required = false, value = "isApp";defaultValue表示设置默认值,required 铜过boolean设置是否是必须要传入的参数,value 值表示接受的传入的参数类型。
 

6、@ResponseBody

作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
 
使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
 

Mabatis:

由spring管理

源码地址:

https://github.com/duoluo9/ssmDemo
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssm j2ee