整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Servlet 數據庫訪問

          Servlet 數據庫訪問

          基本概念下手,讓我們來創建一個簡單的表,并在表中創建幾條記錄。


          創建測試數據

          接下來我們在 MySQL 中創建 RUNOOB 數據庫,并創建 websites 數據表,表結構如下:

          CREATE TABLE `websites` (
           `id` int(11) NOT NULL AUTO_INCREMENT,
           `name` char(20) NOT NULL DEFAULT '' COMMENT '站點名稱',
           `url` varchar(255) NOT NULL DEFAULT '',
           `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
           `country` char(10) NOT NULL DEFAULT '' COMMENT '國家',
           PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

          插入一些數據:

          INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘寶', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鳥教程', 'http://www.runoob.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');



          訪問數據庫

          下面的實例演示了如何使用 Servlet 訪問 RUNOOB 數據庫。

          package com.runoob.test;import java.io.IOException;import java.io.PrintWriter;import java.sql.*;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/**
          * Servlet implementation class DatabaseAccess
          */@WebServlet("/DatabaseAccess")public class DatabaseAccess extends HttpServlet { private static final long serialVersionUID=1L; // JDBC 驅動名及數據庫 URL static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; static final String DB_URL="jdbc:mysql://localhost:3306/RUNOOB"; 
           // 數據庫的用戶名與密碼,需要根據自己的設置 static final String USER="root"; static final String PASS="123456";
           /**
           * @see HttpServlet#HttpServlet()
           */
           public DatabaseAccess() {
           super();
           // TODO Auto-generated constructor stub
           } /**
           * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
           */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn=null; Statement stmt=null; // 設置響應內容類型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); String title="Servlet Mysql 測試 - 菜鳥教程"; String docType="<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n"); try{ // 注冊 JDBC 驅動器 Class.forName("com.mysql.jdbc.Driver"); 
           // 打開一個連接 conn=DriverManager.getConnection(DB_URL,USER,PASS); // 執行 SQL 查詢 stmt=conn.createStatement(); String sql; sql="SELECT id, name, url FROM websites"; ResultSet rs=stmt.executeQuery(sql); // 展開結果集數據庫 while(rs.next()){ // 通過字段檢索 int id=rs.getInt("id"); String name=rs.getString("name"); String url=rs.getString("url"); 
           // 輸出數據 out.println("ID: " + id); out.println(", 站點名稱: " + name); out.println(", 站點 URL: " + url); out.println("<br />"); } out.println("</body></html>"); // 完成后關閉 rs.close(); stmt.close(); conn.close(); } catch(SQLException se) { // 處理 JDBC 錯誤 se.printStackTrace(); } catch(Exception e) { // 處理 Class.forName 錯誤 e.printStackTrace(); }finally{ // 最后是用于關閉資源的塊 try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } 
           } /**
           * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
           */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

          現在讓我們來編譯上面的 Servlet,并在 web.xml 文件中創建以下條目:

          .... <servlet> <servlet-name>DatabaseAccess</servlet-name> <servlet-class>com.runoob.test.DatabaseAccess</servlet-class> </servlet> <servlet-mapping> <servlet-name>DatabaseAccess</servlet-name> <url-pattern>/TomcatTest/DatabaseAccess</url-pattern> </servlet-mapping>....

          ervlet里面的方法(也叫Servlet中的生命周期):是因為Servlet方法牽扯到Servlet的生命周期。

          如何使用瀏覽器訪問Servlet的實現類

          因為Servlet實際上是接口,我們訪問的其實是Servlet的實現類

          首先我們需要配置文件設置一下,當我們使用瀏覽器服務器的時候

          package cn.itcast.web.servlet;
          
          import java.io.IOException;
          
          import javax.servlet.Servlet;
          import javax.servlet.ServletConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          
          public class ServletDemo2 implements Servlet{
          	/**
          	 * 銷毀方法
          	 * 在服務器正常關閉時,執行,執行一次。
          	 */
          	@Override
          	public void destroy() {
          		System.out.println("destroy...");
          		
          	}
          	/**
          	 * 獲取ServletConfig對象:其實就是Servlet的配置對象
          	 * 
          	 */
          	@Override
          	public ServletConfig getServletConfig() {
          		// TODO Auto-generated method stub
          		return null;
          	}
          	/**
          	 * 獲取Servlet的一些信息,版本,作者等待
          	 */
          	@Override
          	public String getServletInfo() {
          		// TODO Auto-generated method stub
          		return null;
          	}
          	/**
          	 * 初始化方法
          	 * 在Servlet被創建時,執行。只會執行一次。
          	 */
          	@Override
          	public void init(ServletConfig arg0) throws ServletException {
          		System.out.println("init...");
          		
          	}
          	/**
          	 * 提供服務的方法
          	 * 每一次Servlet被訪問時,執行。執行多次
          	 */
          	@Override
          	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
          		System.out.println("service...");
          		
          	}
          
          }
          
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
            <display-name>Project1</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>
            
          <!--   配置Servlet -->
          	<servlet>
          		<servlet-name>demo2</servlet-name>
          		<servlet-class>cn.itcast.web.servlet.ServletDemo2</servlet-class>
          	</servlet>
          	
          	<servlet-mapping>
          		<servlet-name>demo2</servlet-name>
          		<url-pattern>/demo2</url-pattern>
          	</servlet-mapping>
          </web-app>


          面已經介紹了HttpServletResponse響應對象中的一些常用方法,這一小節介紹如何使用HttpServletResponse響應對象,將結果返回給瀏覽器客戶端。

          1.1、返回HTML內容

          使用Servlet返回HTML內容給客戶端,是一個比較常見的功能,因為Servlet本來就是用于JavaWeb開發的,而HTML就是Web開發的三大核心語言之一。這里給出一個響應HTML內容給客戶端的案例代碼:

          package com.gitcode.servlet;
          
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import java.io.IOException;
          import java.io.PrintWriter;
          
          /**
           * @version 1.0.0
           * @Date: 2024/2/10 20:20
           * @Author ZhuYouBin
           * @Description:
           */
          public class HtmlResponseServlet extends HttpServlet {
              @Override
              protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  // 響應HTML內容
                  response.setContentType("text/html;charset=UTF-8");
                  // 獲取輸出流
                  PrintWriter writer=response.getWriter();
          
                  // 輸出HTML內容
                  writer.println("<!DOCTYPE html>");
                  writer.println("<html lang=\"en\">");
                  writer.println("<head>");
                  writer.println("    <meta charset=\"UTF-8\">");
                  writer.println("    <title>響應HTML內容</title>");
                  writer.println("</head>");
                  writer.println("<body>");
                  writer.println("    <h3>Hello World!你好,世界!</h3>");
                  writer.println("</body>");
                  writer.println("</html>");
          
                  // 關閉流
                  writer.close();
              }
          }

          運行結果如下所示:

          1.2、返回JSON內容

          JSON格式在實際的Web開發中,可以說是最常用的數據交互格式啦,在一些前后端分離的項目中,都是采用JSON來進行數據交互的,所以這里給出一個響應JSON內容的案例代碼:

          package com.gitcode.servlet;
          
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import java.io.IOException;
          import java.io.PrintWriter;
          
          /**
           * @version 1.0.0
           * @Date: 2024/2/10 20:20
           * @Author ZhuYouBin
           * @Description:
           */
          public class JsonResponseServlet extends HttpServlet {
              @Override
              protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  // 響應JSON內容
                  response.setContentType("application/json;charset=UTF-8");
                  // 獲取輸出流
                  PrintWriter writer=response.getWriter();
          
                  // 輸出JSON內容
                  writer.println("{");
                  writer.println(" \"username\":\"名字是Tom-2024\",");
                  writer.println(" \"password\":\"123456\"");
                  writer.println("}");
          
                  // 關閉流
                  writer.close();
              }
          }

          運行結果如下所示:

          以上,就是使用HttpServletResponse對象返回HTML和JSON數據格式。

          今天就到這里,未完待續~~


          主站蜘蛛池模板: 国产日韩综合一区二区性色AV| 精产国品一区二区三产区| 国产主播福利一区二区| 男人的天堂精品国产一区| 一区二区三区高清| 国产内射999视频一区| 精品视频一区二区三区在线播放| 91一区二区视频| 无码国产精品一区二区免费3p| 亚洲日本中文字幕一区二区三区 | 亚洲av无码不卡一区二区三区 | 亚欧成人中文字幕一区| 丰满人妻一区二区三区免费视频| 日本精品3d动漫一区二区| 2022年亚洲午夜一区二区福利| 国产精品无圣光一区二区| 综合无码一区二区三区| 精品一区二区三区四区在线| 视频一区二区精品的福利| 日本美女一区二区三区| 精品在线视频一区| 亚洲国产精品成人一区| 亚州国产AV一区二区三区伊在| 全国精品一区二区在线观看| 日本一区二区三区在线网| 精品一区二区三区在线观看l | 亚洲福利一区二区三区| 亚洲av乱码一区二区三区香蕉| 久久无码AV一区二区三区| 91视频国产一区| 亚洲乱码av中文一区二区| 日韩免费无码一区二区视频| 国产伦理一区二区三区| 色综合视频一区二区三区| 久久影院亚洲一区| 蜜桃无码一区二区三区| 精品无码综合一区二区三区| 狠狠爱无码一区二区三区| 精品乱子伦一区二区三区| 亚洲AV乱码一区二区三区林ゆな| 麻豆一区二区三区精品视频|