zoukankan      html  css  js  c++  java
  • 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: 处理日期时间参数

  • 相关阅读:
    Effective Java 19 Use interfaces only to define types
    Effective Java 18 Prefer interfaces to abstract classes
    Effective Java 17 Design and document for inheritance or else prohibit it
    Effective Java 16 Favor composition over inheritance
    Effective Java 15 Minimize mutability
    Effective Java 14 In public classes, use accessor methods, not public fields
    Effective Java 13 Minimize the accessibility of classes and members
    Effective Java 12 Consider implementing Comparable
    sencha touch SortableList 的使用
    sencha touch dataview 中添加 button 等复杂布局并添加监听事件
  • 原文地址:https://www.cnblogs.com/psxfd4/p/11470583.html
Copyright © 2011-2022 走看看