import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class UserInfoServlet
*/
@WebServlet("/UserInfoServlet")
public class UserInfoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private List<UserInfo> userInfos = new ArrayList<UserInfo>();
/**
* @see HttpServlet#HttpServlet()
*/
public UserInfoServlet() {
super();
// TODO Auto-generated constructor stub
}
@Override
public void init(ServletConfig config) throws ServletException {
/* 通過Servlet初始化配置獲取JDBC連接參數 */
String dbDriver = config.getInitParameter("DB_DRIVER");
String dbURL = config.getInitParameter("DB_URL");
String dbUser = config.getInitParameter("DB_USER");
String dbPassword = config.getInitParameter("DB_PASSWORD");
/* 通過JDBC從數據庫userinfo表中獲取用戶信息 */
// 數據庫連接對象引用
Connection connection = null;
// 聲明對象引用
Statement statement = null;
// 結果集對象引用
ResultSet resultSet = null;
// 第一步:加載JDBC驅動程序
try {
Class.forName(dbDriver);
} catch (ClassNotFoundException e) {
System.out.println("找不到驅動程序類,加載驅動失敗!");
e.printStackTrace();
}
// 第二步:創建數據庫連接
try {
connection = DriverManager.getConnection(dbURL, dbUser, dbPassword);
} catch (SQLException e) {
System.out.println("數據庫連接失敗!");
e.printStackTrace();
}
// 第三步:創建執行SQL語句的聲明對象
try {
statement = connection.createStatement();
} catch (SQLException e) {
System.out.println("獲取SQL語句狀態對象錯誤!");
e.printStackTrace();
}
// 第四步:執行SQL語句
try {
resultSet = statement.executeQuery("select * from userinfo");
} catch (SQLException e) {
System.out.println("執行SQL語句錯誤!");
e.printStackTrace();
}
// 第五步:處理執行結果
try {
while (resultSet.next()) {
// 獲取用戶信息
String id = resultSet.getString("userid");
String password = resultSet.getString("password");
String email = resultSet.getString("email");
String name = resultSet.getString("name");
String phone = resultSet.getString("phone");
// 將用戶信息封裝到UserInfo對象實例中
UserInfo userInfo = new UserInfo();
userInfo.setId(id);
userInfo.setPassword(password);
userInfo.setEmail(email);
userInfo.setName(name);
userInfo.setPhone(phone);
// 將UserInfo實例存放到容器中
userInfos.add(userInfo);
}
} catch (SQLException e) {
System.out.println("從結果集獲取數據錯誤");
e.printStackTrace();
}
// 第六步:關閉JDBC所有對象
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
super.init(config);
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();// 准備輸出
out.println("<!DOCTYPE html>");
out.println("<html>"); // 輸出HTML元素
out.println("<head lang=\"en\">"); // 輸出HTML元素
out.println("<meta charset=\"UTF-8\">");
out.println("<title>顯示用戶信息</title>"); // 輸出HTML元素
out.println("</head>"); // 輸出HTML元素
out.println("<body>"); // 輸出HTML元素
//填充用戶信息
out.println("<table border=1>");
out.println("<tr>");
out.println("<th>用戶ID</th>");
out.println("<th>用戶名</th>");
out.println("<th>用戶密碼</th>");
out.println("<th>用戶電話</th>");
out.println("<th>用戶郵箱</th>");
out.println("</tr>");
for (UserInfo userInfo : userInfos) {
System.out.println(userInfo);
out.println("<tr>");
out.println("<td>"+userInfo.getId()+"</td>");
out.println("<td>"+userInfo.getName()+"</td>");
out.println("<td>"+userInfo.getPassword()+"</td>");
out.println("<td>"+userInfo.getPhone()+"</td>");
out.println("<td>"+userInfo.getEmail()+"</td>");
out.println("<tr/>");
}
out.println("</body>"); // 輸出HTML元素
out.println("</html>"); // 輸出HTML元素
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
//配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" metadata-complete="true" version="3.0">
<display-name>JavaWebHomework</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>UserInfoServlet</servlet-name>
<servlet-class>com.lovo.servlet.UserInfoServlet</servlet-class>
<!-- 連接數據庫驅動 -->
<init-param>
<param-name>DB_DRIVER</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
<!-- 連接數據庫URL -->
<init-param>
<param-name>DB_URL</param-name>
<param-value>jdbc:mysql://localhost:3306/db_user?characterEncoding=utf-8</param-value>
</init-param>
<!-- 連接數據庫用戶名 -->
<init-param>
<param-name>DB_USER</param-name>
<param-value>root</param-value>
</init-param>
<!-- 連接數據庫密碼-->
<init-param>
<param-name>DB_PASSWORD</param-name>
<param-value></param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>UserInfoServlet</servlet-name>
<url-pattern>/UserInfoServlet.do</url-pattern>
</servlet-mapping>
</web-app>