原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
我们平时操作网站,用户的数据都保存在一个叫数据库的地方。数据库有很多种,什么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链接数据库的步骤