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