Advertisement
KuoHsiangYu

GetNameData2.java【後端】

Aug 22nd, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.33 KB | None | 0 0
  1. package ch01;
  2.  
  3. import java.io.IOException;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8.  
  9. import javax.naming.Context;
  10. import javax.naming.InitialContext;
  11. import javax.naming.NamingException;
  12. import javax.servlet.ServletException;
  13. import javax.servlet.annotation.WebServlet;
  14. import javax.servlet.http.HttpServlet;
  15. import javax.servlet.http.HttpServletRequest;
  16. import javax.servlet.http.HttpServletResponse;
  17. import javax.sql.DataSource;
  18.  
  19. @WebServlet("/GetNameData2")
  20. public class GetNameData2 extends HttpServlet {
  21.     // 這個Servlet負責把「職務代理人姓名資料」傳回前端,並由JavaScript AJAX呼叫。
  22.  
  23.     private static final long serialVersionUID = 1L;
  24.     private DataSource dataSource = null;
  25.  
  26.     @Override
  27.     public void init() throws ServletException {
  28.         super.init();
  29.         // initialize method
  30.         try {
  31.             Context context = new InitialContext();
  32.             dataSource = (DataSource) context.lookup("java:comp/env/jdbc/ExamOne");
  33.         } catch (NamingException e) {
  34.             e.printStackTrace();
  35.         }
  36.     }
  37.  
  38.     @Override
  39.     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  40.             throws ServletException, IOException {
  41.         processRequest(request, response);
  42.     }// end of doGet method
  43.  
  44.     @Override
  45.     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  46.             throws ServletException, IOException {
  47.         processRequest(request, response);
  48.     }// end of doPost method
  49.  
  50.     private void processRequest(HttpServletRequest request, HttpServletResponse response) throws IOException {
  51.         /* Setting the Encoding of Input Data */
  52.         request.setCharacterEncoding("UTF-8");
  53.  
  54.         /* Setting the encoding of the output data to the web page */
  55.         response.setContentType("text/html; charset=UTF-8");
  56.  
  57.         Connection connection = null;
  58.         Statement statement = null;
  59.         ResultSet resultSet = null;
  60.         StringBuilder stringBuilder = new StringBuilder();
  61.         try {
  62.             connection = dataSource.getConnection();
  63.             String queryStatement = "SELECT cname FROM Employee";// 查詢資料指令,把名單查出來。
  64.             statement = connection.createStatement();
  65.             resultSet = statement.executeQuery(queryStatement);
  66.             boolean isSecond = false;
  67.             // flag第一次為false,第二次才被設定為true
  68.             while (resultSet.next()) {
  69.                 // 邊查資料,邊動態產生名字陣列,並用逗號隔開。
  70.                 if (true == isSecond) {
  71.                     stringBuilder.append(",");
  72.                 } else {
  73.                     isSecond = true;
  74.                 }
  75.                 stringBuilder.append(resultSet.getString("cname"));
  76.             }
  77.             response.getWriter().print(stringBuilder.toString());// 一定要加這行程式碼印出來。才可以讓AJAX把動態產生的下拉式選單製作出來。
  78.         } catch (SQLException e) {
  79.             e.printStackTrace();
  80.         } finally {
  81.             if (resultSet != null) {
  82.                 try {
  83.                     resultSet.close();
  84.                     resultSet = null;
  85.                 } catch (SQLException e) {
  86.                     e.printStackTrace();
  87.                 }
  88.             }
  89.             if (statement != null) {
  90.                 try {
  91.                     statement.close();
  92.                     statement = null;
  93.                 } catch (SQLException e) {
  94.                     e.printStackTrace();
  95.                 }
  96.             }
  97.             if (connection != null) {
  98.                 try {
  99.                     connection.close();
  100.                     connection = null;
  101.                 } catch (SQLException e) {
  102.                     e.printStackTrace();
  103.                 }
  104.             }
  105.         } // end of finally
  106.     }// end of processRequest method
  107. }// end of getNameData2 Servlet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement