java jsp将字符串转换为时间(或日期?)

java jsp将字符串转换为时间(或日期?),java,string,jsp,date,Java,String,Jsp,Date,早上好,我正在尝试制作一个jsp页面,该页面从文本中读取格式为mm:ss的字符串值;之后,它必须在类型time中转换此字符串,因为此值必须保存在类型time的postgres列中;现在代码如下所示: <%@page import="java.util.List"%> <%@page import="java.util.ArrayList"%> <%@page import="java.sql.ResultSet"%> <%@page import="ja

早上好,我正在尝试制作一个jsp页面,该页面从文本中读取格式为mm:ss的字符串值;之后,它必须在类型time中转换此字符串,因为此值必须保存在类型time的postgres列中;现在代码如下所示:

<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.util.Date"%>
<%@page import="java.util.*"%>
<%@page import="java.text.*"%>
<form name="form1" method="post" action="prova.jsp">
<input name="tempo" type="text" />
<br/>
<input type="submit" value="Inserisci">
</form>

String tempoperc=request.getParameter("tempo");
Date data = null;            
DateFormat df = new SimpleDateFormat("mm:ss");            
data = df.parse(tempoperc);

怎么了?

根据异常跟踪:

根本原因java.lang.NullPointerException java.text.SimpleDataFormat.parse(未知源)

根本原因是查询参数
tempo
返回
null

如何重现这个问题

new SimpleDateFormat("mm:ss").parse(null);
上述代码导致上述异常


始终避免使用Scriplet和JSTL或EL。对于数据库操作,在Servlet中执行该操作,并将请求提交到Servlet

在JSP中,您可以使用它提供一组标记,用于解析和格式化与区域设置相关的数字和日期

请阅读我的另一篇文章中的更多内容,从日期字符串和long(以毫秒为单位的时间)创建日期对象


在将页面提交回客户端之前,所有Scriplet代码都将转换为HTML响应

现在,当第一次访问页面时会发生什么


由于表单未提交,因此参数值将为
null
并导致上述异常。

您得到的确切错误是什么?tempoperc的确切值是多少?(打印出来,不要只是假设你知道它是什么。)
tempoperc
中的数据是什么样子的?考虑打印它,以确保它包含它应该包含什么。什么异常StC迹跟踪?当我在服务器上运行时,不比较文本框,但直接比较错误报告如下:HTTP状态500 - JavaLang.nulLoPutExtExchange类型异常报告消息java.lang.NullPointerException描述服务器遇到内部错误,无法满足此请求。异常org.apache.jasper.JasperException:java.lang.NullPointerException org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)org.apache.jasper.servlet.JspServletWrapper.services正如我所说的,在21世纪尽量避免Scriplet。在同一个jsp中提交请求之前,您正在访问param值,不是吗?它将如何工作?1.当您单击submit按钮时,表单中的所有值都将发布到请求的servlet/jsp。2.根据参数名称中的请求访问值。你是这样做的吗?那么,我必须在文本框中只插入一个时间值,该值只包含分钟:秒(例如34:07表示34分7秒)…我对日期不感兴趣,我有写入日期,因为时间类型在Java中不可用,我已经覆盖了新的SimpleDataFormat(“mm:ss”)。解析(null);新的简化格式(“mm:ss”);但现在我在控制台上遇到了一个错误:无法根据您的新错误将日期转换为DateFormat,这是一个编译时错误,表示您不能将DateFormat对象分配给Date。这有意义吗?
new SimpleDateFormat("mm:ss").parse(null);