【问题标题】:Null data is inserted into database ever time i refresh the page without data每当我刷新没有数据的页面时,就会将空数据插入数据库
【发布时间】:2015-02-23 20:14:23
【问题描述】:

我创建了一个 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


    【解决方案1】:

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

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

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

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

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

    这是 MVC 架构的基础。它清晰地分离了职责,避免了像您所做的那样的错误。以及其他好处。

    【讨论】:

    • 我在网上下载了几个项目作为一个模型,我发现 MVC 的正确实现只在登录页面中。所以它提出了几个问题。这是糟糕的编程吗?在开始一个项目之前我应该​​记住哪些模型,最后你能否提供一些我可以作为初学者参考的项目链接,以便有一天我也可以看到单元测试进度条保持绿色直到最后。好吧,我不应该按照评论部分说谢谢,但非常感谢您的时间和精力。
    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多