• Spring第六天


    Day06

    一、 SpringMVC介绍:主要负责前端控制的框架,主要负责页面和Servlet间的交互,SpringMVCSpring家族的一大产品,SpringSpringMVC之间可以做到无缝衔接

    回顾servlet:缺点

    1. 一个Servlet8行配置文件
    2. 一个Servlet只能处理一个业务逻辑

    addUserServletupdateUserServlet

    一张表有可能有4+nServlet 所以会有32+n行配置文件

    1. 获取属性只能得到字符串类型 需要自己转换类型
    2. 获取参数的方式只能是 request.getParamters

    SpringMVC:优点

    1. 不管工程中有多少个servlet 只需要配置一个servlet分发器即可
    2. Springmvc中使用controller替代servlet 一个controller中可以有n个业务逻辑
    3. 获取参数的类型支持自动转换,而且支持对象的自动封装
    4. Springmvc有多种获取参数的方式

     

    二、 SpringMVC的入门案例

    1. 导入jar包:把课前资料里面的jar包全部导入
    2. xml中配置DispatcherServlet 配置方式类似之前的Servlet的配置
      1. 按下 ctrl+shift+T 打开Open type 输入DispatcherServlet点进去找到类的完整名称

     

    1. 复制找到的类名

     

    配置springmvc核心配置文件

    代码:创建HelloController实现Controller接口

    SpringMVC的工作过程:当用户在浏览器中输入地址访问的时候 首先会由DispatcherServlet拦截,然后通过核心配置文件 找到响应Controller 执行Controller里面的方法

    三、 简化Controller

    1. 在配置文件中 开启包扫描,引入 mvc的约束
    2. 配置文件中添加包扫描和mvc注解开关

     

    修改Controller代码:

     

    SpringMVC的执行流程:

    补充说明:当web工程复制的时候 修改项目名称 需要改两个地方

    四、 配置资源解析器

     

    使用资源解析器后 return页面的时候只需要写文件名

     

    五、 获取页面传递过来的参数

     

     

     

    六、 快速获取参数的方式:

     

    七、 把接收到的参数 直接封装到对象中

    此种方式必须要求属性有set方法必须要有无参的构造方法

     

    引用类型的属性如果注入数据:

    需要在表单中标示出层次结构

     

    八、 中文乱码问题

    解决中文乱码需要修改两个地方:

    1. jsp页面

     

    1. web.xml中添加过滤器

     

    九、 日期问题:

    由于浏览器中的默认日期格式为2018/2/32,而代码中的日期格式为2017-2-32 需要通过下面的代码把浏览器传递过来的格式修改成 - - 的格式

     

     

    如果不修改会报以下错:

     

    十、 参数的同名提交

    如果参数名一样,接收参数时用String类型接收会把多个参数通过“,”合并成一个String,如果想接收到多个值,可以接收参数时 变量声明为数组类型

    十一、提交的参数名 和接收的变量类型名称不一致

    通过@RequestParam注解解决此问题

    DefaultValue 如果没有传递过来参数则为默认值

    Required:是必须传递此参数 如果不传 则报错

     

    十二、文件上传

    1. 表单的提交类型

     

    1. springmvc配置文件中配置文件上传解析器

     

    1. 代码接收

     

     

    十三、重定向和转发

    重定向:两次请求两次响应,不能传参,地址改变

    转发 :一次请求一次响应,可以传参,地址不变

    默认为转发,如果需要重定向 需要在返回的地址中添加redirect

  • 相关阅读:
    这两年
    Ubuntu 14.04 更新 setuptools 至 19.2 版本
    leetcode 编译问题:Line x: member access within null pointer of type 'struct TreeNode'
    C++ 将 std::string 转换为 char*
    LeetCode in action
    Ubuntu下 fatal error: Python.h: No such file or directory 解决方法
    Mac OS X 清除DNS缓存
    Mac OS X 避免产生临时文件 .DS_Store
    Mac OS X 显示和隐藏文件
    解决 ln -s 软链接产生的Too many levels of symbolic links错误
  • 原文地址:https://www.cnblogs.com/dxp5201/p/8921802.html
Copyright © 2020-2023  润新知