向前端jsp页面传值的四种方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wrs120/article/details/80459223

一.通过HttpServletRequest内置对象传值

1.格式:request.setAttribute(“user”,user)
2.取值方法:

  • jsp写脚本:<%User user=(User) request.getAttribute(“user”)%>或<%= request.getAttribute(“user.name”)%>
  • EL表达式:${ user.name },代替java表达式,这样写使jsp更简单
  • Struts标签:如 (获取上下文中的属性值,格式为<s:property value="#request.属性名" />,范围前一定要加#,如果是action中的值,不用写#,直接取即可<s:property value="user.name" />)

request只有在转发页面中才能获取设置的user对象的值(springMVC返回逻辑视图,默认使用的转发机制来跳转的),user对象保存在request作用域中


二.通过HttpSession内置对象传值

1.格式:session.setAttribute(“user”,user)
2.取值方法:

  • jsp写脚本:<%=session.getAttribute(“user.name”)%>或在java类中直接用session.getAttribute(“user.name”)
  • EL表达式:${ user.name },代替java表达式,这样写使jsp更简单
  • Struts标签:如 (获取上下文中的属性值,格式为<s:property value="#request.属性名" />,范围前一定要加#,如果是action中的值,不用写#,直接取即可<s:property value="user.name" />)

session相当于全局的变量,只要工程启动,只用session不过期,在任何地方都能取得,user对象保存在sessin作用域中,session默认的过期时间是30分钟,过期无效,可以去修改这个值


三.springMVC中使用Model或ModelMap传值

1.格式:

public String showItemInfo(@PathVariable Long itemId,Model model){
    User user= new User();
        ...
    model.addAttribute("user", user);
    return "login";
}

Model是接口,ModelMap是类,ModelMap实现了Model接口,所以用Model和ModelMap传值使用方法一样,两者均可传值,只需要将上面的Model换成ModelMap即可

2.取值方法:

  • EL表达式:${ user.name }

作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据


四.springMVC中使用ModelAndView传值

1.格式:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

    User user= new User();
    ...
    ModelAndView modelAndView =  new ModelAndView();
    modelAndView.addObject("user", user);
    modelAndView.setViewName("/WEB-INF/jsp/login.jsp");
    return modelAndView;
}

2.取值方法:

  • EL表达式:${ user.name }

作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据


【总结】

1.request和session区别

  • request的生命周期是request请求域,一个请求结束,则request结束

  • session的生命周期是session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制后,session注销而失效;或是人为使用session.invalidate();使用session失效;或是关闭浏览器后,session还存在,但是这里已经无法获取session了,过一会它还是失效(通常保存用户信息,判断是否登录)


2.根本没有response.setAttribute()这个方法

  有request.setAttribute()方法,请求时可以设置参数,那返回时应该也能返回参数啊,于是查request.setAttribute()和response.setAttribute()的区别,但是查了半天,也没找到相关文档,于是查spring的API,找到HttpServletResponse接口,哦。。。在接口中根本没有这个方法


3.Model、 ModelMap、 ModelAndView区别

Model、ModelMap:

  • 传值,即传递控制方法处理结果数据到结果页面,也就是说我们把需要在结果页面上需要的数据放到ModelAndView对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据

ModelAndView:

  • 传值,即传递控制方法处理结果数据到结果页面,也就是说我们把需要在结果页面上需要的数据放到ModelAndView对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据
  • 设置转向地址(这也是和Model、ModelMap的主要区别)

猜你喜欢

转载自blog.csdn.net/wrs120/article/details/80459223