• springMVC日记(四)


    一、restful风格

      1.每一个uri代表一种资源

      2.客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

      3.通过操作资源的表现形式来操作资源;
      4.资源的表现形式是XML或者HTML;
      5.客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
    它只能在增删改查中各使用一种具体操作,多于一种只能在访问地址上暴露key值
    一个demo对user(id,name,pw,tel)进行restful风格的CRUD操作,(进入dispatcher的地址格式为*.do)
    /*restful  -->user/1.do
    method:表示该方法处理get请求
    1赋值给{id}
    @PathVariable 如果该参数与{id}名不同(假设为uid),则使用@PathVariable("uid")
      */
    @RequestMapping(value="{id}",method=RequestMethod.GET)//表明其不是路径而是参数 public String selectById(@PathVariable int id) {//。表明这是路径变量 System.out.println("selectByName==="+id); return "main"; }

    /user/.do增添。restful风格和.do后缀的jsp配合有问题,这里必须加.do,否则会报无法使用post请求错误

    @RequestMapping(value=".do",method=RequestMethod.POST)
        public String insert(User user) {
            System.out.println(user);
            return "main";
        }

    put和delete方式需要web.xml中配置过滤器

    <filter>
            <filter-name>hiddenHttpMethodFilter</filter-name>
            <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>hiddenHttpMethodFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    在请求中,需要在数据中加一条  _method:"put"("delete")将post方式转化为put或delete

    /user/1.do 修改,这里value值不能加.do

    @RequestMapping(value="{id}",method=RequestMethod.PUT)
        @ResponseBody//将结果以内容形式返回,put是ajax才有的请求方式,必须加上
        public String update(@PathVariable Integer id, User user) {
            System.out.println(user+"根据"+id);
            return "main";
        }

    /user/1.do ,这里value值也不能加 .do

    @RequestMapping(value= "{id}",method=RequestMethod.DELETE)
        @ResponseBody
        public String delete(@PathVariable Integer id) {
            System.out.println("删除id"+id);
            return "main";
        }

    二、springmvc异常处理

    现使用注解@ExceptionHandler

      1.controller类中添加方法

    @ExceptionHandler
        public ModelAndView error(Exception exception) {
            ModelAndView mv=new ModelAndView();
            mv.addObject("error", exception.getMessage());
            mv.setViewName("error");
            System.out.println("局部处理异常");
            return mv;
        }

      2.新增一个controller类,加全局注解

    @ControllerAdvice
    public class ExceptionController {
        @ExceptionHandler
        public ModelAndView error(Exception exception) {
            ModelAndView mv=new ModelAndView("error");
            mv.addObject("error", exception.getMessage());
            return mv;
        }
    }

    exception一旦捕获到异常则转入该方法,收集异常信息并转发到异常页面。但是ajax方式请求发生异常时不会跳转到错误页面,(异常本身也不会暴露在浏览器)

     三、springmvc常见的注解

     @Controller : 标注该类为控制层类。

     @RequestMappint: 标注请求的地址

     @ResponseBody: 把java对象转化为json对象。

     @Valid: 标注校验该数据

     @PathVariable: 接受uri地址的值赋给方法的参数

     @SessionAttributes:设置其name中的key值默认保存到session域

    @RequestParam:value 请求参数的参数名,作为参数映射名称;required 该参数是否必填;defaultValue 设置请求参数的默认值

    @ControllerAdvice: 标注一个类为异常处理类

    @ExceptionHandler: 标注一个方法为异常处理的方法。

    @InitBinder: 处理日期时间参数

  • 相关阅读:
    vue截取video视频中的某一帧
    sm加密前端解析--JS实现国密算法SM2加密
    前端js解析识别图片二维码
    如果让你来设计一个分页功能, 你会怎么设计? 前后端如何交互?
    jQuery事件
    如何实现文件上传?说说你的思路
    实现JWT鉴权机制
    对中间件概念的理解,如何封装 node 中间件
    Node 文件查找的优先级以及 Require 方法的文件查找策略
    angularjs input使用ng-model双向绑定无效bug解决
  • 原文地址:https://www.cnblogs.com/psxfd4/p/11470583.html
Copyright © 2020-2023  润新知