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,这两个参数是从请求参数中获取,一旦没有获取,则报错。

posted @ 2020-07-05 18:32  藤原拓海7  阅读(399)  评论(0编辑  收藏  举报