1.遇到的问题
数据库中的时间格式是datetime
实体类的时间类型
2.解决办法
方法一:不用修改servlet,在jsp文件的头部添加以下代码
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
在需要显示时间的位置添加以下代码
<label>当前时间:</label> <!-- 其中的${time }中的time从如下设置的servlet文件中获取的: Temperature temperature = implTemperatureDao.findTemperatureByMaxId();//查询数据中最新的数据 request.getSession().setAttribute("time", temperature.getTime());//获取从数据库中拿出的的数据中的时间,存入session中 --> <span id="getTime">
<fmt:formatDate type="time" value="${time }" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
</span> <script> function getTime(){ var url = "${pageContext.request.contextPath}/AjaxTimeServlet?time"+new Date().getTime() $("#getTime").load(url); } </script>
这样在显示的时间就是:
方法二:不用修改jsp文件,直接在servlet中修改时间格式
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Temperature temperature = new Temperature();
ImplTemperatureDao implTemperatureDao = new ImplTemperatureDao();
try {
//读取数据
temperature =implTemperatureDao.findTemperatureById();
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = myFmt.format(temperature.getTime());
response.setContentType("text/html;charset=utf-8");
response.getWriter().write(time);
} catch (SQLException e) {
e.printStackTrace();
}
}
jsp文件源码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../../bootstrap/js/jquery-3.1.1.js"></script>
</head>
<body>
数据库获取的时间:<span id="getTime"></span>
<script>
function getTime(){
var url = "${pageContext.request.contextPath}/AjaxTimeServlet?time"+new Date().getTime()
$("#getTime").load(url);
}
$(document).ready(function () {
setInterval("getTime()",1000);
//setInterval这个函数会根据后面定义的1000既每隔1秒执行一次前面那个函数
});
</script>
</body>
</html>
这样显示的时间是:
总结:
原因:java时间字段是date类型的(util),mysql数据库字段类型是datetime。
两种方法都能够解决从数据库读取时间时,时间参数后多了一个.0的问题,用哪一个自己可选。