使用Eclipse创建JavaWeb动态网页项目(二)连接数据库

上一篇文章介绍了如何使用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即可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值