SpringMVC: ------ 基础、ssm整合步骤

一、引言

springMVC是Spring中的一个子框架。

spring是轻量级的项目管理的框架,对开发中的组件(action/service/dao/事件)进行统一管理。

springMVC是典型的MVC框架,和struts2类型,提供了新的控制器Controller 对 替换原控制器。
功能、地位和struts2都等同。
springMVC控制器的主要功能:
	1. 收参
	2. 调用业务类的方法,实现“”功能 
	3. 跳转
好处:轻量级、和spring的整合方便。

二、环境搭建

​		[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TrTmgCuE-1594604478094)(.\assets\1560754066951.png)]

三、第一个程序

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIjwTTOn-1594604478106)(.\assets\1560744542635.png)]

四、@RequestMapping注解

有两种用法:

1. 修饰类
   作用:相当于struts2的namespace.
   语法:@RequestMapping("/first")

2. 修饰方法
   作用:相当于struts2中的actionanme,代表该 方法的访问路径
   语法:@RequestMapping("/bank")

定义在类和方法上以后,的访问路径:http://ip:port/web应用名/namespace/方法的访问路径

	注意:该注解 至少 要在方法上使用。

五、使用ServletAPI收参

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SCFX6J03-1594604478108)(.\assets\1560755167506.png)]

六、跳转方式

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0z8MJxva-1594604478109)(.\assets\1560756085823.png)]

七、SpringMVC的收参

问题:还能象struts2中一样 使用成员变量收参? 不能。原因:springmvc的控制器是单例的!

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B1AKPAUj-1594604478111)(.\assets\1560757621238.png)]

解决方案:使用 Controller类 方法的参数列表 进行收参。原因:方法的参数 相当于局部变量。

具体的使用形式:1.零散形式 2.对象形式 3.数组形式 4.集合形式

  1. 零散形式

    查1个,删除,修改-查

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N0pqGLZX-1594604478112)(.\assets\1560758524319.png)]

  2. 对象形式

    添加,修改-存

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1DZtUd7l-1594604478115)(.\assets\1560759162759.png)]

  3. 数组形式

    使用场景:常用于收集复选框的值。

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i07suJf6-1594604478115)(.\assets\1560759632885.png)]

  4. 集合形式

    使用场景:常用于收集复选框的值。

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ON0fPUyT-1594604478116)(.\assets\1560759984577.png)]

八、中文乱码

struts2中 对于post方式请求中的UTF-8进行了自动乱码的解决。

springMVC对post方式的中文乱码,也提供了解决方案,使用CharacterEncodingFilter(在web.xml进行配置即可)。

 <!--中文乱码问题-->
  <filter>
    <filter-name>ch</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>ch</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

九、日期格式

spring和springMVC中的日期默认格式 2011/1/2。

修改输入时的日期格式,在Controller收参时 需要在对应的参数前(实体的日期属性上) 增加注解@DateTimeFormat(pattern=“yyyy-MM-dd”)
在这里插入图片描述

十、传递数据

struts2的action使用成员变量(request作用域) 传递数据。

springMVC中传递数据,有3种方式(适用 请求转发 传递数据):

  1. ServletAPI request.setAttribute(“str”, obj);
  2. Model接口 model.addAttribute(“str”, obj); 往request作用域中存值
  3. ModelMap抽象类 modelMap.addAttribute(“str”, obj); 往request作用域中存值

重定向传递数递,使用HttpSession作用域。

十一、SSM整合

注意:spring springMVC,各自管理自己的组件,不要重复管理组件。

​ spring 管理service/dao/事务/… 注解包扫描 com.baizhi.service

​ springMVC 只管理Controller com.baizhi.controller

11.1 环境搭建

  1. 导jar

    spring相关 9个, springMVC相关 1个, mybatis相关(core/驱动/log4j) 3个, 连接池 1个

    mybatis_spring整合jar 1个 , javaEE相关 3个

  2. 配置文件 (3个)

    web.xml (4项)

    ​ spring.xml位置

    ​ springMVC的post方式中文乱码

    ​ spring的web工厂

    ​ springMVC的前端控制器

    springMVC.xml (4项)

    ​ 注解包扫描 com.baizhi.controller

    ​ 请求处理器

    ​ 视图解析器

    ​ 静态资源可访问

    spring.xml (7项)

    ​ 注解包扫描 com.baizhi.service

    ​ 引小配置文件

    ​ 数据源

    ​ SqlSessionFactory

    ​ DAO

    ​ 事务管理器

    ​ 事务注解生效

11.2 父子容器污染的解决

注意:spring springMVC,各自管理自己的组件,不要重复管理组件。否则会带来父子容器的污染。

解决方案:

十一、静态资源访问的解决

在springmvc.xml中,增加标签 mvc:default-servlet-handler

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KI40gMpT-1594604478121)(.\assets\1560826498781.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值