原創聲明:本文為作者原創,未經允許不得轉載,經授權轉載需注明作者和出處
我們平時操作網站,用戶的數據都保存在一個叫數據庫的地方。數據庫有很多種,什么Oracle啦,Mysql啦,Sql Server啦等等。本章將要講到servlet如何和操作數據庫,當然,sql方面其實屬于另一個方向了,這里只會講怎么用,不會深入研究。
我們現在用MySql來做一個用戶登錄的需求:
需求是這樣的,我們在一個登陸界面輸入用戶名和密碼然后點擊登陸,如果用戶名密碼正確(也就是根據用戶名和密碼可以在數據庫中找到數據),就進入主頁(顯示用戶名和密碼),如果密碼錯誤,就返回主頁并提示密碼錯誤。
數據庫USER表中用到的字段:
password: 密碼
在引入之前我們需要導入一個數據庫連接驅動jar包:mysql-connector-java.jar
下面是程序:
jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="login" method="post">
用戶名:<input type="text" name="userName" /><br />
密碼:<input type="password" name="password" /><br />
<input type="submit" value="登錄" />
</form>
</body>
</html>
java代碼:
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = -349715959352759220L;
// JDBC 驅動
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
//數據庫地址 格式是 jdbc:mysql://數據庫地址(可以是ip地址):端口號(默認是3306)/數據庫名
private static final String URL = "jdbc:mysql://localhost:3306/loginDemo";
// 數據庫的用戶名與密碼,需要根據自己的設置
private static final String USER = "root";
private static final String PASS = "root";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接收到的賬號密碼
String userName = req.getParameter("userName");
String password = req.getParameter("password");
Connection conn = null;
Statement stmt = null;
// 設置響應內容類型
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
try{
// 注冊 JDBC 驅動器
Class.forName(JDBC_DRIVER);
// 打開一個連接
conn = DriverManager.getConnection(URL,USER,PASS);
//拼接查詢的SQL語句
StringBuffer sql = new StringBuffer("SELECT * FROM USER WHERE userName = '");
sql.append(userName);
sql.append("' and password = '").append(password).append("'");
// 執行 SQL 語句
stmt = conn.createStatement();
//獲取結果
ResultSet rs = stmt.executeQuery(sql.toString());
// 展開結果集數據
if(rs.next()){
//獲取查出來的字段
int id = rs.getInt("id");
String userNam = rs.getString("userName");
// 輸出數據
out.println("用戶ID: " + id);
out.println("用戶名: " + userNam);
}else{
out.print("用戶名或密碼錯誤!");
}
// 完成后關閉
rs.close();
stmt.close();
conn.close();
} catch(Exception se) {
// 處理 異常
se.printStackTrace();
}finally{
//關閉資源
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
web.xml:
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>jdbc.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
運行以上代碼,我們可以進入一個登陸頁面:
在數據庫中創建了一條數據,用戶名是dayaoguai,密碼是123456
然后我們輸入正確的賬號密碼:
會進入主頁,顯示id和用戶名
如果輸入錯誤的賬號密碼:
總結:
servlet鏈接數據庫的步驟