SpringMVC
RequestParam 注解 请求值
-
新建一个testRequestParam方法
-
/** * @RequestParam 来映射请求参数. * value 值即请求参数的参数名 * required 该参数是否必须. 默认为 true * defaultValue 请求参数的默认值 */ @RequestMapping(value="/testRequestParam") public String testRequestParam(@RequestParam(value="username") String un, @RequestParam(value="age",required = false,defaultValue = "0") int age) { System.out.println("testRequestParam, username: "+un+", age: "+age); return SUCCESS; }
-
-
在index.jsp中新建一个超链接
-
<a href="springmvc/testRequestParam?username=atguigu&age=11">Test RequestParam</a> <br><br>
-
-
当查询
http://localhost:8080/springmvc-1/springmvc/testRequestParam?username=atguigu
时控制台输出默认值
testRequestParam, username: atguigu, age: 0
当查询
http://localhost:8080/springmvc-1/springmvc/testRequestParam?username=atguigu&age=10
时控制台输出testRequestParam, username: atguigu, age: 10
RequestHeader 注解 请求头
-
新建一个testRequestHeader方法
-
/** * 了解: 映射请求头信息 用法同 @RequestParam */ @RequestMapping("/testRequestHeader") public String testRequestHeader(@RequestHeader(value="Accept-Language") String al) { System.out.println("testRequestHeader,Accept-Language:"+al); return SUCCESS; }
-
新建一个超链接
-
<a href="springmvc/testRequestHeader">Test RequestHeader</a> <br><br>
-
-
点击超链接 出现success Page页面 控制台打印 testRequestHeader,Accept-Language:zh-CN
CookieValue 注解
-
新建一个testCookieValue方法
-
/** * 了解: * * @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam */ @RequestMapping("/testCookieValue") public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) { System.out.println("testCookieValue:sessionId:"+sessionId); return SUCCESS; }
-
-
新建一个超链接
-
<a href="springmvc/testCookieValue">Test CookieValue</a> <br><br>
-
-
页面转到success Page 控制台打印 2FBB0E0D12F98FC56083FA4153FEB218
使用POJO作为参数
-
新建一个com.atguigu.springmvc.entities包 包里面有Address和User两个类
Address中有私有属性 province和city 并填上get和set方法 重写toString方法
User中有私有属性username,password,email,age,address 填上get和set方法 并重写toString方法
-
新加一个testPojo方法
-
/** * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。 * 如:dept.deptId、dept.address.tel 等 */ @RequestMapping("/testPojo") public String testPojo(User user) { System.out.println("testPojo: " + user); return SUCCESS; }
-
-
新加一个表单
-
<form action="springmvc/testPojo" method="post"> username: <input type="text" name="username"/> <br> password: <input type="password" name="password"/> <br> email: <input type="text" name="email"/> <br> age: <input type="text" name="age"/> <br> city: <input type="text" name="address.city"/> <br> province: <input type="text" name="address.province"/> <br> <input type="submit" value="Submit"/> </form> <br><br>
-
-
在表单上填上如图所示的值
控制台返回
testPojo: User [username=xuefeng, password=1234, email=a@AAA, age=12, address=Address [province=sss, city=aaa]]
使用Servlet原生API作为参数
-
新建一个testServletAPI方法
-
/** * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型 * * HttpServletRequest * HttpServletResponse * HttpSession * java.security.Principal * Locale InputStream * OutputStream * Reader * Writer * @throws IOException */ @RequestMapping("/testServletAPI") public String testServletAPI(HttpServletRequest request, HttpServletResponse response) { System.out.println("testServletAPI ,"+request +","+response); return SUCCESS; }
-
-
新建一个超链接
-
<a href="springmvc/testServletAPI">Test ServletAPI</a> <br><br>
-
-
点击超链接 控制台出现
testServletAPI ,org.apache.catalina.connector.RequestFacade@9b71fb0,org.apache.catalina.connector.ResponseFacade@4718bb84
-
改进testServletAPI方法
-
@RequestMapping("/testServletAPI") public void testServletAPI(HttpServletRequest request, HttpServletResponse response,Writer out) throws IOException { System.out.println("testServletAPI ,"+request +","+response); out.write("hello springmvc"); // return SUCCESS; }
-
-
点击超链接 页面打印hello springmvc
处理模型数据之ModelAndView
-
新建一个testModelAndView方法
-
/** * 目标方法的返回值可以是 ModelAndView 类型。 * 其中可以包含视图和模型信息 * SpringMVC 会把 ModelAndView 的 model 中数据放入到 request 域对象中. * @return */ @RequestMapping("/testModelAndView") public ModelAndView testModelAndView() { String viewName=SUCCESS; ModelAndView modelAndView=new ModelAndView(viewName); //添加模型数据到ModelAndView中 modelAndView.addObject("time",new Date()); return modelAndView; }
-
-
新建一个超链接
-
<a href="springmvc/testModelAndView">Test ModelAndView</a> <br><br>
-
-
向success.jsp中添加
time: ${requestScope.time}
-
点击超链接 出现此页面
处理模型数据之Map
-
新建一个testMap方法
-
/** * 目标方法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数. * @param map * @return */ @RequestMapping("/testMap") public String testMap(Map<String,Object> map) { System.out.println(map.getClass().getName()); map.put("names", Arrays.asList("Tom","Jerry","Mike")); return SUCCESS; }
-
-
新建一个超链接
-
<a href="springmvc/testMap">Test Map</a> <br><br>
-
-
在success.jsp中加入
names:${requestScope.names}
-
控制台打印org.springframework.validation.support.BindingAwareModelMap
出现此页面
处理模型数据之 SessionAttributes 注解
-
新建一个testSessionAttributes方法
-
/** * @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使用的是 value 属性值), * 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是 types 属性值) * * 注意: 该注解只能放在类的上面. 而不能修饰放方法. */ @RequestMapping("/testSessionAttributes") public String testSessionAttributes(Map<String,Object> map) { User user=new User("xuefeng","1234","a@xuefeng.com",12); map.put("user", user); return SUCCESS; }
-
-
新建一个超链接
-
<a href="springmvc/testSessionAttributes">Test SessionAttributes</a> <br><br>
-
-
在success.jsp中添加
request user:${requestScope.user}
session user:${sessionScope.user}
-
点击超链接 只有请求域显示了 session域没有显示
明显session user没有显示
-
为了让session user显示 在
public class SpringMVCTest{}
上加上注解@SessionAttributes(value={“user”}, types={String.class})
-
testSessionAttributes方法 新加入一段代码
@RequestMapping("/testSessionAttributes") public String testSessionAttributes(Map<String,Object> map) { User user=new User("xuefeng","1234","a@xuefeng.com",12); map.put("user", user); map.put("JianDuiCollection","TianJinFeng"); return SUCCESS; }
-
success.jsp中添加
request JianDuiCollection:${requestScope.JianDuiCollection} <br><br> session JianDuiCollection:${sessionScope.JianDuiCollection} <br><br>
-
显示页面
-