Categorías
database JSP/JSF

Coloque la conexión de la base de datos en ServletContextListener

ServletContextListener es útil para informar sobre la iniciación y destrucción del contexto. En un sistema web de gestión de contenido típico, normalmente hay una base de datos detrás. El siguiente ejemplo demuestra cómo conectar la base de datos MySQL durante la etapa de inicialización del contexto.

Herramientas y paquetes: eclipse y Conector JDBC MySQL.

1. Cree un proyecto web dinámico TestServlet, importe el archivo .jar del conector al proyecto.

El archivo jar estará en el directorio lib. Cree una base de datos «testdb» y una tabla «usuario». Ponga algunos registros adentro para probar la conexión más tarde.

2. Coloque un elemento de escucha en el descriptor de implementación web.xml y también coloque la configuración de la base de datos en él.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>TestServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <listener>
    <listener-class>com.programcreek.testservletlistener.myServletListener</listener-class>
  </listener>
  <context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost/</param-value>
  </context-param>
  <context-param>
  	<param-name>database</param-name>
  	<param-value>testdb</param-value>
  </context-param>
  <context-param>
  	<param-name>user_name</param-name>
  	<param-value>xiaoran</param-value>
  </context-param>
  <context-param>
  	<param-name>password</param-name>
  	<param-value>xiaoran</param-value>
  </context-param>
  <servlet>
    <description></description>
    <display-name>testClass</display-name>
    <servlet-name>testClass</servlet-name>
    <servlet-class>edu.uams.testservlet.testClass</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testClass</servlet-name>
    <url-pattern>/testClass</url-pattern>
  </servlet-mapping>
 
</web-app>
  Código Java para conectar la base de datos Mysql y usar el tipo Arraylist

3. Cree una clase de escucha «myServletListener»

package com.programcreek.testservletlistener;
 
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
/**
 * Application Lifecycle Listener implementation class myServletListener
 *
 */
public class myServletListener implements ServletContextListener {
 
	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent event) {
 
    	ServletContext sc = event.getServletContext();
 
    	String url = sc.getInitParameter("url");
    	String user_name = sc.getInitParameter("user_name");
    	String password = sc.getInitParameter("password");
    	String database = sc.getInitParameter("database");
    	Database db = new Database(url + database, user_name, password);
    	//System.out.println("in the listener!!");
    	sc.setAttribute("db", db);
 
    }
 
	/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    }
 
}

4. Escriba la clase Base de datos que sirve para conectar la base de datos y proporcionar operaciones de base de datos.

package com.programcreek.testservletlistener;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Database {
 
	private Connection conn = null;
 
	public Database(String url, String user_name, String password) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
 
			this.conn = DriverManager.getConnection(url, user_name, password);
 
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 
	public Connection getConnection() {
		return this.conn;
	}
 
	public ResultSet runSql(String sql) throws SQLException {
		Statement sta = conn.createStatement();
		return sta.executeQuery(sql);
	}
}
  Servlet redirige a una descarga de archivo con el nombre cambiado

5. Escriba la clase de Servlet de prueba.

package com.programcreek.testservletlistener;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
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;
 
//import javax.servlet.ServletContext;
 
/**
 * Servlet implementation class testClass
 */
public class testClass extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
 
		response.setContentType("text/html");
 
		Database db = (Database) getServletContext().getAttribute("db");
		PrintWriter out = response.getWriter();
 
		String sql = "select * from user";
		ResultSet rs;
		try {
			rs = db.runSql(sql);
 
			while(rs.next()){
				out.println(rs.getString("user_name"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
	}
 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
 
}
  Código Java para conectar MS SQL Server mediante la autenticación de SQL Server

6. Compile el proyecto e impleméntelo en tomcat 6.

Cree el proyecto y copie los archivos en el directorio «webapps» de tomcat.
El directorio y los archivos finalmente se verían como el siguiente directorio:
-TestServlet

— index.html

— WEB-INF

————— clases
————————— com
———————————— programcreek
————————————————– —– testservletlistener

————————————————– —————————————– Database.class

————————————————– —————————————– myServletListener.class

————————————————– —————————————– testClass.class

————— lib

————————— conector-mysql-java-5.1.7-bin.jar

Eso es. Hice esto solo por diversión, y no estoy seguro de que sea la forma correcta de conectar la base de datos.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *