zoukankan      html  css  js  c++  java
  • springmvc常用方法以及注解

     

    一、request.setAttribute、session.setAttribute、model.addAttribute的区别

    request.setAttribute()属于页面之间的传值,从a.jsp到b.jsp一次传递,之后这个request就会失去他的作用范围,再传就要重新设一个request.setAttribute()。(使用session.setAttribute()会在一个过程中始终保持这个值)

    1、request.setAttribute

    request.setAttribute 作用域是请求和被请求页面之间。

    request.setAttribute()是只在此action的下一个forward需要使用的时候使用;

    request.setAttribute()可存放的参数是String和Object。

    2、session.setAttribute

    session.setAttribute 作用域是整个会话期间,在所有的页面都使用这些数据的时候使用。会话期间指的是浏览器打开该页面,到关闭。 一般用于存放用户信息。

    request.setAttribute()可存放的参数是String和Object。

    session.setAttribute("xyyyy",xyyy);保存

    session.getAttribute("xyyyy");取得

    把自己要的数据放在session里面传来传去.

    public String accountLogin(@RequestParam(value="username", required = false)String username,@RequestParam(value="password", required = false)String password, Model model, HttpSession session){
    }

    3model.addAttribute(String attributeName, Object attributeValue)

    该方法的作用跟request.setAttribute()的本质一样,就是为了给JSP页面传值。

    二、ModelAndView 和Model

    Model 或者 ModelMap 只是传值,springmvc自动创建,同request,response,session,它没有寻址的功能,若要寻址,需在controller中return "静态页地址";Model传值的方法是setAttribute(key,value)

    (1) Model 或者 ModelMap
    Model 和 ModelMap 的实例都是spirng mvc框架来自动创建并作为控制器方法参数传入,用户无需自己创建。
    而且需要return 返回指定的页面路径.
    在控制层的java代码中写入:
    //传值方法一
    @RequestMapping("listCategory2")
    public String listCategory2(Model model) {
        // 接收查询的信息
        List<Category> cs2= categoryService.list();
        // 封装了查询的数据
        model.addAttribute("test", cs2);
        //重要!!需要给出返回model跳转的路径
        return "listCategory2";
    }

     ModelAndView与Model最大的区别是它可以寻址,也可以带值,但是springMvC不会自动帮我们创建,需要我们去new ModelAndView(); 传值方法为addObject(key,value), 寻址方法为setViewnName("静态页路径")

    (2) ModelAndView
    ModelAndView的实例是需要我们手动new的,这也是和ModelMap的一个区别。
    而且,ModelAndView 可以自己寻址,只需要return 返回其对象即可。
    在控制层的java代码中写入:
    //传值方法二:使用ModelAndView
    //当url处于这个时,由listCategory方法来处理请求
    @RequestMapping("listCategory")
    public ModelAndView listCategory(){
        //创建一个模型视图对象
        ModelAndView mav = new ModelAndView();
        //获取到查询的数据
        List<Category> cs= categoryService.list();
        // //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
        mav.addObject("cs", cs);
        // 放入jsp路径
        mav.setViewName("listCategory");
        //返回ModelAndView对象mav
        return mav;
    }

    三、常用注解

    1.@RequestParam的作用

    public String login(@RequestParam("username")String username, @RequestParam("password")String password){}

    @RequestParam的最大作用就是:明确地告诉controller,这两个参数是从请求参数中获取,一旦没有获取,则报错。

  • 相关阅读:
    别人的代码
    ZOJ 1914 Arctic Network
    今日所得 2.22
    poj 2031 Building a Space Station
    POJ 1251 Jungle Roads
    优秀的开发者 vs. 糟糕的开发者
    有关读书求知的一些想法
    开发者拒绝写技术博客的常见理由
    写代码如坐禅:你是哪一类程序员?
    [C++] c++ new() 与new[]的区别
  • 原文地址:https://www.cnblogs.com/jingpeng77/p/13247107.html
Copyright © 2011-2022 走看看