学习jsp第三天

昨天的辛苦,并没有使我狂妄的心理造成任何的压制。所以,我今天并不打算温习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的表单提交页。

这样,简单的数据储存,并显示部分就完成了。但整站制作的时候,绝对不能如此做。我只是因为图方便,所以把接受页面与显示列表页面放在一起制作了,并且也并没有对表单进行验证。一个完善的网站功能相对来说,要相对复杂的多。

那么,关于数据的储存和查询部分,我先做到这里。明天,我将继续完善数据的更改以及删除的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值