一.下載jar包
下載oracle驅動包:ojdbc6.jar,放於如下位置:
測試代碼:
package com.test;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
public class Test01 {
@Test
public void test() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = null;
//orcl 是數據庫名;test123是用戶名;qwer1234是密碼
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "test123",
"qwer1234");
} catch (Exception e) {
e.printStackTrace();
}
}
}
運行成功就算連接成功了,之后就可以操作數據庫了。
參考地址:https://blog.csdn.net/he__xu/article/details/83410966
jar包下載鏈接:https://pan.baidu.com/s/1j2lV7uJWsgmW0yym9j8jHw 提取碼:0mqk
二、使用spring框架:
1.需要下載:
commons-dbcp jar包:
下載地址:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
鏈接:https://pan.baidu.com/s/1BsbXz1FG4FQi4-ZSIWnYhQ 提取碼:d3uo
commons-pool jar包:
下載地址:http://commons.apache.org/proper/commons-pool/download_pool.cgi
鏈接:https://pan.baidu.com/s/1LTK2WQ1CIsIglYqVZBr6ig 提取碼:38v8
鏈接:https://pan.baidu.com/s/1O6cI7FOtlMYyzzYDX4phcQ 提取碼:b3sn
2.web.xml配置:
<!--配置數據源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="test123"/>
<property name="password" value="qwer1234"/>
<!-- 連接池啟動時的初始值 -->
<property name="initialSize" value="3" />
<!-- 連接池的最大值 -->
<property name="maxActive" value="300" />
<!-- 最大空閑值.當經過一個高峰時間后,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 -->
<property name="maxIdle" value="2" />
<!-- 最小空閑值.當空閑的連接數少於閥值時,連接池就會預申請去一些連接,以免洪峰來時來不及申請 -->
<property name="minIdle" value="1" />
<!-- end -->
</bean>
3.測試代碼:
@Test
public void test() {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"resource/applicationContext.xml");
}
備注:如果有以下報錯:
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource': Failed to introspect bean class [org.apache.commons.dbcp.BasicDataSource] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/ObjectPool
可以把commons-pool2-2.4.3.jar需要換成commons-pool-1.6.jar
三、調用測試:
代碼:
public void test() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("resource/applicationContext.xml");
BasicDataSource dataSource = (BasicDataSource) ctx.getBean("dataSource");
}
解決:在aop后面添加一個屬性:proxy-target-class="true"
測試通過后直接試着調用一下
代碼:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ApplicationContext ctx = new ClassPathXmlApplicationContext("resource/applicationContext.xml");
BasicDataSource dataSource = (BasicDataSource) ctx.getBean("dataSource");
String msg = "";
Statement st = null;
ResultSet rs = null;
try {
// 1、獲取連接對象
Connection conn = dataSource.getConnection();
// 2、創建statement類對象,用來執行SQL語句!!
st = conn.createStatement();
// 3、創建sql查詢語句
String sql = "select * from sys_user ";
// 4、執行sql語句並且換回一個查詢的結果集
rs = st.executeQuery(sql);
while (rs.next()) { // 循環遍歷結果集
int id = rs.getInt("user_id");
String name = rs.getString("real_name");
msg += "id=" + id + "--" + "name=" + name+"<br>";
}
} catch (SQLException e) {
e.printStackTrace();
}
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>一二零叄的網站</title></head><body>");
out.print(msg);
out.print("</body></html>");
}
其中用戶表:
結果:
四、使用配置文件
1.jdbc.properties:
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=test123
jdbc.password=qwer1234
2.web.xml改為:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list> <value>classpath:resource/jdbc.properties</value>
</list>
</property>
</bean>
<!--配置數據源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 連接池啟動時的初始值 -->
<property name="initialSize" value="3" />
<!-- 連接池的最大值 -->
<property name="maxActive" value="300" />
<!-- 最大空閑值.當經過一個高峰時間后,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 -->
<property name="maxIdle" value="2" />
<!-- 最小空閑值.當空閑的連接數少於閥值時,連接池就會預申請去一些連接,以免洪峰來時來不及申請 -->
<property name="minIdle" value="1" />
<!-- end -->
</bean>
這樣就可以了。
五、簡單的用戶登錄
1.登錄界面login.jsp:
<%@ page language="java" import="java.util.*" 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=utf-8">
<title>一二零叄的網站</title>
<script type="text/javascript">
function zhuce(){
alert("跳轉到注冊界面......");
}
</script>
</head>
<body>
<center>
<h1 style="color:#7D26CD">登錄</h1>
<hr style="width:85%">
<form id="indexform" name="indexForm" action="logincheck.jsp"
method="post">
<table border="0">
<tr>
<td>賬號:</td>
<td colspan="2"><input type="text" name="username">
</td>
</tr>
<tr>
<td>密碼:</td>
<td colspan="2"><input type="password" name="password">
</td>
</tr>
<tr>
<td colspan="3" align="center">
<br>
<input type="submit" value="登錄" style="color:#BC8F8F">
<input type="button" onclick="zhuce()" value="注冊" style="color:#BC8F8F">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
2.登錄驗證:logincheck.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.lang.*"%>
<%@ page import="com.service.Login"%>
<%@ page import="net.sf.json.JSONObject"%>
<%
try {
request.setCharacterEncoding("UTF-8");
String username = (String) request.getParameter("username");
String password = (String) request.getParameter("password");//取出login.jsp的值
Login login = new Login();
JSONObject loginResult = login.checkLogin(username, password);
if (1 == loginResult.getInt("status")) {
response.sendRedirect("../IndexServlet");
} else {
out.print("<script language='javaScript'> alert('"
+ loginResult.getString("msg") + "');</script>");
response.setHeader("refresh", "0;url=login.jsp");
}
} catch (Exception e) {
e.printStackTrace();
}
%>
3.用戶驗證Login.java:
package com.service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import net.sf.json.JSONObject;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Login {
public JSONObject checkLogin(String username,String password){
JSONObject result = new JSONObject();
ApplicationContext ctx = new ClassPathXmlApplicationContext("resource/applicationContext.xml");
BasicDataSource dataSource = (BasicDataSource) ctx.getBean("dataSource");
PreparedStatement ps =null;
try {
// 1、獲取連接對象
Connection conn = dataSource.getConnection();
// 2、創建statement類對象,用來執行SQL語句!!
ps = conn.prepareStatement("select password,enabled from sys_user where user_name = ? ");
// 3、創建sql查詢語句
ps.setString(1, username);
// 4、執行sql語句並且換回一個查詢的結果集
ResultSet rs = ps.executeQuery();
if (rs.next()) { // 有查詢結果
if(!password.equals(rs.getString("password"))){
result.put("status", "3");
result.put("msg", "密碼錯誤");
} else if(1!=rs.getInt("enabled")){
result.put("status", "4");
result.put("msg", "改賬號不允許登錄");
} else {
result.put("status", "1");
result.put("msg", "允許登錄");
}
} else {
result.put("status", "2");
result.put("msg", "不存在該賬號");
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
}
4.結果:
登錄界面:
登錄失敗:
登錄成功: