2015-02-23 61 views
0

我已经创建了一个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!!"); 
} 

回答

0

你不应该在JSP中有Java代码。 JSP是一个视图组件。它唯一的责任是生成HTML,使用JSP EL,JSTL和其他taglibs,并从存储在请求属性中的Java Bean中获取数据。

访问数据库应该从Java中通过从控制器调用的DAO(实现为servlet)完成。

您在这里混合了两件截然不同的事情: 1.显示表格 2.处理表单提交在数据库中创建数据。

第一个应该由对servlet的GET请求处理。 Servlet的doGet()方法应该获取数据以显示表单,将其存储在请求属性中,并转发到显示表单的JSP。

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

这是MVC体系结构的基础。它将干净的职责分开,并避免诸如你所做的那样的错误,以及其他好处。

+0

我下载了几个在线项目作为模型遵循,我发现只有在登录页面适当的MVC实现。所以它提出了几个问题。这是不好的编程?在开始一个项目之前,我应该记住哪些是模型,最后可以提供一些我可以称为初学者的项目链接,以便有一天我还可以看到单元测试进度条保持绿色的乐趣直到最后。那么我不应该说每个评论部分感谢,但真的很感谢你的时间和精力。 – 2015-02-24 15:19:56