昨天的辛苦,并没有使我狂妄的心理造成任何的压制。所以,我今天并不打算温习jsp或servlet的基层知识,继续打算以制作项目为学习目标。
由于今天还有一些其他的事情要做,所以我并没有把我的学习目标定的有多远~我只打算在昨天网站制作的基础上, 在增加一个往数据库里增加数据的功能。也就是说,用jsp向postgreSQL中insert 几行数据。仿佛看似简单的东西,却包含了不少知识,并且也让我第一次接触到jdbc的预储存,以及回滚机制。
由于偷懒,我只是新建了一个class3的文档,并把class2里的文件复制过来,更改了几个地方。更改以后的AntTest.java文件内容为
package class3.java;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
import class3.java.*;
public class AntTest extends HttpServlet{
private final String sendPath = "/class3/jsp/AntTest.jsp";
private static final String CONTENT_TYPE = "text/html;charset=utf-8";
public void doGet( HttpServletRequest request,HttpServletResponse response ) throws IOException,ServletException{
doPost(request,response);
}
public void doPost( HttpServletRequest request,HttpServletResponse response ) throws IOException,ServletException{
HttpSession session = request.getSession(true);
String action = request.getParameter("action");
String uName = request.getParameter("uname");
AntDbAccess dbAccess = new AntDbAccess ();
String strRetnResult= "";
List<HashMap<String,String>> AntTestList = new ArrayList<HashMap<String, String>>();
HashMap<String,String> AntTestHm;
try {
Boolean chkFlg=true;
strRetnResult=dbAccess.ConnectDB();
response.setContentType(CONTENT_TYPE);
ServletContext context = getServletContext();
//这部分开始为新填内容
if(action==null){
action="";
}else{
String sql="";
try{
if("writ".equals(action)){
if(uName != null){
String AntDate = this.getDate();
sql = "INSERT INTO \"AntTestDataBase\"(\"AntName\",\"AntDate\",\"AntStatu\") VALUES ('"+uName+"', '"+AntDate+"', 1)";
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
String rSel = dbAccess.ExcuteSql(sql);
if (rSel.length() != 0) {
chkFlg=false;
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(chkFlg){
dbAccess.TransactionDB(0);
}else{
dbAccess.TransactionDB(1);
}
dbAccess.disconnect(null);
}
}
}
//新内容结束,这部分程序代码的功能为,接受数据,并把数据插入到数据库中
StringBuffer searchErrMsg = new StringBuffer();
ResultSet rsetSel = dbAccess.SelectSql("select * from \"AntTestDataBase\" order by \"AntKey\" desc limit 10", searchErrMsg);
if (searchErrMsg.toString().length() == 0) {
while (rsetSel.next()) {
String AntKey = (rsetSel.getString("AntKey") != null) ? (rsetSel.getString("AntKey").trim()) : "";
String AntName = (rsetSel.getString("AntName") != null) ? (rsetSel.getString("AntName").trim()) : "";
String AntYmd = (rsetSel.getString("AntDate") != null) ? (rsetSel.getString("AntDate").trim()) : "";
AntTestHm = new HashMap<String, String>();
AntTestHm.put("AntKey", AntKey);
AntTestHm.put("AntName", AntName);
AntTestHm.put("AntYmd", AntYmd);
AntTestList.add(AntTestHm);
}
}
session.removeAttribute("AntTestList");
session.setAttribute("AntTestList", AntTestList);
RequestDispatcher dispatcher = context.getRequestDispatcher(sendPath);
dispatcher.forward(request,response);
} catch (Exception e) {
e.printStackTrace();
}
}
private String getDate() {
java.text.SimpleDateFormat GetDate=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date=new java.util.Date();
return GetDate.format(date);
}
}
AntTest.jsp文件并没有什么改动,但新添了AntTestWrit.java文件与AntTestWrit.jsp两个文件,内容分别为
AntTestWrit.java
package class3.java;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AntTestWrit extends HttpServlet{
private static final long serialVersionUID = 1L;
private final String sendPath = "/class3/jsp/AntTestWrit.jsp";
private static final String CONTENT_TYPE = "text/html;charset=utf-8";
public void doGet( HttpServletRequest request,HttpServletResponse response ) throws IOException,ServletException{
doPost(request,response);
}
public void doPost( HttpServletRequest request,HttpServletResponse response ) throws IOException,ServletException{
try {
response.setContentType(CONTENT_TYPE);
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(sendPath);
dispatcher.forward(request,response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
AntTestWrit.jsp
<html>
<head>
<title>Ant first web progrem for jsp</title>
</head>
<body>
<form action="./jietTest" name="AntTest" method="POST">
<input type="hidden" name="action" value="writ" />
<table>
<tr>
<td><label>name:</label><input type="text" name="uname" /></td>
</tr>
<tr>
<td><input type="submit" value="click" /></td>
</tr>
</table>
</form>
</body>
</html>
AntTestWrit.jsp页面其实完全就是一个html的表单提交页。
这样,简单的数据储存,并显示部分就完成了。但整站制作的时候,绝对不能如此做。我只是因为图方便,所以把接受页面与显示列表页面放在一起制作了,并且也并没有对表单进行验证。一个完善的网站功能相对来说,要相对复杂的多。
那么,关于数据的储存和查询部分,我先做到这里。明天,我将继续完善数据的更改以及删除的功能。