Spec-Zone .ru
спецификации, руководства, описания, API

21.3.14.2. Простой Сервлет с Glassfish, Connector/J и MySQL

Этот раздел описывает простой сервлет, который может использоваться в среде Glassfish, чтобы получить доступ к базе данных MySQL. Как с предыдущим разделом, этот пример принимает базу данных-образец world устанавливается.

Проект устанавливается со следующей структурой каталогов:

index.htmlWEB-INF   |   - web.xml   - sun-web.xml   - classes        |        - HelloWebServlet.java        - HelloWebServlet.class

Код для сервлета, расположенного в HelloWebServlet.java, следующие:

import javax.servlet.http.*;import javax.servlet.*;import java.io.*;import java.sql.*;import javax.sql.*;import javax.naming.*;public class HelloWebServlet extends HttpServlet {  InitialContext ctx = null;  DataSource ds = null;  Connection conn = null;  PreparedStatement ps = null;  ResultSet rs = null;  String sql = "SELECT Name, Population FROM Country WHERE Name=?";  public void init () throws ServletException {    try {      ctx = new InitialContext();      ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQLDataSource");      conn = ds.getConnection();      ps = conn.prepareStatement(sql);    }    catch (SQLException se) {      System.out.println("SQLException: "+se.getMessage());    }    catch (NamingException ne) {      System.out.println("NamingException: "+ne.getMessage());      }    }  public void destroy () {    try {      if (rs != null)        rs.close();      if (ps != null)        ps.close();      if (conn != null)        conn.close();      if (ctx != null)        ctx.close();     }         catch (SQLException se) {      System.out.println("SQLException: "+se.getMessage());    }    catch (NamingException ne) {      System.out.println("NamingException: "+ne.getMessage());      }    }  public void doPost(HttpServletRequest req, HttpServletResponse resp){    try {      String country_name = req.getParameter("country_name");          resp.setContentType("text/html");      PrintWriter writer = resp.getWriter();      writer.println("<html><body>");      writer.println("<p>Country: "+country_name+"</p>");      ps.setString(1, country_name);      rs = ps.executeQuery();      if (!rs.next()){        writer.println("<p>Country does not exist!</p>");      }      else {        rs.beforeFirst();        while(rs.next()) {          writer.println("<p>Name: "+rs.getString("Name")+"</p>");          writer.println("<p>Population: "+rs.getString("Population")+"</p>");        }      }      writer.println("</body></html>");      writer.close();     }    catch (Exception e) {      e.printStackTrace();    }    }  public void doGet(HttpServletRequest req, HttpServletResponse resp){    try {          resp.setContentType("text/html");      PrintWriter writer = resp.getWriter();      writer.println("<html><body>");      writer.println("<p>Hello from servlet doGet()</p>");      writer.println("</body></html>");      writer.close();     }    catch (Exception e) {      e.printStackTrace();    }    }}

В предыдущем коде основное doGet() метод реализуется, но не используется в примере. Код, чтобы установить соединение с базой данных находится как показано в предыдущем примере, Раздел 21.3.14.1, "Простое Приложение JSP с Glassfish, Connector/J и MySQL", и наиболее удобно располагается в сервлете init() метод. Соответствующее освобождение от ресурсов располагается в уничтожать методе. Основная функциональность сервлета располагается в doPost() метод. Если пользователь вводит nto входная форма название страны, которое может быть расположено в базе данных, совокупность страны возвращается. Код вызывается, используя действие POST, связанное с входной формой. Форма определяется в файле index.html:

<html>  <head><title>HelloWebServlet</title></head>    <body>    <h1>HelloWebServlet</h1>        <p>Please enter country name:</p>        <form action="HelloWebServlet" method="POST">      <input type="text" name="country_name" length="50" />      <input type="submit" value="Submit" />    </form>      </body></html>

XML-файлы web.xml и sun-web.xml что касается примера в предыдущем разделе, Раздел 21.3.14.1, "Простое Приложение JSP с Glassfish, Connector/J и MySQL", никакие дополнительные изменения не требуются.

Whe, компилирующий исходный код Java, Вы должны будете определить путь к файлу javaee.jar. На Windows это может быть сделано следующим образом:

shell> javac -classpath c:\glassfishv3\glassfish\lib\javaee.jar HelloWebServlet.java 

Как только код правильно располагается в пределах его структуры каталогов, и компилируется, приложение может быть развернуто в Glassfish. Это делается точно таким же образом как описано в предыдущем разделе, Раздел 21.3.14.1, "Простое Приложение JSP с Glassfish, Connector/J и MySQL".

После того, как развернутый приложение может быть запущено изнутри Консоли администрирования Glassfish. Введите название страны, такое как "Англия", и приложение возвратит "Страну, не существует!". Введите "Францию", и приложение возвратит совокупность 59225700.