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 国产欧美另类久久久品,日韩在线小视频,伊人国产在线视频

          整合營(yíng)銷(xiāo)服務(wù)商

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

          免費(fèi)咨詢(xún)熱線(xiàn):

          Servlet 數(shù)據(jù)庫(kù)訪問(wèn)

          Servlet 數(shù)據(jù)庫(kù)訪問(wèn)

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


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

          接下來(lái)我們?cè)?MySQL 中創(chuàng)建 RUNOOB 數(shù)據(jù)庫(kù),并創(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 '站點(diǎn)名稱(chēng)',
           `url` varchar(255) NOT NULL DEFAULT '',
           `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
           `country` char(10) NOT NULL DEFAULT '' COMMENT '國(guó)家',
           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', '菜鳥(niǎo)教程', 'http://www.runoob.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');



          訪問(wèn)數(shù)據(jù)庫(kù)

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

          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ū)動(dòng)名及數(shù)據(jù)庫(kù) URL static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; static final String DB_URL="jdbc:mysql://localhost:3306/RUNOOB"; 
           // 數(shù)據(jù)庫(kù)的用戶(hù)名與密碼,需要根據(jù)自己的設(shè)置 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; // 設(shè)置響應(yīng)內(nèi)容類(lèi)型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); String title="Servlet Mysql 測(cè)試 - 菜鳥(niǎo)教程"; 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{ // 注冊(cè) JDBC 驅(qū)動(dòng)器 Class.forName("com.mysql.jdbc.Driver"); 
           // 打開(kāi)一個(gè)連接 conn=DriverManager.getConnection(DB_URL,USER,PASS); // 執(zhí)行 SQL 查詢(xún) stmt=conn.createStatement(); String sql; sql="SELECT id, name, url FROM websites"; ResultSet rs=stmt.executeQuery(sql); // 展開(kāi)結(jié)果集數(shù)據(jù)庫(kù) while(rs.next()){ // 通過(guò)字段檢索 int id=rs.getInt("id"); String name=rs.getString("name"); String url=rs.getString("url"); 
           // 輸出數(shù)據(jù) out.println("ID: " + id); out.println(", 站點(diǎn)名稱(chēng): " + name); out.println(", 站點(diǎn) URL: " + url); out.println("<br />"); } out.println("</body></html>"); // 完成后關(guān)閉 rs.close(); stmt.close(); conn.close(); } catch(SQLException se) { // 處理 JDBC 錯(cuò)誤 se.printStackTrace(); } catch(Exception e) { // 處理 Class.forName 錯(cuò)誤 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)在讓我們來(lái)編譯上面的 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中的生命周期):是因?yàn)镾ervlet方法牽扯到Servlet的生命周期。

          如何使用瀏覽器訪問(wèn)Servlet的實(shí)現(xiàn)類(lèi)

          因?yàn)镾ervlet實(shí)際上是接口,我們?cè)L問(wèn)的其實(shí)是Servlet的實(shí)現(xiàn)類(lèi)

          首先我們需要配置文件設(shè)置一下,當(dāng)我們使用瀏覽器服務(wù)器的時(shí)候

          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{
          	/**
          	 * 銷(xiāo)毀方法
          	 * 在服務(wù)器正常關(guān)閉時(shí),執(zhí)行,執(zhí)行一次。
          	 */
          	@Override
          	public void destroy() {
          		System.out.println("destroy...");
          		
          	}
          	/**
          	 * 獲取ServletConfig對(duì)象:其實(shí)就是Servlet的配置對(duì)象
          	 * 
          	 */
          	@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)建時(shí),執(zhí)行。只會(huì)執(zhí)行一次。
          	 */
          	@Override
          	public void init(ServletConfig arg0) throws ServletException {
          		System.out.println("init...");
          		
          	}
          	/**
          	 * 提供服務(wù)的方法
          	 * 每一次Servlet被訪問(wèn)時(shí),執(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響應(yīng)對(duì)象中的一些常用方法,這一小節(jié)介紹如何使用HttpServletResponse響應(yīng)對(duì)象,將結(jié)果返回給瀏覽器客戶(hù)端。

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

          使用Servlet返回HTML內(nèi)容給客戶(hù)端,是一個(gè)比較常見(jiàn)的功能,因?yàn)镾ervlet本來(lái)就是用于JavaWeb開(kāi)發(fā)的,而HTML就是Web開(kāi)發(fā)的三大核心語(yǔ)言之一。這里給出一個(gè)響應(yīng)HTML內(nèi)容給客戶(hù)端的案例代碼:

          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 {
                  // 響應(yīng)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>響應(yīng)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();
              }
          }

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

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

          JSON格式在實(shí)際的Web開(kāi)發(fā)中,可以說(shuō)是最常用的數(shù)據(jù)交互格式啦,在一些前后端分離的項(xiàng)目中,都是采用JSON來(lái)進(jìn)行數(shù)據(jù)交互的,所以這里給出一個(gè)響應(yīng)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 {
                  // 響應(yīng)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();
              }
          }

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

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

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


          主站蜘蛛池模板: 日韩一区精品视频一区二区 | 国内精品一区二区三区在线观看| 一区二区三区观看免费中文视频在线播放| 国产一区在线mmai| 久久99久久无码毛片一区二区| 亚洲AV日韩综合一区| 国产精品日本一区二区不卡视频| 精品一区二区三区视频在线观看| 久久久久久人妻一区二区三区| 香蕉免费一区二区三区| 日本在线不卡一区| 亚洲永久无码3D动漫一区| 插我一区二区在线观看| 一区二区三区在线看| 立川理惠在线播放一区| 日韩一区二区三区在线| 国模一区二区三区| 国内精品一区二区三区最新| 国产精品久久久久一区二区三区| 国产精品福利一区二区久久| 99久久人妻精品免费一区| 亚洲福利电影一区二区?| 人妻AV一区二区三区精品| 日韩精品无码中文字幕一区二区| 精品一区二区在线观看| 无码人妻一区二区三区免费看| 无码AV天堂一区二区三区| 久久久久人妻精品一区二区三区| 国产成人一区二区三区在线观看| 亚洲一区免费观看| 美女视频一区三区网站在线观看| 亚洲欧洲无码一区二区三区| 色综合视频一区中文字幕 | 日本一区二区三区高清| 国精产品一区二区三区糖心| 亚洲av日韩综合一区在线观看| 精品无码人妻一区二区三区品| 久久精品无码一区二区三区不卡| 日韩aⅴ人妻无码一区二区| 亚洲一区二区三区国产精品| 国产午夜精品一区二区三区漫画 |