zoukankan      html  css  js  c++  java
  • springmvc向前台传递数据

    1) 在springmvc方法的形参中定义Map,Model,ModelMap,并在方法中通过这三个对象进行值的传递;

    ①其中Map和ModelMap使用方式是一致的;

        @RequestMapping("/detail")
        public String detail(Integer id,
                             //ModelMap modelMap
                             Map modelMap
                                 ){
            HashMap<String,String> conditions=new HashMap<>();
            conditions.put("sal","88888888");
            conditions.put("age","35");
            //todo 去数据库查询用户信息
            System.out.println("查询id为"+id+"的用户记录");
            User user=new User(id,"詹姆斯",18,"","美国克利夫兰",
                                new Role("小前锋",23),
                                conditions,
                                Arrays.asList("打篮球","打游戏"));
            //通过modelMap或map向前台传值==>request.setAttribute(key,value)
            modelMap.put("user",user);
            return "detail.jsp";
        }

    ②Model只是通过addAttribute进行传值;

    @RequestMapping("/detail")
        public String detail(Integer id,
                             Model model){
            HashMap<String,String> conditions=new HashMap<>();
            conditions.put("sal","88888888");
            conditions.put("age","35");
            //todo 去数据库查询用户信息
            System.out.println("查询id为"+id+"的用户记录");
            User user=new User(id,"詹姆斯",18,"","美国克利夫兰",
                                new Role("小前锋",23),
                                conditions,
                                Arrays.asList("打篮球","打游戏"));
            //通过Model对象传递数据
            model.addAttribute("user",user);
            return "detail.jsp";
        }

    2) 定义方法的返回值类型为ModelAndView,在方法中创建ModelAndView 并指定跳转的页面和传递的数据,最后返回ModelAndView对象;

    3) 通过注解的方式 @ModelAttribute;

    4) 在方法参数中定义Request或session对象,通过其对应的API;

    下面2),3),4)的情况都在下面的代码内;

    //演示通过ModelAndView向页面传值
    //@ModelAttribute:注解将对象传递到request域中  1)加在方法参数上,将对象传递到request域中,或向request域中取值
    //                                          2)加在方法上,将方法的返回值放入request域中
        @RequestMapping("/detail2")
        public ModelAndView detail2(Integer id, @ModelAttribute("username") String username,
                                    HttpServletRequest request,
                                    HttpSession session,
                                    HttpServletResponse response
        ){
    
            request.setAttribute("requestTest","请求域数据");
            session.setAttribute("sessionTest","session域数据");
    
            HashMap<String,String> conditions=new HashMap<>();
            conditions.put("sal","88888888");
            conditions.put("age","35");
            //todo 去数据库查询用户信息
            System.out.println("查询id为"+id+"的用户记录");
            User user=new User(id,"詹姆斯",18,"","美国克利夫兰",
                    new Role("小前锋",23),
                    conditions,
                    Arrays.asList("打篮球","打游戏"));
           //通过ModelAndView设置跳转的页面和值
            ModelAndView modelAndView=new ModelAndView();
            //向页面传值
            modelAndView.addObject("user",user);
            //指定跳转的页面  以/开头,则直接到资源根目录下找(即webapp下)
            //              不以/开头,跟在RequestMapping最后一个/后面
            modelAndView.setViewName("detail.jsp");
            return modelAndView;
        }
    //将方法返回值放入request域中 @ModelAttribute(name = "modelAttributeTest") public String test(){ return "我是@ModelAttribute的测试"; }

    detail.jsp中代码如下:

    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <html>
    <head>
        <title>用户详情页面</title>
    </head>
    <body>
    <h1>用户详细信息</h1>
    <table>
        <tr>
            <td>用户名</td>
            <td>${user.name}</td>
            <td>年龄</td>
            <td>${user.age}</td>
        </tr>
        <tr>
            <td>性别</td>
            <td>${user.sex}</td>
            <td>地址</td>
            <td>${user.addr}</td>
        </tr>
        <tr>
            <td>角色ID</td>
            <td>${user.role.id}</td>
            <td>角色名</td>
            <td>${user.role.name}</td>
        </tr>
        <tr>
            <td>条件1</td>
            <td>${user.conditions.sal}</td>
            <td>条件2</td>
            <td>${user.conditions.age}</td>
        </tr>
        <tr>
            <td>爱好</td>
            <td>${user.hobbies}</td>
        </tr>
    </table>
    获取@ModelAttribute设置的值:${username}<br/>
    获取@ModelAttribute设置的值2:${modelAttributeTest}<br/>
    获取request设置的值3:${requestTest}<br/>
    获取session设置的值4:${sessionTest}
    </body>
    </html>
  • 相关阅读:
    goland设置goproxy是参数时Environment时的设置方法
    /etc/selinux/config模式修改
    python_matplotlib_中文字体
    tmux_server_version_is_too_old
    linux_shell_生成随机整数
    newifi_D2_新3_lede_扩容overlay_装可道云
    RSA.js_公钥加密_NoPadding_golang实现_n_e_pem格式互转
    python_matplotlib_Axisartist_作图_多个Y轴共用X轴
    @JsonProperty注解使用详解
    Filter中抛出异常@RestControllerAdvice注解无法捕获的问题
  • 原文地址:https://www.cnblogs.com/xie-qi/p/12969184.html
Copyright © 2011-2022 走看看