Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение/Отключение к БД MySQL из Servlet 
:(
    Опции темы
initmax
Дата 4.1.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Столкнулся с проблемой обработки подключения/отключения БД,
при запуске приложения под Tomcat, а так же передаче в ссылке методом POST следующего параметра
http://localhost:9999/?page=1

Страница в браузере отображается через раз, т.е. оди раз ошибка:





Код


type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to compile class for JSP
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:486)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    indexServlet.doGet(indexServlet.java:47)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


Второй раз вывод результатов выборки из БД.

грешу на подключение/отключение к БД

Ведь Sevlet принимает запрос от пользователя по которому формирует страницу выбирая информацию из БД,
и передаёт её на обработку в JSP.

Работа программы завершается после вывода данных из JSP ?
Если так то приложения отстаётся подвсишим ибо в Servlet не отрабатывает mySQLConnectObj.disConnected();
как с этим корректно бороться? выполнять mySQLConnectObj.disConnected(); до начала вызова JSP  ?


коды сервлета и JSP



Код

import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import MySQL.*;

public class indexServlet extends HttpServlet {

    private  String getpage;
    //Connected MySQL
    private MySQLConnect mySQLConnectObj = new MySQLConnect();
    private MySQLQuery mySQLQueryObj = new MySQLQuery();

    public void init(){
          mySQLConnectObj.downloadDriver();
          mySQLConnectObj.connected();
          
          //Use current connection, for execution query
          mySQLQueryObj.setConnection(mySQLConnectObj.getConnection());
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, NullPointerException  {


//      if(mySQLConnectObj.getConnection() == null){
            init() ;
//      }

      
      PrintWriter out = response.getWriter();

//GET case useer
      getpage = request.getParameter("page");


      out.print("BEFORE -> MySQLConnectObj.GetConnection() = "+mySQLConnectObj.getConnection());

//Check curent connect to database
      if(mySQLConnectObj.getConnection() != null && getpage.equals("1"))  {

            List<GenPageMySQL> listPageObj = new ArrayList();
            //get List<RowObject>
            mySQLQueryObj.selectAllField("up_menu",listPageObj);

            out.print("Size Page objects = "+listPageObj.size());

            request.setAttribute("upMenu",listPageObj);
            RequestDispatcher Dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/jsp/index.jsp");
            Dispatcher.forward(request, response);
      }


      else if(mySQLConnectObj.getConnection() == null){
            init() ;
      }
      
        out.print("\n\n\n AFTER -> MySQLConnectObj.GetConnection() = "+mySQLConnectObj.getConnection());
        mySQLConnectObj.disConnected();
     }
}




Массив типа List объектов которые содержат информацию о странице, обрабатывается следующим образом

Код

<%-- 
    Document   : upmenu
    Created on : 12.08.2009, 15:37:13
    Author     : Admin
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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>JSP Main Page</title>

        <link rel="stylesheet" type="text/css" href="css/up_menu_darck.css" media="all">
        <link rel="stylesheet" type="text/css" href="css/page_darck.css" media="all">
        <link rel="stylesheet" type="text/css" href="css/base_darck.css" media="all">
        <link rel="stylesheet" type="text/css" href="css/photos.css" media="all">
        <link rel="stylesheet" type="text/css" href="css/left_menu_darck.css" media="all">
    </head>
    <body>

         <c:out value="hello, Max" />
         <c:out value="${10+20/2}" />
         <c:forEach items="${upMenu}" var="Object" >         
                
               <c:out value="${Object.id}"> </c:out>
               <c:out value="${Object.theme}"> </c:out>
               <c:out value="${Object.page}"> </c:out>
   
         </c:forEach>

    </body>
</html>



PM MAIL   Вверх
MaxPayneC
Дата 5.1.2010, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 3
Всего: 9



А что за способ общения с MySQL вы используете? Никогда не слышал о пакете MySQL.*.
PM   Вверх
initmax
Дата 5.1.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Свой самописаный класс
Код


/*
 * Class CreateBaseConnection provide connect to base MySQL
 * 
 */
package MySQL;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
 *
 * @author initmax
 */
public class MySQLConnect {

private String url = null;
private String name = null;
private String password = null;


//Constructor by set default
    public MySQLConnect() {
      url = "jdbc:mysql://localhost/initmax"+"?autoReconnect=true&useUnicode=true&characterEncoding=utf8"+
              "&SET NAMES utf8";
      name = "root";
      password = "111";
    }


//Initialization fields values
    public MySQLConnect(String a_url, String a_name, String a_password){
        url = a_url;
        name = a_name;
        password = a_password;
    }

private Connection CurrentConnect;

//this line need out to txt file

//***********************************************************************
//first need download driver, for work MySQL connect
    public void downloadDriver(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
//            System.out.println("Driver loading success!");
        }

        catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }

//***********************************************************************
//Connected to MySQL Base use download driver
     public void connected(){
            try {
                CurrentConnect = DriverManager.getConnection(url, name, password);
//                System.out.println("Connected.");
            }

            catch (SQLException e) {
                    e.printStackTrace();
            }
     }
        
    
//*********************************************************************
//disconnected base after finish work, get object connect
     public int disConnected() {
         try {
          CurrentConnect.close();
          System.out.println("Disconnected.");
         }

         catch (SQLException e) {
                e.printStackTrace();
         }

         return 0;
      }

//*********************************************************************
//get current connection
      public Connection getConnection() {
          return this.CurrentConnect;
      }

}

PM MAIL   Вверх
MaxPayneC
Дата 5.1.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 3
Всего: 9



Еще у меня вызывает вопрос отсутстие метода doPost, но тут я наверняка сказать не могу ничего, с голыми сервлетами не приходилось работать.
PM   Вверх
magicfly
Дата 5.1.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 21.2.2007

Репутация: 1
Всего: 1



description The server encountered an internal error () that prevented it from fulfilling this request.
Такой экспешен пробрасывается всегда когда он не может зарендерить страницу. Скорее всего в логах должна быть более полная информация об ошибке. Как вариант у вас есть объект который нулл и у него берется проперти
PM MAIL   Вверх
ivanovpv
Дата 6.1.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 2
Всего: 28



Цитата(initmax @  4.1.2010,  22:44 Найти цитируемый пост)
грешу на подключение/отключение к БД


Подключение/отключение к БД не причем. Как правило такая ошибка возникает после нескольких отладочных сессий. Jasper это JSP компилятор Tomcat который парсит JSP в сервлет и потом на лету подсовывает Java компилятору текст сервлета. 

Лечится тем, что вручную очищается кэш Jasper'а - ищите где-то в кишках Томкэта или своего прожекта. Будут файлы навроде *jsp*.java и *jsp*.class надо их снести.


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.