servlet oracle数据库连接示例
servlet oracle database connection example
我正在使用 windows 8.1 64 位 OS、oracle 12c 数据库和 netbeans ide.i 创建了一个名为 WebApplication1[的 java Web 项目=28=] 在我的 netbeans IDE 中。
在我的数据库中,我创建了一个用户 C##abc 和密码 abc,数据库 SID 是 orcl。在我的数据库中,我创建了一个名为 city 的 table,列名为 address,并将一个数据 'xyz' 插入到 table城市。在文本框中写入城市后,我 运行 项目和 d 浏览器中我收到消息 - Servlet NewServlet at /WebApplication1 但它应该显示 xyz。我哪里错了?
我添加了 2 个 jar flies ojdbc14.jar 和 ojdbc_14.jar 文件。
我的new.jsp
<form action="NewServlet" method="post">
<font face="verdana" size="2">
Enter Table Name :<input type="text" name="table">
<input type="submit" value="Display">
</font>
</form>
NewServlet.java
package p;
import java.io.IOException;
import java.io.PrintWriter;
import static java.lang.System.out;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class NewServlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet NewServlet at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String tb=request.getParameter("table");
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","c##abc","abc");
Statement st=con.createStatement();
out.println("connection established successfully...!!");
ResultSet rs=st.executeQuery("Select * from "+tb);
while(rs.next())
{
out.println(rs); }
}
catch (ClassNotFoundException | SQLException ex){
out.println(ex);
}
在您的 doPost()
方法中,您使用的 out
是您导入的(静态的)System.out
。在 processRequest()
中,您可以使用:
覆盖它
PrintWriter out = response.getWriter()
... 这有点令人困惑,我会选择一个不同的变量名。但是你没有在 doPost().
中这样做,所以你在 println
方法中编写的任何内容都不会通过 HttpServletResponse
对浏览器执行任何操作,它只是转到 JVM 控制台。
从您发布的代码中看不出 processRequest()
是如何被调用的 - 必须是这样才能让您看到您得到的输出。要么您没有显示从该方法调用 doGet()
/processRequest()
,要么 servlet 处理自动回落到 doGet()
因为响应尚未启动,或者它正在重定向出现错误情况后自动返回。
即使使用 response.getWriter()
的局部变量,您也需要发送正确的 HTML,而不仅仅是您现在拥有的普通非标记消息,否则您只会得到一个空白页.
我正在使用 windows 8.1 64 位 OS、oracle 12c 数据库和 netbeans ide.i 创建了一个名为 WebApplication1[的 java Web 项目=28=] 在我的 netbeans IDE 中。 在我的数据库中,我创建了一个用户 C##abc 和密码 abc,数据库 SID 是 orcl。在我的数据库中,我创建了一个名为 city 的 table,列名为 address,并将一个数据 'xyz' 插入到 table城市。在文本框中写入城市后,我 运行 项目和 d 浏览器中我收到消息 - Servlet NewServlet at /WebApplication1 但它应该显示 xyz。我哪里错了?
我添加了 2 个 jar flies ojdbc14.jar 和 ojdbc_14.jar 文件。
我的new.jsp
<form action="NewServlet" method="post">
<font face="verdana" size="2">
Enter Table Name :<input type="text" name="table">
<input type="submit" value="Display">
</font>
</form>
NewServlet.java
package p;
import java.io.IOException;
import java.io.PrintWriter;
import static java.lang.System.out;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class NewServlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet NewServlet at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String tb=request.getParameter("table");
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","c##abc","abc");
Statement st=con.createStatement();
out.println("connection established successfully...!!");
ResultSet rs=st.executeQuery("Select * from "+tb);
while(rs.next())
{
out.println(rs); }
}
catch (ClassNotFoundException | SQLException ex){
out.println(ex);
}
在您的 doPost()
方法中,您使用的 out
是您导入的(静态的)System.out
。在 processRequest()
中,您可以使用:
PrintWriter out = response.getWriter()
... 这有点令人困惑,我会选择一个不同的变量名。但是你没有在 doPost().
中这样做,所以你在 println
方法中编写的任何内容都不会通过 HttpServletResponse
对浏览器执行任何操作,它只是转到 JVM 控制台。
从您发布的代码中看不出 processRequest()
是如何被调用的 - 必须是这样才能让您看到您得到的输出。要么您没有显示从该方法调用 doGet()
/processRequest()
,要么 servlet 处理自动回落到 doGet()
因为响应尚未启动,或者它正在重定向出现错误情况后自动返回。
即使使用 response.getWriter()
的局部变量,您也需要发送正确的 HTML,而不仅仅是您现在拥有的普通非标记消息,否则您只会得到一个空白页.