//用于交互的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();
}
}
}
本文介绍了一个简单的Servlet应用,用于收集用户关于最喜爱宠物的调查反馈,并实时更新数据库中的投票结果,展示投票占比。
433

被折叠的 条评论
为什么被折叠?



