Java课题笔记~ 日期处理

本文介绍了如何在SpringMVC中处理日期,包括日期注入、@DateTimeFormat注解的使用、统一处理日期类型、JSON和JSP中的日期显示,以及<mvc:annotation-driven/>标签的作用和资源安全策略。
摘要由CSDN通过智能技术生成

2.8 日期处理

2.8.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));
}

这样在类中出现的所有日期都可以进行转换了。

2.8.2 日期显示

(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>

2.9 < mvc:annotation-driven/>标签的使用

< mvc:annotation-driven/>会自动注册两个bean,

分别为DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。

是springmvc为@Controller分发请求所必须的。除了注册了这两个bean,还提供了很多支持。

1)支持使用ConversionService 实例对表单参数进行类型转换;

2)支持使用 @NumberFormat 、@DateTimeFormat;

3)注解完成数据类型的格式化;

4)支持使用 @RequestBody 和 @ResponseBody 注解;

5)静态资源的分流也使用这个标签;

2.10 资源在WEB-INF目录下

很多企业会将动态资源放在WEB-INF目录下,这样可以保证资源的安全性。

在WEB-INF目录下的动态资源不可以直接访问,必须要通过请求转发的方式进行访问。这样避免了通过地址栏直接对资源的访问。

重定向也无法访问动态资源。

项目案例:

页面结构图:

 action:

@Controller
public class ShowAction {
    @RequestMapping("/showIndex")
    public String showIndex(){
        System.out.println("index.............");
        return "index";
    }
    @RequestMapping("/showMain")
    public String showMain(){
        System.out.println("main.............");
        return "main";
    }
    @RequestMapping("/showLogin")
    public String showLogin(){
        System.out.println("login.............");
        return "login";
    }
    @RequestMapping("/login")
    public String login(String name, String pwd, HttpServletRequest request){
        if("admin".equals(name) && "123".equals(pwd)){
            return "main";
        }
        request.setAttribute("msg","用户名或密码不正确!");
        return "login";
    }
}

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肉肉肉肉肉肉~丸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值