俊星的BLOG

          APACHE Geronimo 試用之JDBC

          1、通過控制臺創建相應的數據庫,PICTURES表以及數據庫連接池:
          其中表的創建語句如下:
          create table pictures(name varchar(32not null primary key, pic blob(16M));
          更多具體內容請參考:http://cwiki.apache.org/GMOxDOC21/web-application-for-jdbc-access.html

          2、實現圖片上傳:
          package jdbc;

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.IOException;
          import java.io.PrintWriter;
          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.SQLException;
          import javax.annotation.Resource;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import javax.sql.DataSource;

          public class ImageUpload extends javax.servlet.http.HttpServlet implements
                  javax.servlet.Servlet 
          {
              @Resource(name 
          = "jdbc/usersds")
              
          private DataSource ds;
              
          static final long serialVersionUID = 1L;

              
          public ImageUpload() {
                  
          super();
              }


              
          protected void doGet(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  doProcess(request, response);
              }


              
          protected void doProcess(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  Connection dbconnect 
          = null;
                  PreparedStatement stmnt 
          = null;
                  String pic 
          = request.getParameter("ImageLoc");
                  String name 
          = request.getParameter("ImageName");
                  
          try {
                      File f 
          = new File(pic);
                      FileInputStream fis 
          = new FileInputStream(f);
                      dbconnect 
          = ds.getConnection();
                      stmnt 
          = dbconnect.prepareStatement("INSERT INTO PICTURES ("
                              
          + "NAME," + "PIC )" + " VALUES(?,?)");
                      stmnt.setString(
          1, name);
                      stmnt.setBinaryStream(
          2, fis, (int) f.length());
                      stmnt.execute();
                      PrintWriter out 
          = response.getWriter();
                      out.println(
          "<html>");
                      out.println(
          "<body>");
                      out
                              .println(
          "Congratulations your image has been successfully uploaded");
                      String html 
          = "<a href='/WebJDBC/ImageDownload?ImageName=" + name
                              
          + ">view the image</a>";
                      out.println(html);
                      out.println(
          "</body>");
                      out.println(
          "</html>");

                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }
           finally {
                      
          try {
                          dbconnect.close();
                          stmnt.close();
                      }
           catch (SQLException e) {
                          e.printStackTrace();
                      }

                  }

              }


              
          protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  doProcess(request, response);
              }

          }

          3、實現圖片下載:
          package jdbc;

          import java.io.IOException;
          import java.io.OutputStream;
          import java.sql.Blob;
          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;

          import javax.annotation.Resource;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import javax.sql.DataSource;

          public class ImageDownload extends javax.servlet.http.HttpServlet implements
                  javax.servlet.Servlet 
          {
              @Resource(name 
          = "jdbc/usersds")
              
          private DataSource ds;
              
          static final long serialVersionUID = 1L;

              
          public ImageDownload() {
                  
          super();
              }


              
          protected void doGet(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  doProcess(request, response);
              }


              
          protected void doProcess(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  Connection dbconnect 
          = null;
                  ResultSet rs 
          = null;
                  PreparedStatement stmnt 
          = null;
                  
          try {
                      dbconnect 
          = ds.getConnection();
                      String s 
          = request.getParameter("ImageName");
                      stmnt 
          = dbconnect
                              .prepareStatement(
          "SELECT PIC FROM PICTURES WHERE NAME=?");
                      stmnt.setString(
          1, s);
                      rs 
          = stmnt.executeQuery();
                      
          if (rs.next()) {
                          
          // Get as a BLOB
                          Blob aBlob = rs.getBlob(1);
                          
          byte[] b = new byte[4096];
                          java.io.InputStream ip 
          = aBlob.getBinaryStream();
                          OutputStream out 
          = null;
                          
          int c = 0;
                          out 
          = response.getOutputStream();
                          response.setContentType(
          "image/jpeg");
                          
          while (c != -1{
                              c 
          = ip.read(b);
                              out.write(b);
                              out.flush();
                          }

                          ip.close();

                      }


                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }
           finally {
                      
          try {
                          dbconnect.close();
                          stmnt.close();
                          rs.close();
                      }
           catch (SQLException e) {
                          e.printStackTrace();
                      }

                  }


              }


              
          protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  doProcess(request, response);
              }

          }

          4、圖片上傳JSP頁面:
          <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
              pageEncoding
          ="ISO-8859-1"
          %>
          <!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=ISO-8859-1">
          <title>Image Upload</title>
          </head>
          <body>
          <h2>Select a Image and Upload it</h2>
          <form action="/WebJDBC/ImageUpload">
          <table>
              
          <tr>
                  
          <td>Location of the Image(full path)</td>
                  
          <td><Input type="text" name="ImageLoc"></td>
              
          </tr>
              
          <tr>
                  
          <td>Name of the Image(Unique Name)</td>
                  
          <td><Input type="text" name="ImageName"></td>
              
          </tr>
              
          <tr>
                  
          <td><Input type="submit" value="submit"></td>
              
          <tr>
          </table>
          </form>
          </body>
          </html>

          5、圖片下載JSP頁面:
          <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
              pageEncoding
          ="ISO-8859-1"
          %>
          <!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=ISO-8859-1">
          <title>Download Image</title>
          </head>
          <body>
          <h2>Name a Image to download</h2>
          <form action="/WebJDBC/ImageDownload">
          <table>
          <tr>
          <td>
          Name of the Image
          </td>
          <td>
          <Input type="text" name="ImageName">
          </td>
          </tr>
          <tr>
          <td>
          <Input type="submit" value="submit">
          </td>
          <tr>
          </table>
          </form>
          </body>
          </html>

          6、geronimo-web.xml的配置:
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"
              xmlns:nam
          ="http://geronimo.apache.org/xml/ns/naming-1.2" 
              xmlns:sec
          ="http://geronimo.apache.org/xml/ns/security-2.0"
              xmlns:sys
          ="http://geronimo.apache.org/xml/ns/deployment-1.2">
              
          <sys:environment>
                  
          <sys:moduleId>
                      
          <sys:groupId>default</sys:groupId>
                      
          <sys:artifactId>WebJDBC</sys:artifactId>
                      
          <sys:version>1.0</sys:version>
                      
          <sys:type>car</sys:type>
                  
          </sys:moduleId>
                  
          <sys:dependencies>
                      
          <sys:dependency>
                          
          <sys:groupId>console.dbpool</sys:groupId>
                          
          <sys:artifactId>jdbc_usersds</sys:artifactId>
                      
          </sys:dependency>
                  
          </sys:dependencies>
              
          </sys:environment>
              
          <context-root>/WebJDBC</context-root>
              
          <nam:resource-ref>
                  
          <nam:ref-name>jdbc/usersds</nam:ref-name>
                  
          <nam:pattern>
                      
          <nam:groupId>console.dbpool</nam:groupId>
                      
          <nam:artifactId>jdbc_usersds</nam:artifactId>
                      
          <nam:name>jdbc/usersds</nam:name>
                  
          </nam:pattern>
              
          </nam:resource-ref>
          </web-app>

          7、WEB.XML文件的配置:
          <?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>WebJDBC</display-name>
              
          <welcome-file-list>
                  
          <welcome-file>index.jsp</welcome-file>
              
          </welcome-file-list>
              
          <servlet>
                  
          <description></description>
                  
          <display-name>ImageUpload</display-name>
                  
          <servlet-name>ImageUpload</servlet-name>
                  
          <servlet-class>jdbc.ImageUpload</servlet-class>
              
          </servlet>
              
          <servlet>
                  
          <description></description>
                  
          <display-name>ImageDownload</display-name>
                  
          <servlet-name>ImageDownload</servlet-name>
                  
          <servlet-class>jdbc.ImageDownload</servlet-class>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>ImageUpload</servlet-name>
                  
          <url-pattern>/ImageUpload</url-pattern>
              
          </servlet-mapping>
              
          <servlet-mapping>
                  
          <servlet-name>ImageDownload</servlet-name>
                  
          <url-pattern>/ImageDownload</url-pattern>
              
          </servlet-mapping>
          </web-app>

          8、發布及測試:
          將應用打包成WebJDBC.war,發布之后通過訪問http://localhost:8080/WebJDBC/即可看到程序運行效果,附件請點擊此處下載http://www.aygfsteel.com/Files/kinkding/WebJDBC.rar

          posted on 2009-05-12 21:53 俊星 閱讀(170) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 漾濞| 房山区| 双柏县| 云梦县| 朔州市| 武城县| 横峰县| 元江| 鹿邑县| 乌鲁木齐县| 长春市| 延安市| 石林| 瑞安市| 横山县| 万山特区| 卢湾区| 湘西| 缙云县| 双峰县| 江安县| 电白县| 神木县| 独山县| 永仁县| 连平县| 资源县| 漠河县| 富锦市| 辽中县| 富平县| 桂平市| 临清市| 榆社县| 兴安县| 甘孜| 盱眙县| 卢龙县| 祥云县| 右玉县| 民县|