springMVC页面参数的接收

来源:互联网 发布:泰迪罗宾地位知乎 编辑:程序博客网 时间:2024/05/21 08:04

springMVC (中)

1.获取servlet内置对象

@RequestMapping("scope")@Controller    public class ControllerTwo {@RequestMapping(value="inlay",method={RequestMethod.POST,RequestMethod.GET})public String demo01(        HttpServletRequest request,        HttpServletResponse response,        HttpSession session,        Model model        ){    model.addAttribute("msg1","request:"+request);    model.addAttribute("msg2","response:"+response);    model.addAttribute("msg3","session:"+session);    return "inlay";}}

2.接收表单提交的数据

//接受表单提交的基本类型的数据@RequestMapping(value="show")public void demo03(        @RequestParam("name") String name,        @RequestParam("age") Integer age,        @RequestParam("income") Double income,        @RequestParam("isMarried") Boolean isMarried,        @RequestParam("interests") String [] interests        ){    System.out.println(name);    System.out.println(income);    System.out.println(isMarried);    System.out.println(interests.length);   }

3.@PathVariable 和 @RequestParam的区别?

@PathVariable : 必须要传递的参数,在路径中指定

@RequestParam : 专门用来接收form表单提交的name属性的值,和分页查询(在@RequestMapping中的params属性中还可以指定只可以接收和拒收的具体参数)
@RequestParam(value=”pageNum”,defaultValue=”1”@RequestParam(value=”pageSize”,defaultValue=”10”)用来指定分页时用户没有传参时,默认页面为1,每页条数为10

4,获取cookie中数据

@RequestMapping(value=”cookie”)

public String demo06(@CookieValue("JSESSIONID") String cookie){    System.out.println(cookie);    return "pojo";}

5.从页面接收List的集合

如果在Controller的方法参数上定义ListUser(自定义类)类型,那么标签的name属性对应的就是该类中的某个属性

6.接收和发送json格式对象

//发送json对象@RequestMapping(value="rsJson")@ResponseBodypublic User demo07(){    User user = new User();    user.setId(1l);    user.setCreated(new Date(System.currentTimeMillis()));    user.setAge(13);    user.setName("lili");    user.setPassword("123");    user.setSex(1);    user.setusername("liyu");    return user;}

页面接收的json数据对象 ,从页面发送到Controller方法:
{“id”:1,”username”:”liyu”,”password”:”123”,”name”:”lili”,”age”:13,”sex”:1,”birthday”:null,”created”:”2017-09-11”,”updated”:null}

//接收一个json格式的对象@RequestMapping(value="rqJson")public String demo08(@RequestBody User user,Model m){    m.addAttribute("message",user);     return "index";}

7.SpringMVC的文件上传

1.导入依赖
<!-- 文件上传的依赖 -->    <dependency>        <groupId>commons-fileupload</groupId>        <artifactId>commons-fileupload</artifactId>        <version>1.3.1</version>    </dependency>
2.在springmvc-servlet.xml核心配置文件中添加
<!-- 定义文件上传解析器 --><bean id="multipartResolver"    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <!-- 设定默认编码 -->    <property name="defaultEncoding" value="UTF-8"></property>    <!-- 设定文件上传的最大值5MB,5*1024*1024 -->    <property name="maxUploadSize" value="5242880"></property></bean>
3.编写Controller控制器
@Controller@RequestMapping("upload")public class UploadDemo {//文件上传@RequestMapping(value = "demo")// 通过参数:MultipartFile file来接收上传的文件,这个是SpringMVC中定义的类,会被自动注入public ModelAndView upload(@RequestParam("file") MultipartFile file) throws Exception {    ModelAndView mv = new ModelAndView("index");    if(file != null){        // 将上传得到的文件 转移到指定文件。        file.transferTo(new File("D:/" + file.getOriginalFilename()));    }    mv.addObject("message", "上传成功!" + file.getOriginalFilename());    return mv;}}

8.自定义拦截器

  1. 拦截器的前置方法顺序执行,如果返回true,继续。返回false,流程终止,执行前面所有返回true的拦截器的完成方法

  2. 拦截器的后置方法倒序执行,在Controller执行结束后,视图解析前执行。

  3. 拦截器的完成后方法倒序执行,在视图解析后执行。无论前面是否出错或返回false,已经执行过的拦截器的完成方法都会被执行,类似于finally

9.SpringMVC和Struts的区别

  1. springMVC的入口是Servlet,struts2的入口是Filter两者的实现机制不同
  2. springMVC基于方法的设计,传递参数是通过方法的形参,其实现是单例模式(也可以改为多例,推荐用单例),struts2基于类设计,传递参数是通过类的属性,只能是多例实现,性能上SpringMVC更高一些.
  3. 参数传递方面,struts2使用类的属性接收的,也就是在多个方法间的共享,SpringMVC基于方法,多个方法之间是不能共享的.SpringMVC的耦合性相对来说较低