将连接数据库需要的那几项数据以参数形式写进web.xml.有两个位置可以放。
!)web.xml全局配置
context-param
<context-param>
<param-name>driver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</context-param>
<context-param>
<param-name>conn</param-name>
<param-value>
jdbc:oracle:thin:@127.0.0.1:1521:orcl
</param-value>
</context-param>
<context-param>
<param-name>user</param-name>
<param-value>scott</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>tiger</param-value>
</context-param>取法:
ServletContext context= getServletContext();
String dbdriver = context.getInitParameter("driver");
String dburl = context.getInitParameter("conn");
String user = context.getInitParameter("user");
String password = context.getInitParameter("password");2)Servlet内部参数<init-param>
<servlet>
<servlet-name>xuefei2</servlet-name>
<servlet-class>nwpu.edu.cn.xuefei.FirstServlet</servlet-class>
<init-param>
<param-name>driver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<init-param>
<param-name>conn</param-name>
<param-value>
jdbc:oracle:thin:@127.0.0.1:1521:oracle
</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>scott</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>tiger</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>xuefei2</servlet-name>
<url-pattern>/xuefei2</url-pattern>
</servlet-mapping>取法:
ServletConfig config = getServletConfig();
String dbdriver = config.getInitParameter("driver");
String dburl = config.getInitParameter("conn");
String user = config.getInitParameter("user");
String password = config.getInitParameter("password");
取出需要的参数后,用参数得到连接:
直接连接数据库
try {
Class.forName(dbdriver);
conn = DriverManager.getConnection(dburl, user, password);
System.out.println("直接连接到数据库。");
} catch (Exception e) {
throw new ServletException(e);
}数据源:此时需要在META-INF下写context.xml
try {
// InitialContext initContext = new InitialContext();
// Context context = (Context) initContext.lookup("java:comp/env");
// DataSource ds = (DataSource) context.lookup("jdbc/ORACLE");Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/ORACLE");conn = ds.getConnection();
System.out.println("通过连接池连接到数据库。");
} catch (Exception e) {
throw new ServletException(e);
}
完整示例:
package nwpu.edu.cn.xuefei;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;public class FirstServlet extends HttpServlet {
private Connection conn = null;public void init() throws ServletException {
// ServletConfig config = getServletConfig();
//
// String dbdriver = config.getInitParameter("driver");
// String dburl = config.getInitParameter("conn");
// String user = config.getInitParameter("user");
// String password = config.getInitParameter("password");
//
// try {
// Class.forName(dbdriver);
// conn = DriverManager.getConnection(dburl, user, password);
// System.out.println("直接连接到数据库。");
// } catch (Exception e) {
// throw new ServletException(e);
// }
try {
// InitialContext initContext = new InitialContext();
// Context context = (Context) initContext.lookup("java:comp/env");
// DataSource ds = (DataSource) context.lookup("jdbc/ORACLE");Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/ORACLE");conn = ds.getConnection();
System.out.println("通过连接池连接到数据库。");
} catch (Exception e) {
throw new ServletException(e);
}
}public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String name = request.getParameter("name");String password = request.getParameter("password");
if (validateUser(name, password)) {
response.setContentType("text/html;charset=utf-8");// 设定内容类型
PrintWriter out = response.getWriter();// 获取输出流
out.println("<HTML>");
out.println(" <HEAD><TITLE>Login success!!</TITLE></HEAD>");
out.println(" <BODY>");
out.print("<center>WELCOME " + name + "</center>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
} else {response.sendRedirect("index.jsp");
}}
private boolean validateUser(String name, String password) {
// TODO Auto-generated method stub
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn
.prepareStatement("SELECT * FROM java_web_user WHERE user_id=? AND password=?");
ps.setString(1, name);
ps.setString(2, password);
rs = ps.executeQuery();
if (rs.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}