zoukankan      html  css  js  c++  java
  • SpringMVC参数绑定总结

    springMvc作用:
        a) 接收请求中的参数
        b) 将处理好的数据返回给页面
    参数绑定(就是从请求中接收参数):
        a) 默认支持的类型: request, response, session, model
            可以在接收参数时加上也可以去掉, 看自己需要
        b) 简单类型: string, double,integer, long, boolean等
            要求: 要求页面上input框的name属性值必须等于接收时的变量名称
        c) pojo类型:
            要求: 要求页面上input框的name属性值必须等于pojo中的属性名称
        d) QueryVo:
            要求: 页面上input框的name属性值必须等于vo中的属性.属性.属性....
        e) converter转换器:
            可以转换类型, 对于像字符串转日期这样springMvc不能进行自动类型转换的,我们可以自己写.

    高级参数绑定(从请求中接收参数)
        1. 数组:
            需求: 批量删除
            要求:要求页面上input框的name属性值必须等于vo中的属性名称
        2. list:
            需求: 批量修改
            要求: 页面上input框的name属性值必须
                等于vo中的itemsList+[索引下标]+.list中泛型的属性名称

    @RequestMapping用法:
        1. 用在方法上: @RequestMapping标记url到请求方法的映射
        2. 用在类上: 窄化请求映射
        3. 限制请求方式的类型: 如果限制的请求类型, 而访问的类型不匹配会报405错误
            @RequestMapping(value="/list", method=RequestMethod.POST)
            public ModelAndView list123() throws Exception{

    controller方法返回值:
        1. ModelAndView :可以将返回给页面的数据放入model中, 通过view来指定页面的路径
        2. String :(推荐使用)
            a) 返回普通字符串就认为是页面的路径, 可以借助默认支持的参数Model将数据返回给页面
            b) 请求转发: 浏览器中url不发生改变, request域中的数据可以带到转发后的方法中
                springMvc中请求转发, 返回以forward:字符串开头后面跟转发的url路径
                request.setAttribute("id", items.getId());
                model.addAttribute("id", items.getId());
                return "forward:toEdit.action";

            c) 重定向: 浏览器中url发生改变, request域中的数据不可以带到重定向后的方法中
                springMvc中重定向,返回以redirect:字符串开头, 后面跟重定向的url路径
                不管是请求转发还是重定向, model中的数据都可以带到请求转发或者是重定向后的方法中
                request.setAttribute("id", items.getId());
                model.addAttribute("id", items.getId());
                return "redirect:toEdit.action";

            相对路径和绝对路径问题:
                相对路径: url中相对于当前路径
                forward:或者是redirect:字符串后不以斜杠/开头的
                绝对路径: url中从项目名后开始算
                forward:或者是redirect:字符串后以斜杠/开头的
                一般在当前类方法的目录中跳转使用相对路径,
                如果跳转到其它类的方法中使用绝对路径
        3. void:
        //推荐ajax的时候使用, 其它时候一般不推荐使用
        //如果controller方法返回值为void, 还想跳转到页面就需要使用原生的request和response,这样就破坏了springMvc
        //的体系结构, 就不走视图解析器, 所以需要写页面的完整的路径,






    Springmvc中异常处理(架构级别的异常处理)
        异常分类:
            a) 运行时异常   就是bug
            b) 自定义异常    可以自己定义一些业务级别异常

    图片上传:
        springMvc有上传的接口, 但是没有实现, 所以需要第三方实现


    json数据交互:
        springMvc中有对json的支持的接口但是没有实现, 所以需要第三方的实现, 比如 jackson杰克逊的jar包
        @RequestBody可以将json格式的字符串自动转换成java中的对象, 要求json中的key必须等于pojo中的属性名称
        @ResponseBody可以将返回的java对象自动转换成json格式字符串返回给页面


    Springmvc实现Restful
        就是对url的一个命名规范, 最早出自于一个博士的论文,后来一些大企业看到后逐渐推广开.
        要求: url中只有名词没有动词(一般国人英文水平不太好,所以不强制要求), 不能有问号传参数
        提交数据路径: ${pageContext.request.contextPath }/items/toEdit/${item.id}
        controller中接收:
            @RequestMapping("/toEdit/{id}")
            public String toEdit123(@PathVariable("id")Integer id,
        
    拦截器:
        作用: 拦截请求, 一般做登录权限验证使用比较多
        单个拦截器执行顺序:
            ===Interceptor1====preHandle==
            ===Interceptor1====postHandle==
            ===Interceptor1====afterCompletion==

        多个拦截器的执行顺序: 等于springMvc.xml文件中对拦截的配置顺序



    作业: 用户登录权限验证
    登录页面: 用户名, 密码框, 登录按钮
    登录controller:
        a) 跳转到登录页面方法
        b) 登录的用户名密码提交到此方法进行验证, 如果登录成功, 将登录信息写入session, 并跳转到首页
            如果没有登录成功,则跳转到登录页面重新进行登录
    拦截器: 拦截所有请求
        放行登录controller中的所有方法
        判断session中是否有用户的登录信息
        如果有则放行, 如果没有跳转到登录页面进行登录
        
        



  • 相关阅读:
    nginx 配置优化(简单)
    Nginx 安装
    Smokeping安装教程
    test [ ] 四类
    if语句中的判断条件(nginx)
    力扣 1431. 拥有最多糖果的孩子 python
    力扣 1672. 最富有客户的资产总量+1512. 好数对的数目 python
    力扣 剑指 Offer 58
    力扣 8. 字符串转换整数 (atoi)python--每日一题
    力扣 7. 整数反转python 每日一题
  • 原文地址:https://www.cnblogs.com/livensummer/p/6494612.html
Copyright © 2011-2022 走看看