пример соединения с базой данных сервлетов

1

Я использую 64-разрядную ОС Windows 8.1, базу данных oracle 12c и netbeans ide.i создали Java-проект под названием WebApplication1 в моей среде NetBeans. в моей базе данных я создал пользователя С## abc и пароль abc, имеющий SID базы данных orcl. В моей базе данных я создал одну таблицу с именем city с адресом имени столбца и вставил один файл "xyz" в таблицу. Я запускаю проект и в d браузере после записи города в текстовое поле. Я получаю Servlet NewServlet message- в /WebApplication1, но он должен отображать xyz. Где я ошибаюсь?

Я добавил 2 файла jar flies ojdbc14.jar и ojdbc_14.jar.

Мой новый.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) находятся на одном компьютере?
  • 0
    та же коробка ?? я не понял тебя
Показать ещё 20 комментариев
Теги:
jsp
netbeans
jdbc

1 ответ

2
Лучший ответ

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

PrintWriter out = response.getWriter()

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

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

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

  • 0
    хорошо +1 ..... пожалуйста покажите правильный код, как должен быть написан newServlet.java
  • 0
    теперь я получаю эту ошибку после запуска browser- java.sql.SQLException: ORA-28040: нет соответствующего протокола аутентификации

Ещё вопросы

Сообщество Overcoder
Наверх
Меню