Spring MVC 控制层处理各种参数

package com.bob.analyst.admin.controller;

import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

import com.bob.analyst.admin.aop.Role;

@Controller
@RequestMapping("/parmas")
public class ParamsController {

    /**
     * 通过参数名称和HTTP请求参数的名称保持一致来获取参数,如果不一致没法获取到,这样的方式允许参数为空
     * @param roleName 角色名称
     * @param note  备注
     * @return 到index视图
     */
    @RequestMapping("/commonParams")
    public  ModelAndView ModeAndViewcommonParams(String roleName,String note){
        System.out.println(".......roleName:"+roleName);
        System.out.println(".......note:"+note);
        ModelAndView mv=new ModelAndView();
        mv.setViewName("index");
        return mv;
    }

    /**
     * 通过POJO的属性也要和HTTP请求参数名称保持一致
     * @param role
     * @return
     */
    @RequestMapping("/commonParamPojo")
    public ModelAndView ModeAndViewcommonParamPojo(Role role){
        System.out.println(".......roleName:"+role.getRoleName());
        System.out.println(".......note:"+role.getNote());
        ModelAndView mv=new ModelAndView();
        mv.setViewName("index");
        return mv;
    }

    /**
     * 通过注解@RequestParam 把 roleName改为 role_name,默认被此注解的参数是不能为空,否则系统抛出异常
     * 可以@RequestParam(value="role_name",required=false)这样就可以为空
     * @param roleName 使用 @RequestParam("role_name") 指定映射HTTP参数名称
     * @param note
     * @return
     */
    @RequestMapping("/requestParam")
    public ModelAndView ModeAndViewrequestParam(@RequestParam("role_name") String roleName,String note){
        System.out.println(".......roleName:"+roleName);
        System.out.println(".......note:"+note);
        ModelAndView mv=new ModelAndView();
        mv.setViewName("index");
        return mv;
    }

    /**
     * {id}:代表接受一个参数,可以为空
     * @PathVariable:表示从URL地址中获取参数
     * @param id 
     * @return Json视图
     */
    @RequestMapping("/getRole/{id}")
    public ModelAndView ModeAndViewpathVariable(@PathVariable("id") Long id){
        System.out.println(".......id:"+id);
        ModelAndView mv=new ModelAndView();
        //绑定数据模型
        mv.addObject("放查询出来的对象");

        //设置为Json视图
        mv.setView(new MappingJackson2JsonView());
        return mv;
    }

    /**
     * @RequestBody:表示要求Spring MVC将传递过来的JSON数组数据转换为对应的Java集合类型
     * @param role
     * @return
     */
    @RequestMapping("/findRoles")
    public ModelAndView ModeAndViewfindRoles(@RequestBody Role role){
        System.out.println(".......id:"+role.getRoleName());
        System.out.println(".......Limit:"+role.getPageParams().getLimit());

        ModelAndView mv=new ModelAndView();

        //绑定数据模型
        mv.addObject("放查询出来的对象");

        //设置为Json视图
        mv.setView(new MappingJackson2JsonView());
        return mv;
    }


    /**
     * @RequestBody:表示要求Spring MVC将传递过来的JSON数组数据,转换为对应的Java集合类型
     * @param idList
     * @return
     */
    @RequestMapping("/deleteRoles")
    public ModelAndView deleteRoles(@RequestBody List<Long> idList){
        System.out.println(".......idList:"+idList);

        ModelAndView mv=new ModelAndView();
        //绑定数据模型
        mv.addObject("放查询出来的对象");
        //设置为Json视图
        mv.setView(new MappingJackson2JsonView());
        return mv;
    }


    /**
     * 通过表单序列化,就是将表单数据转换为字符串后传递给后台,
     * 后台得到的数据就是字符串的形式:roleName=xxxxx&&note=xxx
     * @param roleName
     * @param note
     * @return
     */
    @RequestMapping("/commonParamPojo2")
    public ModelAndView ModeAndViewcommonParamPojo2(String roleName,String note){
        System.out.println(".......roleName:"+roleName);
        System.out.println(".......note:"+note);
        ModelAndView mv=new ModelAndView();
        //绑定数据模型
        mv.addObject("放查询出来的对象");
        //设置为Json视图
        mv.setView(new MappingJackson2JsonView());
        return mv;
    }



    /**
     * Spring MVC有一个约定,当返回的字符串带有 redirect的时候,它就会认为需要的是一个重定向,也可以通过视图来实现
     * Model model 换成 ModelAndView mv
     * mv.setViewName("redirect:./showRoleJsonInfo.do")
     * @param model 为重定向数据模型,Spring MVC会自动初始化它
     * @param roleName
     * @param note
     * @return
     */
    @RequestMapping("/addRole")
    public String addRole(Model model,String roleName,String note){
        Role role = new Role();
        //保存 ...省略

        //绑定重定向数据模型
        model.addAttribute("releName",roleName);
        model.addAttribute("note",note);
        model.addAttribute("id",role.getId());
        return "redirect:./showRoleJsonInfo.do";
    }

    //Model 为重定向数据模型,Spring MVC会自动初始化它
    @RequestMapping("/showRoleJsonInfo")
    public  ModelAndView ModeAndViewshowRoleJsonInfo(Long id,String roleName,String note){
        ModelAndView mv=new ModelAndView();
        mv.setView(new MappingJackson2JsonView());
        mv.addObject("id",id);
        mv.addObject("roleName",roleName);
        mv.addObject("note",note);
        return mv;
    }


    @RequestMapping("/showRoleJsonInfo2")
    public  ModelAndView ModeAndViewshowRoleJsonInfo2(Role role){
        ModelAndView mv=new ModelAndView();
        mv.setView(new MappingJackson2JsonView());
        mv.addObject("role",role);
        return mv;
    }

    /**
     * URL在重定向的过程中,并不能有效传递对象,因为HTTP的重定向参数是以字符串传递的。
     * 通过flash就可以重定向对象
     * @param ra 数据模型
     * @param role 对象
     * @return 重定向showRoleJsonInfo2
     */
    public String addRole3(RedirectAttributes ra,Role role){
        //保存逻辑
        ra.addFlashAttribute("role", role);
        return "redirect:./showRoleJsonInfo2.do";
    }

}
 var data={
        roleName:'role',
        note:'note',
        pageParams:{
            start:1,
            limit:20
        }
    }
    $.post({
        url:"./params/findRoles.do",
        contentType:"application/json",
        data:JSON.stringify(data),
        success:function(result){
            //do something
        }
    })
var idList = [1,2,3];
    $.post({
        url:"./params/deleteRoles.do",
        data:JSON.stringify(idList),
        contentType:"application/json",
        success:function(result){
            //do something
        }
    })
 $.post({
        url:"./params/commonParamPojo2.do",
        //将form数据序列化,传递给后台,则将数据以roleName=xxx&&note=xxx
        data:$("form").serialize(),
        contentType:"application/json",
        success:function(result){
            //do something
        }
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值