数据输出
springmvc.xml
- 包扫描 context:
- 前端控制器InternalViwResolver
web.xml
-
字符编码过滤器CharacterEncodingFilter
解决响应乱码:response.setContentType(“text/html;charset=utf-8”); -
Rest风格过滤器HiddenFilter(_method的put和delete删改请求)
使用原生API向request和session域中保存数据
@RequestMapping(value = "good3")
public String PrimitiveAPI(HttpServletRequest req, HttpSession session){
req.setAttribute("msg1","maven自学成功之req");
session.setAttribute("msg2","maven自学成功之session");
return "success";
}
success.jsp中
isELIgnored=“false” isErrorPage=“true”(解决bug)
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" isErrorPage="true" %>
<hr>
获取服务器中保存的request域数据${requestScope.msg1}
获取服务器中保存的session域数据${sessionScope.msg2}
使用springmvc(默认request)
向request域中保存数据
方法参数传Map/Model/ModelMap
Map
success.jsp
demo2-pageScope:${pageScope.msg1}
<h1>demo2-requestScope:${requestScope.msg1}</h1>
demo2-sessionScope:${sessionScope.msg1}
demo2-applicationScope:${applicationScope.msg1}
controller层
@RequestMapping("/demo2")
public String demo2(Map<String,Object> map){
map.put("msg1","方法形参传map");
System.out.println("demo2...");
return "success";
}
index.jsp
<a href="demo2">demo2</a>
Model
demo3-pageScope:${pageScope.msg2}
<h1>demo3-requestScope:${requestScope.msg2}</h1>
demo3-sessionScope:${sessionScope.msg2}
demo3-applicationScope:${applicationScope.msg2}
-------------------------------------------------------
@RequestMapping("/demo3")
public String demo3(Model model){
model.addAttribute("msg2","方法形参传Model接口");
System.out.println("demo3...");
return "success";
}
-------------------------------------------------------
<a href="demo3">demo3</a>
ModelMap
@RequestMapping("/demo4")
public String demo4(ModelMap modelMap) {
modelMap.addAttribute("msg3","继承currentHashMap的子类ModelMap");//class org.springframework.validation.support.BindingAwareModelMap
System.out.println("demo4..."+modelMap.getClass());
return "success";
// BindingAwareModelMap public class BindingAwareModelMap extends ExtendedModelMap {
// ModelAndView中声明lModelMap
}
-------------------------------------------------------
demo4-pageScope:${pageScope.msg3}
<h1>demo4-requestScope:${requestScope.msg3}</h1>
demo4-sessionScope:${sessionScope.msg3}
demo4-applicationScope:${applicationScope.msg3}
-------------------------------------------------------
<a href="demo4">demo4</a>
返回值ModelAndView代替String
controller层:
// 返回值ModelAndView 默认数据存放在request请求域中
@RequestMapping("demo5")
public ModelAndView demo5(){
ModelAndView moelAndView = new ModelAndView("success");
moelAndView.addObject("msg","返回类型为ModelAndView");
return moelAndView;
}
success.jsp
demo5-pageScope:${pageScope.msg}
<h1>demo5-requestScope:${requestScope.msg}</h1>
<h1>demo5-sessionScope:${sessionScope.msg}</h1>
demo5-applicationScope:${applicationScope.msg}
index.jsp
<a href="demo5">demo5</a>
向session域中保存数据
- 废弃:类上注解@SessionAttributes
只需在类上写注解,type表示类型String.class的保存在session中,如果是数字18则无法保存在session中,value可以有多个{“msg1”,“msg2”}
@SessionAttributes(value = "msg")
@Controller
public class GoodController {
demo5-pageScope:${pageScope.msg}
<h1>demo5-requestScope:${requestScope.msg}</h1>
<h1>demo5-sessionScope:${sessionScope.msg}</h1>
demo5-applicationScope:${applicationScope.msg}
<a href="demo5">demo5</a>
很可惜,会引发异常,故废弃@Deprecated
- 原生HttpSession
@ModelAttribute
详见另一博文