SpringMvc框架及SSM框架整合

一、SpringMvc相关知识

1、Spring和SpringMvc的关系

​ 1.1、Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring。

​ 1.2、SpringMVC是一个MVC模式的WEB开发框架;Spring是一个通用解决方案, 最大的用处就是通过Ioc/AOP解耦, 降低软件复杂性, 所以Spring可以结合SpringMVC等很多其他解决方案一起使用, 不仅仅只适用于WEB开发

2、SpringMvc工作原理图

二、框架搭建

1、配置文件配置
1.1、pom.xml依赖
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><!-- mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-aop --><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-core --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-expression --><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-web --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-test --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.7.RELEASE</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.4</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --><!--MyBatis整合spring--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency><!--pojo转换成 json--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.7.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.7.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.7.3</version></dependency>
<!--此处的servlet仅在编译和测试的时候使用,运行的时候不使用,使用的是tomcat中的servlet--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency>
<!--响应字节--IO流工具类--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version></dependency>

1.2、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><!--配置spring和SpringMvc--><!--全局,监听,骑马,异步走,servlet优先补充维生素--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><listener><!--用监听器自动加载spring的配置文件,不再是手动加载--><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--解决post方法中request请求参数的中文乱码--><filter><filter-name>ce</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>ce</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--servlet配置mvc--><servlet><servlet-name>ds</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:mvc/SpringMvc.xml</param-value></init-param><!--优先加载mvc--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ds</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

1.3、SpringMvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 开启controller层中spring注解驱动  打开 Component Controller Service Reposity --><context:component-scan base-package="com.k9503.controller"></context:component-scan><!-- 开启SpringMvc特有的注解驱动  打开 @RequestMapping  @RequestParam  --><mvc:annotation-driven><mvc:message-converters><!--response.getWriter().Write()  @responsebody --><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/><!--解决@responsebody响应中文乱码--></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean></mvc:message-converters></mvc:annotation-driven><mvc:default-servlet-handler/><!--DispatcherServlet--><!-- 视图解析器  location表示路径地址 --><!-- <mvc:resources mapping="/css/**" location="/css/"/><mvc:resources mapping="/js/**" location="/js/"/><mvc:resources mapping="/jsp/**" location="/jsp/"/><mvc:resources mapping="/html/**" location="/html/"/>--><!-- 处理jsp页面所在的前缀和后缀 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀,确定当前访问的页面路径地址 --><property name="prefix"><value>/WEB-INF/jsp/</value><!-- 放在WEB-INF文件夹之下的page文件夹 --></property><!-- 后缀,确定要访问的文件类型 --><property name="suffix"><value>.jsp</value></property></bean>
</beans>

1.4、Spring核心配置文件:applicationContext.xml

<!-- 1.开启spring注解驱动 --><context:component-scan base-package="com.k9503.service"></context:component-scan><!-- 2.读取properties --><context:property-placeholder location="classpath:mybatis/properties/db.properties"/><!--3. 配置数据库连接池 c3p0 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" ><property name="driverClass" value="${jdbc.driver}"/><!-- 配置Jdbc的Url --><property name="jdbcUrl" value="${jdbc.url}"/><!-- 配置用户名 --><property name="user" value="${jdbc.username}"/><!-- 密码 --><property name="password" value="${jdbc.password}"/></bean><!-- 4.配置事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 事务管理数据库连接池 --><property name="dataSource" ref="dataSource"></property></bean><!--5. 开启事务的注解驱动 @Transactional  --><tx:annotation-driven transaction-manager="transactionManager"/><!-- 6.spring管理mybatis配置文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--dataSource属性指定要用到的连接池 ref映射的是id=dataSource的bean标签,读取连接数据库信息--><property name="dataSource" ref="dataSource"/><!--configLocation属性指定mybatis的核心配置文件,管理mybatis配置文件--><property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" /><!-- 所有配置的mapper文件,mybatis的实体类配置文件所有的sql映射文件 --><!-- <property name="mapperLocations" value="classpath:mybatis/mapper/*.xml"></property>--></bean><!-- 7.spring管理mybatis映射接口和sql映射文件之间关联关系 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.k9503.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>

1.5、MyBatis核心配置文件

<configuration><settings><!--    可以在控制台输出日志信息:sql语句和参数 --><setting name="logImpl" value="STDOUT_LOGGING"/></settings><!-- 2.表示类型别名   --><typeAliases><!-- 2.1每一个类型的别名  type属性表示别名对应的类型地址 alias表示起的别名--><typeAlias type="java.util.List" alias="list"/><!--<typeAlias type="com.kgc.pojo.Emp" alias="emp"/>--><!-- package表示包,利用包的形式进行扫描包之下的所有的类,别名就是当前类名 --><package name="com.k9503.pojo"/></typeAliases><!-- 分页插件 --><!-- <plugins>            <plugin interceptor="com.github.pagehelper.PageInterceptor">                              3.3.0版本可用 - 分页参数合理化,默认false禁用         pageNum表示当前页  pages表示尾页         true启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页                     false禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据            <property name="reasonable"   value="true"/>    </plugin>        </plugins> -->
</configuration>

三、SpringMvc操作

1、SpringMvc特有的注解
  1. @requestMapping()注解 (其实就是起别名),可以修饰类或者方法;@RequestMapping”请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。如果类上没有该注解,只是在方法之上有该注解,那么在浏览请求的时候url=localhost:8080/方法请求映射名称
  2. @RequestParam()请求参数注解,应用在方法的参数中
    @requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”),它有三个常用参数:defaultValue = “0”, required = false, value = “isApp”;defaultValue 表示设置默认值,required 通过boolean设置是否是必须要传入的参数,true表示必须传入,如果不传则为null,如果为null,则报异常。value 值表示接收的传入的参数名称
  3. @DateTimeFormat(pattern=“yyyy-MM-dd”)注解date时间格式把国际格式改为中文格式,应用于pojo类的
    date类型属性之上
  4. 参数注解
    @PathVariable只能修饰从路径中获取的参数,用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数
2、具体案例
2.1、获取请求参数几种方式
@Controller
@RequestMapping("con1")
public class TestController {@RequestMapping("/test1")public void test1(String name){//如果不使用@RequestParam,方法中的形参要和URL的参数名一致System.out.println(name);System.out.println("ssm整合1");}@RequestMapping("/test2")public void test2(@RequestParam(name = "name")String a){System.out.println(a);System.out.println("ssm整合2");}@RequestMapping(value = "/testPost",method = RequestMethod.POST)//post方式提交public void testPost(String name, int age, @DateTimeFormat(pattern = "yyyy-MM-dd") Date date){System.out.println(name);System.out.println(age);System.out.println(date);}@RequestMapping(value = "/testGet",method = RequestMethod.GET)//get方式请求public void testGet(@RequestParam Map map){Set <Map.Entry>set = map.entrySet();for (Map.Entry entry:set){System.out.println(entry.getKey()+"--"+entry.getValue());}}//restful风格的参数获取--url中只有参数值,参数名在注解中,路径变量的注解@pathVariable@RequestMapping(value = "/test3/{name}/{age}/{birth}")public void test3(@PathVariable String name,@PathVariable Integer age,@PathVariable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date birth){System.out.println(name);System.out.println(age);System.out.println(birth);}
}

2.2、解决乱码问题

<mvc:message-converters><!--response.getWriter().Write()  @responsebody --><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/><!--解决@responsebody响应中文乱码--></bean><!--配置以json形式响应pojo--><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean></mvc:message-converters><!--解决post方法中request请求参数的中文乱码--><filter><filter-name>ce</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>ce</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--解决get方法中request请求参数的中文乱码-->
<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><path>/</path><port>8080</port><uriEncoding>UTF-8</uriEncoding><!-- 解决 get请求参数中文乱码 --><!--<charset>UTF-8</charset>--></configuration>
</plugin>

2.3、实现页面跳转

@RequestMapping("/test4")public String test4(){//页面跳转--转发return "test";}@RequestMapping("/test5")public String test5(){//重定向return "redirect:test4";}

2.4、响应正文

//响应正文//响应的一个字符串response.getWriter().writer("")@RequestMapping("/test1")@ResponseBody//响应正文public String test1(){return "hello!";}//响应的一个JavaBean使用json转换器@RequestMapping(value = "/test2",produces = "text/html;charset=UTF-8")@ResponseBodypublic Object test2(){User user = new User();user.setName("韩冰");user.setAge(18);user.setBirth(new Date());return user.toString();}//响应字节--图片@RequestMapping(value = "/test3")public void test3(HttpServletResponse response) throws Exception {FileInputStream is = new FileInputStream("D:\\照片\\壁纸\\cat.jpg");ServletOutputStream os = response.getOutputStream();IOUtils.copy(is,os);}

2.5、参数存储,存进request域对象,三种方式

@Controller
@RequestMapping("con3")
public class TestController3 {//Model@RequestMapping("/test1")public String test1(Model model){model.addAttribute("name","萧寒");return "test";}//ModelMap@RequestMapping("/test2")public String test2(ModelMap map){map.addAttribute("name","魏巍");return "test";}//ModelAndView  Model和jsp跳转的结合,返回值不是String@RequestMapping("/test3")public ModelAndView test3(ModelAndView mav){mav.addObject("name","魏文");mav.setViewName("test");return mav;}
}

SpringMvc框架及SSM框架整合相关推荐

  1. SSM Chapter 12 SpringMVC扩展和SSM框架整合

    SSM Chapter 12 SpringMVC扩展和SSM框架整合 笔记 本章目标: 掌握JSON对象的处理 理解数据转换和格式化 了解本地化 掌握Spring MVC+Spring+MyBatis ...

  2. 视频教程-spring+springMVC+mybatis(ssm框架)在线考试系统实战开发教程-Java

    spring+springMVC+mybatis(ssm框架)在线考试系统实战开发教程 软件工程硕士毕业,目前就职于上海电信研究院,有三年Java开发经验,五年PHP开发经验. 李礼强 ¥368.00 ...

  3. 简述SSH框架和SSM框架的区别

    简述SSH框架和SSM框架的区别 SSH框架是Struts+Spring+Hibernate的简称,而SSM是指的SpringMVC+Spring+MyBatis的简称.光从这两个缩写就可以看出来,如 ...

  4. 基于jsp+mysql+Spring+SpringMVC+mybatis的ssm框架个人博客系统多用户

    本系统实现个人博客的主要基本功能有主界面,用户注册,用户登录,发表文章,浏览文章,发表评论等.这里主要是区分了个人博客的注册用户和游客.注册用户,可以在任何时候写下自己的主张,记录下自己的点点滴滴.而 ...

  5. php有ssm框架吗,SSM框架-企业门户网站-1-工程构建

    刚入职一个星期,现在才有时间开始这个框架的博客,我自己接的项目,第一次拿商业项目开源,大神们可能看着会觉得这不怎么样吧,其实我上线的项目是PHP写的,我只是在这个项目的基础上,改为了SSM框架.首先构 ...

  6. Spring+Mybatis+SpringMVC+Maven+MySql(SSM框架)搭建实例

    这篇文章我们来实现使用maven构建工具来搭建Spring+Mybatis+SpringMVC+MySql的框架搭建实例.工程下载 使用maven当然得配置有关环境了,不会配置的请看我前几篇文章,都有 ...

  7. java ssm框架_Java SSM框架的简单搭建

    1.添加依赖包,可以通过properties统一框架版本 UTF-8 1.7 1.7 5.0.8.RELEASE junit junit 4.11 test javax.servlet javax.s ...

  8. (Spring+SpringMVC+MyBatis)SSM三大框架整合教程

    目录 一.基本概念 1.Spring 2.SpringMVC 3.MyBatis 二.开发环境搭建 三.Maven Web项目创建 四.SSM整合 1.Maven引入需要的JAR包 2.Spring与 ...

  9. 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)

    超详细整合SSM框架--(Spring + Spring MVC + MyBatis) SpringMVC框架--文章跳转 Spring框架--文章跳转 Mybatis框架--文章跳转 整合思路 设计 ...

最新文章

  1. 软工概论第十三周总结
  2. struts2文件下载及 param name=inputNameinputStream/param的理解
  3. (精简)Spring框架的IoC(替代工厂类实现方法)和AOP(定义规则,约定大于配置)
  4. 交易性金融资产账务处理问题及改进
  5. Python学习 Day 046 - DOM 操作 二
  6. eureka之InstanceInfo类
  7. mysql 数据表操作 存储引擎介绍
  8. 简单易用的baidutemplate模板的使用
  9. 信息学奥赛一本通(1005:地球人口承载力估计)
  10. 冲刺阶段站立会议每天任务1
  11. Exadata的独门武器--卸载(Offloading)
  12. kitkat(KRT16S)从hal层到app层写法
  13. 毛笔字软件测试简历,写字测试
  14. pytorch中的膨胀卷积
  15. Java中双冒号(::)运算操作符
  16. Android之获取地理位置
  17. vue进入页面执行的钩子函数_vue中各选项及钩子函数执行顺序详解
  18. 名悦集团:下雪天怎么保养汽车?
  19. 教程篇(6.4) 05. 集成 ❀ SD-WAN ❀ Fortinet 网络安全架构师 NSE7
  20. uniapp 小程序 加载显示激励视频广告

热门文章

  1. javahtml5健身房信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  2. 人脸识别摄像头开发板和模组选型
  3. (1)QlikView概述
  4. MBR分区,GPT分区,EFI分区,MSR分区是什么?各有什么用处?
  5. [RK3399][Android7.1] 移植笔记 --- 9.7寸eDP显示屏添加
  6. 论文参考文献格式自动生成
  7. k8s-某视频课命令问题排查了解
  8. 网站老被劫持快照被黑怎么修复解决
  9. 计算机vb里代码里的双引号,在VB中使用字符串中的左双引号
  10. Transformer Decoder