SpringMVC学习日志四

一、回顾

  1.文件上传

    1.1引入fileupload的jar包

    1.2在springmvc的配置文件中引入CommonsMutilpartResolver文件上传解析器

    1.3在控制层在写入代码

  2.拦截器

    2.1创建一个类实现HandlerInterceptor接口

    2.2在springmvc配置文件中配置该拦截器

  3.数据校验

    3.1引入Hibernate-validatejar

    3.2在相应的实体类属性上加上校验注解

    3.3在控制层接受参数的地方加上 @Valid 如果参数不符合校验 把错误封装到BindingResult对象中

 二、restful风格

  1.请求地址http://localhost:8080/Springmvc-04/user/6

   2.控制层会根据你的请求方式调用不同的方法。

package com.zhiyou100.klb.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.zhiyou100.klb.bean.Users;

@Controller //等价于<bean class="com.zhiyou100.klb.annotation.MyController" />
@RequestMapping("user")
public class UsersController {
    //restFul ----> user/1
    //method:表示该方法处理get请求
    //1赋值给{uid}
    @RequestMapping(value="{uid}",method=RequestMethod.GET)//查询操作
    public String findById(@PathVariable("uid")int id) {
        System.out.println("=====" + id);
        /*int a = 10/0;*/ //测试异常处理
        return "index";
    }
    
    @RequestMapping(method=RequestMethod.POST)//添加操作
    public String insertUser(Users user) {
        System.out.println(user);
        return "redirect:login.jsp";
    }
    
}

  3.put及delete提交方式

    1.web.xml文件中配置过滤器.

  <!-- 把post请求转化为put和delete请求,使用——method表示真正的提交方式 -->
  <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>

    2.在控制层中

    //springmvc 提供了一个过滤器可以吧post请求转化为put和delete请求
    @RequestMapping(value="{id}",method=RequestMethod.PUT)//修改操作
    @ResponseBody
    public String update(@PathVariable int id,Users user) {
        System.out.println("id=" + id + "	" + user + "update");
        return "index";
    }

    3.页面

三、springmvc进行异常处理

  1.局部处理

@ExceptionHandler //当该类中发生异常时会由该方法来处理,局部处理
    public ModelAndView error(Exception e) {
        ModelAndView mv = new ModelAndView();
        mv.addObject("error", e);
        mv.setViewName("error");
        return mv;
    }

  2.定义一个全局异常类

package com.zhiyou100.klb.controller;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

@ControllerAdvice
public class ErrorController {

    @ExceptionHandler //当该类中发生异常时会由该方法来处理,全局处理
    public ModelAndView error(Exception e) {
        ModelAndView mv = new ModelAndView();
        mv.addObject("error", e);
        mv.setViewName("error");
        return mv;
    }
}

四、Springmvc:常用注解

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

 @RequestMappint: 标注请求的地址

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

 @Valid: 标注校验该数据

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

 @SessionAttributes:将数据保存在会话中

@RequestParam:设置参数名

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

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

@InitBinder: 处理日期时间参数

原文地址:https://www.cnblogs.com/kklb/p/11469487.html