一. 数据准备
首先在jsp文件中,显示request作用域中的指定数据:
html>
Title${requestScope.user}
二:使用Map
我们将map作为方法的参数,然后在方法中把数据直接put进map,即可把数据存入request作用域。
package io.zhangjia.springmvc.controller;
import io.zhangjia.springmvc.controller.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
@Controller
public class Test {
@RequestMapping("/test")
public String test(User user, Map map) {
System.out.println("user = [" + user + "]");
map.put("user", user);
return "test";
}
}
三:使用Model
使用Model的方法也很简单,只需要将Model作为参数传入test方法,然后调用addAttribute方法即可
package io.zhangjia.springmvc.controller;
import io.zhangjia.springmvc.controller.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
@Controller
public class Test {
@RequestMapping("/test")
public String test(User user, Model model) {
System.out.println("user = [" + user + "]");
model.addAttribute("user", user);
return "test";
}
}
四:使用ModelAndView
使用ModelAndView之前,需要先将test方法的返回值修改为ModelAndView,而且test方法中不需要传入额外的参数。
setViewName("test")相当于上面几种方法中的return "test"
package io.zhangjia.springmvc.controller;
import io.zhangjia.springmvc.controller.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.Map;
@Controller
public class Test {
@RequestMapping("/test")
public ModelAndView test(User user) {
System.out.println("user = [" + user + "]");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("test"); //相当于 return "test";
modelAndView.addObject("user", user);
return modelAndView;
}
}
五:使用HttpServletRequest
这种方法也是我们在没有学习Spring之前所采用的的最原始的方法,只需要将HttpServletRequest作为参数传入test方法,即可使用request,如果需要获取Session等资源,都可以采用这种方法
package io.zhangjia.springmvc.controller;
import io.zhangjia.springmvc.controller.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@Controller
public class Test {
@RequestMapping("/test")
public String test(User user, HttpServletRequest request) {
System.out.println("user = [" + user + "]");
request.setAttribute("user", user);
return "test";
}
}
六. 总结
1. Map
添加 Map map 作为形参
将需要存入request作用域的数据put进map中: map.put("xxx", xxx),即可完成存入
2. Model
添加 Model model 作为形参
使用model.addAttribute("xxx", xxxx),即可将需要存入request作用域的数据存入
3. ModelAndView
不需要添加形参,但是需要修改方法的返回类型为ModelAndView
新建Model对象:ModelAndView modelAndView = new ModelAndView();
使用modelAndView.addObject("xxx", xxxx)即可将需要存入request作用域的数据存入
4. HttpServletRequest
添加 HttpServletRequest request 作为形参
使用request.setAttribute("xxx", xxxx)即可将需要存入request作用域的数据存入