SpringMVC注解配置

来源:互联网 发布:淘宝详情页英文素材 编辑:程序博客网 时间:2024/05/17 23:37
@RequestMapping(...)
  • 第一个参数value="请求路径的映射地址"
  • 第二个参数method[]他是一个数组,里面是枚举类型,RequestMethod.GET,RequestMethod.POST
@Controller的三种返回值类型
  • 可以返回ModelAndView---->方法返回前创建ModelAndView,并把Model和View分别进行设置---addObject(),setViewName()
  • 可以返回String----->返回逻辑试图名,JSP真正的路径=前缀+逻辑视图名+后缀
     方法形参参数需要传入model。---->通过形参中的model将数据返回页面
     public String A(Model model---->这个是前台所需要的model数据){
        model.setAttribute("arg",arg);
        return “逻辑视图名”;
        //重定向,和servlert中的一样,request会被重新创建,所以不能共享数据
        //return "redirect xxx.action"; 
    }


   forward:
   public String A(HttpServletRequest requset){
        request.getParameter("id");
        return “逻辑视图名”;
        //转发,和servlert中的一样,request共享数据
        //return "forward xxx.action"; 
    }

  • 可以返回Void
    public void A(
HttpServletRequest requset,
HttpServletResponse response){
         //页面转发    
        request.getRequestDispatcher("页面路径").forward(request,response);
        //页面重定向
        response.sendRedirect("url");
        //也可以通过response指定响应结果,列入json
        response.setCharacterEncoding("utf-8");
        response.getWriter().write("json串");
    }



springMVC提供了很多默认转换器
HttpServletRequest/HttpServletResponse/HttpSession/Model/ModelMap
Model是接口,ModelMap是实现类,一般用ModelMap



@RequestParam对简单类型的参数进行绑定
要求request传入参数的名称和controller方法的形参名称一致,方可绑定成功
参数:
  • @RequestParam(value ='id"--->前台的id)  Integer ItemId
  •     require=“表示必须传入"
  •     defaultValue="设置默认值";
绑定POJO:
页面中input 中的 name和controller方法(形参)的pojo属性名一致



自定义参数绑定:
<mvc:annotation-driver conversion-service="conversionService"></mvc:annotation-driver>
<!--自定义参数绑定>
<bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!--这里面写自己定义的参数转换绑定器-->
<property>
    <list>
        <bean class="com.syoka.xxx.xxx"/> <!--日期类型转换-->
        <bean class="com.syoka.xxx.xxx"/> <!--字符串类型转换-->
    </list>
</property>
</bean>

下面是具体的实现类:
public class Customer implements Converter<String,Date>{
    public <T> convert(String source){
      //  DateFormatUtils.format(DateUtils.toCalendar(new Date()), "yyyy-MM-dd HH:mm:ss")//调用apache的工具
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try{
            return format.parse(source);
        }catch(ParseException e){
            e.printStackTrace();
        }
            return null; //参数绑定失败
    }
}





json交互:

  • 请求的是json串--->@RequestBody------>将JAVA对象变为json串--->@ResponseBody---->将JAVA对象变为json串
  • 请求的是key/value串--->不需要@RequestBody------>将JAVA对象变为json串--->@ResponseBody---->将JAVA对象变为json串
    最终输出的都是json串


    第一种方法:
    @Controller    
    public class JsonTest{
        //requestBody   responseBody看上面
        @RequestMapping("/requestJson"){
        public @ResponseBody User requestJson(@RequestBody User user){ //@RequestBody将json转为对象
                return user;  //对象转换为json
        }
    }   
     


Rest格式:

url模版映射
@RequestMapping("/users/{id}")  //{xx}是占位符    
    //通过@PathVariable来获得参数
    //     /users/{id}里面的{id}表示将这个位置的参数传到@PathVariable指定名称
   public @ResponseBody User users(@PathVariable("id") Integer id){
  }

0 0