No he escrito un blog durante mucho tiempo. Puede que sea demasiado vago y no esté dispuesto a pasar mi tiempo en ello. Pero todavía sé la importancia de escribir un blog en mi corazón. Entonces, a partir de hoy, compartiré con ustedes algunos pequeños ejemplos que aprendí Web Java. Personalmente, no me gustan los conceptos oscuros en los libros, así que pasé más tiempo en algunos ejemplos de aplicaciones. Creo que este método de aprendizaje es muy adecuado para mí, de simple a tradicional, desde superficial hasta profundo
Hablemos de tonterías, comencemos nuestro primer ejemplo:
Servlet implementa Oracle Basic Adición, eliminación, modificación y búsqueda
Entorno de desarrollo: JDK7 +myeclipse10 +tomcat7.0 +oracle 11g
Primero, adjunte el script de creación de la base de datos:
Cree Tabla Student (ID VARCHAR2 (50) Clave primaria No NULL, nombre VARCHAR2 (50) No NULL, CalsSgrent Varchar2 (50) No NULL, Result Varchar (12) No NULL); Insertar en los valores del estudiante (ID, Nombre, CalsSgrent, Result) (Perseq.NextVal, 'Zhang San', '33', '98')
La siguiente figura muestra el diagrama de estructura de código y la interfaz de demostración de funciones que no se realizan mal solo para implementar funciones:
Mmc_01.java
Página // La interfaz principal proporciona métodos para agregar, modificar y eliminar
paquete org.lsy.servlet; import java.io.ioException; import java.io.printwriter; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.statement; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importar oracle.jdbc.oracore.tdspatch; La clase pública MMC_01 extiende httpservlet {// El controlador está en el paquete jar del controlador JDBC configurado en el classpath antes // La dirección de conexión es proporcionada por separado por cada fabricante de la base de datos, por lo que debe recordar separadamente la cadena final estatica final dburl = "jdb: oracle: fin: @localhost: 1521: liusy"; ";"; // El nombre de usuario para conectarse a la base de datos pública static final String dbuser = "Scott"; // La contraseña para conectarse a la base de datos Public static final String dbpass = "tiger"; Public void doget (httpservletrequest solicitud, respuesta httpservletreponse) lanza ServletException, ioexception {// Establecer la codificación de la solicitud y la respuesta, de lo contrario, el código confuso aparecerá fácilmente en la solicitud. respuesta.setcharacterEncoding ("UTF-8"); respuesta.setContentType ("Text/Html; UTF-8"); // Salida Stream PrintWriter out = Response.getWriter (); // Código de conexión de la base de datos Prueba {Connection Conn = NULL; // Objeto que indica la conexión a la declaración de base de datos stmt = null; // indica la operación de actualización de la cadena de la base de datos sql = "insertar en estudiante (id, nombre, calssgrent, resultado) valores ('67 ',' liu 12yu ',' 33 ',' 98 ')"; System.out.println (SQL); // 1. Use la clase de clase para cargar el controlador class.forname ("oracle.jdbc.driver.oracledriver"); // 2. Conéctese a la base de datos conn = drivermanager.getConnection (dburl, dbuser, dbpass); // 3. La interfaz de declaración debe ser instanciada a través de la interfaz de conexión stmt = conn.createStatement (); // Use RS para obtener resultados de consulta. Es mejor no usar * para las declaraciones SQL aquí * Tengo menos campos, por lo que solo quiero ser perezoso, -, - resultSet rs = stmt.executeQuery ("Seleccionar * del estudiante"); out.println ("<! DocType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<Ethead> <title> un servlet </title> </head>"); out.println ("<body>"); // El encabezado de la tabla de salida out.print ("<table align = 'center' border = '1'> <tr> <tr> <td> name" + "</td> <td> class </td> <td> score </td> <td> modificar </td> <td> delete </td> </tr>"); while (rs.next ()) {// get id en la base de datos cadena id = rs.getString ("id"); // emite una columna de elementos out.print ("<tr> <tr> <td>"+rs.getString ("name")+"</td> <td>"+rs.getString ("calsssgrent")+""+"</td> <td>"+rs.getString ("resultado")+"</td>"+"<td> <a href = 'updatePage? id = "+id+"'> modificar </a> </td> "+" <td> <a href = 'delete? id = "+id+"'> delete </a> </td> </tr> "); } out.println ("<td> <a href = addPage> Agregar datos </a> </td>"); out.println ("</body>"); out.println ("</html>"); conn.close (); } catch (Exception e) {E.PrintStackTrace (); } out.flush (); out.close (); }}UpdatePage.java // Obtener los datos que se modificarán y envíen los datos modificados para actualizar
paquete org.lsy.servlet; import java.io.ioException; import java.io.printwriter; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.statement; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import com.sun.crypto.provider.rsacipher; Public Class UpdatePage extiende httpservlet {// La dirección de conexión es proporcionada por separado por cada fabricante de la base de datos, por lo que debe recordar una cadena final estatica final por separado dburl = "jdbc: oracle: delgada: @localhost: 1521: liusy"; // El nombre de usuario para conectarse a la base de datos pública static final String dbuser = "Scott"; // La contraseña para conectarse a la base de datos Public static final String dbpass = "tiger"; public void doget (HTTPServletRequest Solicitud, respuesta httpservletResponse) lanza ServLetException, ioException {String id = request.getParameter ("id"); // Establecer la codificación de la solicitud y la respuesta, de lo contrario, el código confuso aparecerá fácilmente en la página Solicitud. SetcharacterEncoding ("UTF-8"); respuesta.setcharacterEncoding ("UTF-8"); respuesta.setContentType ("Text/Html; UTF-8"); PrintWriter out = Response.getWriter (); Pruebe {Connection conn = null; // El objeto que representa la conexión a la declaración de la base de datos stmt = null; // La operación de actualización de la base de datos // 1. Use la clase de clase para cargar el controlador class.forname ("oracle.jdbc.driver.oracledriver"); // 2. Conéctese a la base de datos conn = drivermanager.getConnection (dburl, dbuser, dbpass); // 3. La interfaz de instrucción debe ser instanciada a través de la interfaz de conexión stmt = conn.createStatement (); // Use RS para obtener los resultados de la consulta. Es mejor no usar la instrucción SQL aquí * Tengo menos campos, así que soy perezoso, -, - resultSet rs = stmt.executeQuery ("seleccione * del estudiante donde id = '"+id+"'"); while (rs.next ()) {out.println ("<! DocType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Ethead> <title> un servlet </title> </head>"); out.println ("<body>"); // Ingrese el formulario de la puntuación y envíelo a actualizar out.print ("<form de acción = 'update' método = 'post'>"); out.print ("<table align = 'center'> <tr> <td> name: <input type = 'text' value = '"+rs.getString ("name")+"' name = 'name' size = 20> </td> </tr> "); out.print (" <tr> <td> class: <input type = 'text' value = '"+rs.getString (" calsssgrent ")+"' name = 'grent' size = 20> </td> </tr> "); out.print (" <tr> <tr> <td> sclay: <input type = 'text' value = '"+rs.getString (" resultado ")+"' name = 'resultado' size = 20> </td> </tr> "); // para ser utilizado como condición para consultar la base de datos, la identificación debe aprobarse aquí out.print (" <input type = 'hidden' value = '"+id+" name =' id '> "); out.print (" <tr> <typy type' type '=' subt '' subt '' valor = 'modificar'> <input type = 'reset' value = 'reet'> </td> </tr> </bild </form> "); out.Print (" </body> "); out.println (" </html> "); }} Update.java recibe los datos para modificar y actualizar la base de datos
paquete org.lsy.servlet; import java.io.ioException; import java.io.printwriter; import java.sql.connection; import java.sql.drivermanager; import java.sql.statement; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; La actualización de la clase pública extiende httpservlet {// El controlador es el paquete jar del controlador JDBC configurado en el classpath antes // La dirección de conexión es proporcionada por separado por cada fabricante de la base de datos, por lo que debe recordar una cadena final estatica estatica por separado dburl = "jdbc: oracle: @localhost: 1521: liusy"; // El nombre de usuario para conectarse a la base de datos pública static final String dbuser = "Scott"; // La contraseña para conectarse a la base de datos Public static final String dbpass = "tiger"; public void doget (HTTPServletRequest Solicitud, respuesta httpServletResponse) lanza ServletException, ioException {try {request.setcharacterEncoding ("utf-8"); respuesta.setcharacterEncoding ("UTF-8"); respuesta.setContentType ("Text/Html; UTF-8"); PrintWriter out = Response.getWriter (); Conexión conn = nulo; // El objeto que representa la conexión a la instrucción de base de datos stmt = null; // La operación de actualización de la base de datos // Obtener la cadena de parámetro id = request.getParameter ("id"); System.out.println (id); Name de cadena = request.getParameter ("nombre"); String Grant = request.getParameter ("Grent"); String result = request.getParameter ("resultado"); // Actualizar SQL String sqlString = "Update Student set name = '"+name+"',"+"calsssgrent = '"+grent+"', resultado = '"+resultado+"' donde id = '"+id+""; // 1. Use la clase de clase para cargar el controlador class.forname ("oracle.jdbc.driver.oracledriver"); // 2. Conéctese a la base de datos conn = drivermanager.getConnection (dburl, dbuser, dbpass); // 3. La interfaz de instrucción debe ser instanciada a través de la interfaz de conexión stmt = conn.createStatement (); int pd = stmt.executeupdate (sqlstring); if (pd! = 0) {out.println ("<! DocType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Ethead> <title> un servlet </title> </head>"); out.println ("<body>"); out.print ("actualizado con éxito <br> <a href = mmc_01> vista lista </a>"); out.println ("</body>"); out.println ("</html>"); } out.flush (); out.close (); stmt.close (); conn.close (); } catch (Exception e) {// tODO: manejar excepción}} public void dopost (httpservletRequest solicitud, respuesta httpServletResponse) arroja servletException, ioexception {doget (solicitud, respuesta); }}addPage .java, agregue la página de datos
paquete org.lsy.servlet; import java.io.ioException; import java.io.printwriter; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; La clase pública addPage extiende httpservlet {public void doget (httpservletRequest solicitud, respuesta httpServletResponse) arroja servletException, ioexception {// establece la codificación de la solicitud y la respuesta, de lo contrario, el código confuso aparecerá fácilmente en la página. respuesta.setcharacterEncoding ("UTF-8"); respuesta.setContentType ("Text/Html; UTF-8"); PrintWriter out = Response.getWriter (); out.println ("<! DocType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Ethead> <title> un servlet </title> </head>"); out.println ("<body>"); // Ingrese el formulario de la puntuación y envíelo para agregar.print ("<form de acción = 'add' método = 'post'>"); out.print ("<table align = 'center'> <tr> <td> name: <input type = 'text' name = 'name' size = 20> </td> </tr>"); out.print ("<tr> <td> class: <input type = 'text' name = 'grent' size = 20> </td> </tr>"); out.print ("<tr> <td> stork: <input type = 'text' name = 'resultado' size = 20> </td> </tr>"); out.print ("<tr> <td> <input type = 'subt' value = 'add'> <input type = 'reset' value = 'reset'> </td> </tr> </table> </form>"); out.println ("<tr> <td> <a href = mmc_01> vea la lista </a> </td> </tr>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Agregue Recibir la transmisión desde AddPage y actualizar la base de datos
paquete org.lsy.servlet; import java.io.ioException; import java.io.printwriter; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedStatement; import java.sql.resultset; import java.sql.statement; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import com.sun.org.apache.xerces.internal.impl.io.utf8reader; importar oracle.jdbc.oracore.tdspatch; Public Class Add extiende httpservlet {// El controlador está en el paquete JAR del controlador JDBC configurado en classpath antes // La dirección de conexión es proporcionada por separado por cada fabricante de la base de datos, por lo que debe recordar una cadena final estatica estatic por separado dburl = "JDBC: Oracle: Thin: @Localhost: 1521: liusy"; // nombre de usuario para conectarse a la base de datos Public static final String dbuser = "Scott"; // Contraseña para conectarse a la base de datos Public static final String dbpass = "tiger"; @Override protegido void dopost (httpservletRequest req, httpservletResponse resp) lanza ServletException, ioexception {// tODO método auto-generado stub doget (req, resp); } public void doget (httpservletrequest solicitud, respuesta httpservletreSponse) lanza ServletException, ioexception {// establece la codificación de la solicitud y la respuesta, de lo contrario, el código confuso aparecerá fácilmente en la solicitud. respuesta.setcharacterEncoding ("UTF-8"); respuesta.setContentType ("Text/Html; UTF-8"); // Salida Stream PrintWriter out = Response.getWriter (); // Código de conexión de la base de datos Prueba {Connection Conn = NULL; // Objeto que representa la conexión a la base de datos pstmt = null; // indica la operación de actualización de la cadena de la base de datos Namestring = request.getParameter ("nombre"); String Grantstring = request.getParameter ("Grent"); String ResultString = request.getParameter ("resultado"); System.out.print (Namestring); String sql = "inserte en el estudiante (ID, nombre, calssgrent, resultado)valores (perseq.nextval, '"+Namestring+"', '"+Grentstring+"', '"+resultados de treinta Dbpass); E.PrintStackTrace ();
archivo de configuración web.xml
<? xml versión = "1.0" encoding = "utf-8"?> <web-app versión = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <psiplip-name> </plawing-name> <bequey-file-list> <cile> <Servlet-name> MMC_01 </servlet-name> <ervlet-class> org.lsy.servlet.mmc_01 </servlet-class> </servlet> <ervlet> <ervlet-name> delete </servlet-name> <ervlet-class> org.lsy.servlet.delete </servlet-class> </servlet> <ervlet> <servlet> <Servlet-name> add </servlet-name> <servlet-class> org.lsy.servlet.add </servlet-class> </servlet> <ervlet> <servlet-name> addPage </servlet-name> <ervlet-class> org.lsy.servlet.addpage </servlet-class> </servlet> <servlet-name> uptine> <servlet-class>org.lsy.servlet.UpdatePage</servlet-class> </servlet> <servlet> <servlet-name>Update</servlet-name> <servlet-class>org.lsy.servlet.Update</servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name>MMC_01</servlet-name> <url-pattern>/MMC_01</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name>delete</servlet-name> <url-pattern>/delete</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Add</servlet-name> <url-pattern>/Add</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AddPage</servlet-name> <url-pattern>/AddPage</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name>UpdatePage</servlet-name> <url-pattern>/UpdatePage</url-pattern> </servlet-mapping> <servlet-mapping> <Servlet-mapping> <Servlet-name> update </servlet-name> <url-pattern>/update </url-pattern> </servlet-mapping> </beb-app>
No soy un pájaro viejo, he estado aprendiendo. Probar si hay algún error. El código anterior tiene muchas piezas duplicadas y muchas partes irrazonables. En comparación con las conexiones de la base de datos, están directamente expuestas al servlet de operación. Para ver más intuitivamente, no lo cambié ...
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.