zoukankan      html  css  js  c++  java
  • Spring MVC控制器方法参数类型

    HttpServletRequest

     Spring会自动将 Servlet API 作为参数传过来

    HttpServletResponse
    InputStream

    相当于request.getInputStream() 获取请求区内容字节流

    OutputStream

    相当于request.getOutputStream() 获取响应区内容字节流

    Reader

    request.getReader()

    Writer

    request.getWriter()

    注意InputStream/OutputStream不能与Reader/Writer混用

    WebRequest

    提供了统一的访问请求数据的接口(参数区、请求头区,但不能访问Cookie区)

    NativeWebRequest

    继承WebRequest,提供本地Servelt API 

    webRequest.getParameter(“test”)

    webRequest.setAttribute(“key”,”value”,WebRequest.SCOPE_REQUEST);作用域范围

    webRequest.getAttribute(“key”,WebRequest.SCOPE_REQUEST)

    request = nativeWebRequest.getNativeRequest(HttpServletRequest.class)

    response = nativeWebRequest.getNativeResponse(HttpServletResponse.class)

    HttpSession

       Spring MVC自动将Servlet API的session传递过来

    命令对象

      就是带有setter方法的普通类,用于接收表单参数

    Map map, Model model, ModelMap modelMap
    这三个参数能够暴露控制器中的模型,用于页面的数据渲染

        @RequestMapping("exposeModelData.do")
        public String testExposeModelData(Map<String,String> map, Model model, ModelMap modelMap){
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
            Date date = new Date();
            map.put("key1","value1"+dateFormat.format(date));
            model.addAttribute("key2","value2"+dateFormat.format(date));
            modelMap.addAttribute("key3","value3"+dateFormat.format(date));
            return "exposeModelData";
        }
        <table>
            <thead><h2>显示控制器暴露的模型数据</h2></thead>
            <tbody>
                <tr>
                    <td>Map</td>
                    <td><c:out value="${key1}"/></td>
                </tr>
                <tr>
                    <td>Model</td>
                    <td><c:out value="${key2}"/></td>
                </tr>
                <tr>
                    <td>ModelMap</td>
                    <td><c:out value="${key3}"/></td>
                </tr>
            </tbody>
        </table>

    页面上可以这样获取数据

    其实,Map、Model、ModelMap三者是同一个对象,都是 BindingAwareModelMap 的实例

    Errors

    错误对象,建议错误对象紧跟在命令对象后(这点在Spring3.1之前是强制规定)

    Locale

    本地对象,等价于 ServletRequest.getLocale

    @RequestParam注解过的对象

    如 @RequestParam String username,则自动从请求中获取参数名为username的值,也可以指定参数名,@RequestParam("username"),也可以指定是否必须?默认值是多少?

    @RequestParam(value = "pageName",required = true,defaultValue = "testModelValueUI")

    默认值除了可以是具体的值外,也可以是SpEL表达式。如  #{systemProperties['java.vm.version']}

    如果请求中包含了同名参数,则一般使用数组或列表来接收

                        <td><input type="checkbox" name="cbx" value="1"/></td>
                        <td><input type="checkbox" name="cbx" value="2"/></td>
                        <td><input type="checkbox" name="cbx" value="3"/></td>
                        <td><input type="checkbox" name="cbx" value="4"/></td>
                        <td><input type="checkbox" name="cbx" value="5"/></td>
                        <td><input type="checkbox" name="cbx" value="6"/></td>
        @RequestMapping("testRequestParam.do")
        public String testRequestParam(@RequestParam String[] cbx){
            for (String cb:cbx) System.out.println(cb);
            return "requestParam";
        }

    @ModelAttribute 放在处理请求的方法参数上,绑定的命令对象

    如果将 @ModelAttribute 添加到了方法上(不是参数位置),则暴露返回对象用于页面渲染(注意,这个方法不是功能方法,应该是被Controller调用的方法(我觉得这没啥用))

    如果将 @ModelAttribute 放在了返回值上,则暴露返回值给页面

    @SessionAttribute 绑定命令对象到session,一般用于多个页面的连续请求

    @Value注解,用于将一个SpEL表达式的值绑定到处理方法参数上

    @Value("#{systemProperties[java.vm.version]}")

  • 相关阅读:
    编译安装
    yum history使用详解(某次为解决误卸载软件的回退实验)
    centos7了解
    码云仓库中获取单个文件的超链接
    常用软件及安装目录有链接的
    rsync备份服务器部署详情
    snmpwalk命令详解
    vmware迁移虚拟机
    ngrinder脚本请求头中添加cookie后仍报未登录或者401错误问题解决
    python多进程和多线程效率比较,ProcessPoolExecutor,ThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/sherrykid/p/5789832.html
Copyright © 2011-2022 走看看