Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает простой сервлет, который может использоваться в среде 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.