servlet與資料庫連接

來源:互聯網
上載者:User

//用於互動的html文檔

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Survey</title>
</head>
<body>
<form method="post" action="animalSurvey">
<p>What is your favorites pet?</p>
<p>
<input type="radio" name="animal" value="1" />Dog<br />
<input type="radio" name="animal" value="2" />Cat<br />
<input type="radio" name="animal" value="3" />Bird<br />
<input type="radio" name="animal" value="4" />Snake<br />
<input type="radio" name="animal" value="5"  checked="checked" />Null<br />
</p>
<p><input type="submit" value="Submit" /></p>
</form>
</body>
</html>

 

 

 

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SurveyServlet
 * 資料庫由自己指定,自己設定databaseDriver,和databaseName就可以了,在web.xml中設定
 * 資料庫名稱為surveyresults包含id,name,votes資料項目
 */
public class SurveyServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
      
 private Connection connection;
 private Statement statement;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SurveyServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

 /**
  * @see Servlet#init(ServletConfig)
  */
 public void init(ServletConfig config) throws ServletException {
  // TODO Auto-generated method stub
  try {
   System.setProperty("Odbc", "E:/Eclpise/code/DataBase/data");//描述資訊
   
   Class.forName(config.getInitParameter("databaseDriver"));//串連資料庫
   connection=DriverManager.getConnection(config.getInitParameter("databaseName"));
   
   statement=connection.createStatement();
  } catch (Exception exception) {
   // TODO: handle exception
   exception.printStackTrace();
   throw new UnavailableException(exception.getMessage());
  }
 }

 /**
  * @see Servlet#destroy()
  */
 public void destroy() {
  // TODO Auto-generated method stub
  try {
   statement.close();
   connection.close();
  } catch (SQLException sqlException) {
   // TODO: handle exception
   sqlException.printStackTrace();
  }
 }

 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  response.setContentType("text/html");
  
  PrintWriter out=response.getWriter();
  DecimalFormat twoDigits=new DecimalFormat("0.00");
  
  out.println("<html>");
  out.println("<head>");
  
  int value=Integer.parseInt(request.getParameter("animal"));
  String query;
  
  try {
   //更新投票數
   query="UPDATE surveyresults SET votes=votes+1 "+"WHERE id="+value;
   statement.execute(query);
   
      //求出投票總數
   query="SELECT sum(votes)FROM surveyresults";
   ResultSet totalRS=statement.executeQuery(query);
   totalRS.next();
   int total=totalRS.getInt(1);
   
   query="SELECT id,name,votes FROM surveyresults "+"ORDER BY id";
   ResultSet resultSet=statement.executeQuery(query);
   out.println("<title>Thank you for participating</title>");
   out.println("</head>");
   out.println("<body>");
   out.println("<p>Thank you!");
   out.println("</ br>Results:</p><pre>");
   
   int votes;
   
   while (resultSet.next()) {
    out.print(resultSet.getString(2));
    out.print(": ");
       votes=resultSet.getInt(3);
       out.print(twoDigits.format((double)votes/total*100));
       out.print("%  responses: ");
       out.println(votes);
   }
   
   resultSet.close();
   
   out.print("Total responses: ");
   out.print(total);
   
   out.println("</pre></body></html>");
   out.close();
  } catch (SQLException sqlException) {
   // TODO: handle exception
   sqlException.printStackTrace();
   out.println("<title>Error</title>");
   out.println("</head>");
   out.println("<body><p>DataBase error occured.");
   out.println("Try again later.</p></body></html>");
   out.close();
  }
 }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.