2015-02-04 2 views
1

Я использую Windows 8.1 64-разрядную ОС, базу данных Oracle 12c и netbeans ide.i создал веб-проект java, названный как WebApplication1 в моей сети netbeans. in my database Я создал пользователя C## abc и пароль abc с базой данных SID orcl. В моей базе данных я создал одну таблицу, названную город с названием колонки адрес и вставил одну информацию «xyz» в таблицу города. Я запускаю проект и в браузере 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); 
    } 
+0

Являются ли оба сервера (netbeans и oracle) находящимися на одной коробке? – mmmmmpie

+0

такой же коробка ?? я не получил u – Tom

+0

Действуют ли базы данных и веб-сервер на одном компьютере? – mmmmmpie

ответ

2

В вашем методе doPost(), то out вы используете System.out, который вы импортировали (как статические). В processRequest() вы переопределить с:

PrintWriter out = response.getWriter() 

... который немного сбивает с толку, и я бы выбрать другое имя переменной. Но вы не делаете этого в doPost(). Так что ничего, что вы пишете в этом методе с println, делает браузеру через HttpServletResponse, он просто собирается на консоль JVM.

Из кода, который вы отправили, не очевидно, как processRequest() затем вызывается, что должно быть для вас, чтобы увидеть результат, который вы получили. Либо вы не показывали вызов doGet()/processRequest() из этого метода, либо обработка сервлета автоматически возвращается к doGet(), потому что ответ не был инициирован или он автоматически перенаправляется на него после ошибки.

Даже с локальной переменной для response.getWriter() вам необходимо отправить правильный HTML, а не только обычные сообщения без тегов, которые у вас есть сейчас, иначе вы просто получите пустую страницу.

+0

ok +1 ..... PLS показать d правильный код, как newServlet.java должно быть написано – Tom

+0

теперь я получаю эту ошибку после запуска browser- java.sql.SQLException: ORA-28040: Нет соответствующего протокола аутентификации – Tom

Смежные вопросы