我正在处理消息页面,我已经从数据库中获取了消息的不同部分,并在用户单击检查按钮时将其显示在表中,它应该向他显示消息。如何实现这一点请简要说明。
我对此问题的编码尝试:
<form action="Check Notification.jsp" method="post">
<table>
<tr>
<th>From</th>
<th>Message</th>
<th>Check</th>
<th>Delete</th>
</tr>
<%
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url + db, uname, password);
Statement st = con.createStatement();
String query = "Select * from push_mail WHERE rec_id='"+adm+"'";
ResultSet rs=st.executeQuery(query);
%>
<%
while(rs.next()){
%>
<tr>
<td><%=rs.getString("send_id")%></td>
<td style="display: none">
<input type="text" name="message" value='<%=rs.getString("m_id")%>' />
</td>
<td><%=rs.getString("m_sub")%><br/><%=rs.getString("date")%></td>
<td>
<input type="submit" name='check' value="Check" onclick="check()"/>
</td>
<td><img alt="Delete" src="images/Delete.jpg" width="30px" height="30px" /></td>
</tr>
<%
}
%>
</table>
</form>
<p >
<%
String msgid= request.getParameter("message");
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url + db, uname, password);
Statement st1 = con.createStatement();
String msg = "Select * from push_mail WHERE m_id='"+msgid+"'";
ResultSet rs1=st1.executeQuery(msg);
while(rs.next()){
String msgs=rs.getString("m_message");
out.println(msgs);
}
%>
</p>
答案 0 :(得分:0)
使用Ajax(即在后台向服务器发送请求的Javascript)。 JSP是一种服务器端技术,因此无法响应客户端事件并保持在同一页面上。它只能响应表单提交,这意味着您更改页面,除非提交是通过Ajax发送的。
不要在JSP内部进行数据库访问(使用servlet)。其中一个原因是:您可以在出错时轻松公开您的数据库密码。
不要将用户输入直接粘贴到SQL语句中(他们可以通过这种方式进行SQL注入)。
不要让JSP页面提交给自己(提交给servlet)。