持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情
示例:
@Controller\
public class ParamAction {\
@RequestMapping("/param")\
public String param(HttpServletRequest request,\
HttpServletResponse response,\
HttpSession session,\
Model model,\
ModelMap modelMap,\
Map map){\
//Map ,Model,ModelMap,request都使用请求作用域进行传值,\
//所以必须使用请求转发的方式进行跳转,否则丢失数据\
Student stu = new Student("张三",22);\
request.setAttribute("requestStu",stu);\
session.setAttribute("sessionStu",stu);\
modelMap.addAttribute("modelMapStu",stu);\
model.addAttribute("modelStu",stu);\
map.put("mapStu",stu);\
return "main"; //切记请求转发跳\
// return "redirect:/admin/main.jsp";//会丢失数据\
}\
注意Model,Map,ModelMap都使用的是request请求作用域,意味着只能是请求转发后,页面才可以得到值。
日期处理
1. 日期注入
日期类型不能自动注入到方法的参数中。需要单独做转换处理。使用@DateTimeFormat注解,需要在springmvc.xml文件中添加mvc:annotation-driven/标签。
(1)在方法的参数上使用@DateTimeFormat注解
@RequestMapping("/submitone")\
public String submitdateone(\
@DateTimeFormat(pattern="yyyy-MM-dd")\
Date mydate){\
System.*out*.println(mydate);\
return "dateShow";\
(2)在类的成员setXXX()方法上使用@DateTimeFormat注解
@DateTimeFormat(pattern="yyyy-MM-dd")\
public void setDate(Date date) {\
this.date = date;\
}
但这种解决方案要在每个使用日期类型的地方都去添加使用@DateTimeFormat注解,比较麻烦,我们可以使用@InitBinder注解来进行类中统一日期类型的处理。
(3)@InitBinder注解解决类中日期问题
@InitBinder\
public void initBinder(WebDataBinder dataBinder) {\
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");\
dataBinder.registerCustomEditor(Date.class, new CustomDateEditor(sf, true));\
}
这样在类中出现的所有日期都可以进行转换了。
日期显示
(1)JSON中的日期显示
需要在类中的成员变量的getXXX方法上加注解.
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")\
public Date getDate() {\
return date;\
}
(2)JSP页面的日期显示
需要使用国际化标签,先添加依赖
<dependency>\
<groupId>jstl</groupId>\
<artifactId>jstl</artifactId>\
<version>1.2</version>\
</dependency>
导入国际化的标签库
**<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>**
再使用标签显示日期
<div id="stulistgood">\
<**c** **:forEach** items=" **${** list **}** " var="stu">\
<p> **${** stu.name **}** ------- **${** stu.age **}** -------<**fmt** **:formatDate** value=" **${** stu.date **}** " pattern="yyyy-MM-dd"></**fmt** **:formatDate**></p>\
</**c** **:forEach**>\
</div>