上一篇文章介绍了如何使用Servlet建立网页的动态反应,这篇文章介绍数据库的连接方法。
网上大多数文章以MySQL为例,这里介绍Oracle在JavaWeb中的连接方法。
整个项目的文件结构如下:
配置Oracle连接用到的jar包
将ojdbc6.jar放到WEB-INF中的lib下,然后配置项目BuildPath,Add External Library。如果不进行这一步操作,会在Class.forName()时出现“无法找到类”的错误。
使用html文件实现表单
注意:action后面的目录是处理表单的.java文件的路径
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="servlet/Login" method="post"> <!--action与servlet名对应 -->
Account:<input type="text" name="username"> <br><br>
Password:<input type="password" name="password"><br><br>
Account Type:<input type="radio" name="usertype" value="admin">Developer
<input type="radio" name="usertype" value="user">Registered User<br><br>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
重写Servlet的doPost()方法
注意:这个Servlet应当是上面html中action后面的文件,即servlet包下的Login.java。重写方法如下:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String username = request.getParameter("username");
String password = request.getParameter("password");
PrintWriter out=response.getWriter();
try {
conn= DBReading.getConn(conn);
String sql = "select * from users where username= ? and password=?";
ps =conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs= ps.executeQuery();
if (rs.next()) {
// 登陆成功,跳转到success页面
out.print("<script>alert('Successfully logged in!');window.location.href='/BigData_Web/success.jsp'</script>");
rs.close();
} else {
out.print("<script>alert('Sorry, the account with this keycode was not found.');window.location.href='/BigData_Web/login.html'</script>");
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
建立java类实现数据库连接方法
写完doPost方法还不能运行。在上面代码try的第一行,调用了DBReading.getConn()方法,用于建立数据库连接。
在servlet包中新建一个java class,实现数据库连接代码:
package servlet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBReading {
private static String driver = "oracle.jdbc.driver.OracleDriver"; //驱动
private static String url = "jdbc:oracle:thin:@//localhost:1521/你的数据库名"; //连接字符串,这里需要改数据库名称
private static String username = "system"; //用户名,需要改
private static String password = "oracle"; //密码,需要改
// 获得连接对象
public static synchronized Connection getConn(Connection conn){
if(conn == null){
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
}
写一个登陆成功的html文件
在上面Servlet的方法中,如果在数据库中查找到用户名和密码,通过out.print(window.location.href=’/BigData_Web/success.jsp’)实现页面跳转。
这里在项目的WebContent下新建一个success.jsp即可。