Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产1区2区在线观看,在线观看一区二区精品视频,国产在线高清一级毛片

          整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          Servlet 數(shù)據(jù)庫訪問

          Servlet 數(shù)據(jù)庫訪問

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


          創(chuàng)建測試數(shù)據(jù)

          接下來我們在 MySQL 中創(chuàng)建 RUNOOB 數(shù)據(jù)庫,并創(chuàng)建 websites 數(shù)據(jù)表,表結(jié)構(gòu)如下:

          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;

          插入一些數(shù)據(jù):

          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');



          訪問數(shù)據(jù)庫

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

          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 驅(qū)動名及數(shù)據(jù)庫 URL static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; static final String DB_URL="jdbc:mysql://localhost:3306/RUNOOB"; 
           // 數(shù)據(jù)庫的用戶名與密碼,需要根據(jù)自己的設置 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; // 設置響應內(nèi)容類型 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 驅(qū)動器 Class.forName("com.mysql.jdbc.Driver"); 
           // 打開一個連接 conn=DriverManager.getConnection(DB_URL,USER,PASS); // 執(zhí)行 SQL 查詢 stmt=conn.createStatement(); String sql; sql="SELECT id, name, url FROM websites"; ResultSet rs=stmt.executeQuery(sql); // 展開結(jié)果集數(shù)據(jù)庫 while(rs.next()){ // 通過字段檢索 int id=rs.getInt("id"); String name=rs.getString("name"); String url=rs.getString("url"); 
           // 輸出數(shù)據(jù) out.println("ID: " + id); out.println(", 站點名稱: " + name); out.println(", 站點 URL: " + url); out.println("<br />"); } out.println("</body></html>"); // 完成后關(guān)閉 rs.close(); stmt.close(); conn.close(); } catch(SQLException se) { // 處理 JDBC 錯誤 se.printStackTrace(); } catch(Exception e) { // 處理 Class.forName 錯誤 e.printStackTrace(); }finally{ // 最后是用于關(guān)閉資源的塊 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); }}

          現(xiàn)在讓我們來編譯上面的 Servlet,并在 web.xml 文件中創(chuàng)建以下條目:

          .... <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的實現(xiàn)類

          因為Servlet實際上是接口,我們訪問的其實是Servlet的實現(xiàn)類

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

          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{
          	/**
          	 * 銷毀方法
          	 * 在服務器正常關(guān)閉時,執(zhí)行,執(zhí)行一次。
          	 */
          	@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被創(chuàng)建時,執(zhí)行。只會執(zhí)行一次。
          	 */
          	@Override
          	public void init(ServletConfig arg0) throws ServletException {
          		System.out.println("init...");
          		
          	}
          	/**
          	 * 提供服務的方法
          	 * 每一次Servlet被訪問時,執(zhí)行。執(zhí)行多次
          	 */
          	@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>


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

          1.1、返回HTML內(nèi)容

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

          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內(nèi)容
                  response.setContentType("text/html;charset=UTF-8");
                  // 獲取輸出流
                  PrintWriter writer=response.getWriter();
          
                  // 輸出HTML內(nèi)容
                  writer.println("<!DOCTYPE html>");
                  writer.println("<html lang=\"en\">");
                  writer.println("<head>");
                  writer.println("    <meta charset=\"UTF-8\">");
                  writer.println("    <title>響應HTML內(nèi)容</title>");
                  writer.println("</head>");
                  writer.println("<body>");
                  writer.println("    <h3>Hello World!你好,世界!</h3>");
                  writer.println("</body>");
                  writer.println("</html>");
          
                  // 關(guān)閉流
                  writer.close();
              }
          }

          運行結(jié)果如下所示:

          1.2、返回JSON內(nèi)容

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

          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內(nèi)容
                  response.setContentType("application/json;charset=UTF-8");
                  // 獲取輸出流
                  PrintWriter writer=response.getWriter();
          
                  // 輸出JSON內(nèi)容
                  writer.println("{");
                  writer.println(" \"username\":\"名字是Tom-2024\",");
                  writer.println(" \"password\":\"123456\"");
                  writer.println("}");
          
                  // 關(guān)閉流
                  writer.close();
              }
          }

          運行結(jié)果如下所示:

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

          今天就到這里,未完待續(xù)~~


          主站蜘蛛池模板: 91亚洲一区二区在线观看不卡| av一区二区三区人妻少妇| 国产午夜精品一区二区三区极品 | 日韩精品一区二区午夜成人版| 九九无码人妻一区二区三区| 日韩av无码一区二区三区| 久久精品综合一区二区三区| 精品无码一区在线观看| 国产视频一区在线播放| 一区二区三区在线免费| 一区高清大胆人体| 国产精品一区在线观看你懂的| 亚洲av片一区二区三区| 成人区人妻精品一区二区三区 | 久久精品无码一区二区三区不卡 | 国产精品乱码一区二区三区 | 亚洲AV无码一区二区乱子伦| 国产成人无码一区二区三区| 日韩精品一区二区三区国语自制| 一区二区精品视频| 亚洲av色香蕉一区二区三区| 日韩在线不卡免费视频一区| 麻豆一区二区三区蜜桃免费| 亚洲一区二区观看播放| 日本亚洲成高清一区二区三区| 精品国产一区二区麻豆| 精品国产AV一区二区三区| 国产一区二区内射最近更新| 日韩视频一区二区| 亚洲日本精品一区二区| 人体内射精一区二区三区| 一区二区三区在线|欧| 精品国产亚洲一区二区三区| 无码人妻AⅤ一区二区三区水密桃| 国精产品一区一区三区有限在线| 极品人妻少妇一区二区三区| 精产国品一区二区三产区| 日韩美女视频一区| 免费看一区二区三区四区| 亚洲一区二区在线免费观看| 日韩精品无码中文字幕一区二区 |