Jsp 每当我刷新没有数据的页面时,都会将空数据插入数据库

Jsp 每当我刷新没有数据的页面时,都会将空数据插入数据库,jsp,Jsp,我创建了一个JSP页面,将数据插入数据库。这是它应该达到的唯一目的,但是当我刷新页面时,它会将空数据插入数据库。我给出了if条件,以便在没有插入数据时显示一条消息。但在刷新时显示这样的消息看起来并不合适。我还想知道我是否可以使用DAO来执行任务,或者使用一个单独的servlet。请指教 <form method="post"> Ticket Number:<input type="text" name=ticketNumber autocomplete="on"> <

我创建了一个JSP页面,将数据插入数据库。这是它应该达到的唯一目的,但是当我刷新页面时,它会将空数据插入数据库。我给出了if条件,以便在没有插入数据时显示一条消息。但在刷新时显示这样的消息看起来并不合适。我还想知道我是否可以使用DAO来执行任务,或者使用一个单独的servlet。请指教

<form method="post">
Ticket Number:<input type="text" name=ticketNumber autocomplete="on">
<br>
Ticket type:<select name="type">
<option value="Old">Old</option>
<option value="New">New</option>
</select>

Ticket status:
<select name="status">

<option value="Transferred">Transferred</option>
<option value="Pending">Pending</option>
<option value="Strike 1">Strike 1</option>
<option value="Strike 2">Strike 2</option>
<option value="Strike 3">Strike 3</option>
<option value="Call back">Call back</option>

</select>


<br>

<input type="submit" value="submit"> 
<%
String ticketNumber= request.getParameter("ticketNumber");
System.out.println(""+ticketNumber);
String ticketType= request.getParameter("type");
System.out.println(""+ticketType);
String status= request.getParameter("status");
System.out.println(""+status);

if(ticketNumber != null || ticketType != null || status !=null)

{   
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connectionconn=DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:xe","system","great123");
PreparedStatement ps=
conn.prepareStatement
("insert into ticketdb   (tnumber,ttype,tstatus)   values (?,?,?)");

ps.setString(1, ticketNumber);
ps.setString(2, ticketType);
ps.setString(3, status);
ps.executeUpdate();
}catch (Exception ex)
{
    ex.printStackTrace();
}
}

else
{
    out.print("You missed something!!");
}

JSP中不应该有Java代码。JSP是一个视图组件。它唯一的职责是使用jspel、JSTL和其他标记库生成HTML,并从存储在请求属性中的javabean获取数据

访问数据库应该在Java中完成,从作为servlet实现的控制器调用的DAO访问数据库

你在这里混合了两种截然不同的东西: 1.显示窗体 2.处理表单提交,在数据库中创建数据

第一个应该由对servlet的GET请求处理。servlet的doGet方法应该获取用于显示表单的数据,将其存储在请求属性中,然后转发给显示表单的JSP

然后,应该使用POST将表单操作提交给同一个servlet或另一个servlet。这个servlet的doPost方法应该从参数中获取值,验证它们,如果有效,在数据库中插入数据,并重定向到另一个servlet,通常用于显示刚刚插入的数据,或者在表中列出数据


这是MVC体系结构的基础。它清晰地划分了责任,避免了像您这样的错误,还有其他好处。

我在线下载了两个项目,作为一个模型,并且我只在登录页面中找到了MVC的正确实现。因此,它提出了几个问题。这是糟糕的编程吗?在开始一个项目之前,我应该记住哪些模型。最后,你能给我提供一些项目链接吗?作为一个初学者,我可以参考这些链接,这样有一天我也可以很高兴地看到单元测试进度条一直保持绿色,直到结束。我不想在评论部分说谢谢,但我真的很感谢你们的时间和努力。