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 日本中文在线播放,日韩视频久久,精品香蕉在线观看免费

          整合營銷服務商

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

          免費咨詢熱線:

          JSP 連接數(shù)據(jù)庫

          JSP 連接數(shù)據(jù)庫

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

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

          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ù)表顯示如下:

          SELECT操作

          接下來的這個例子告訴我們?nèi)绾问褂肑STL SQL標簽來運行SQL SELECT語句:

          <%@ page language="java" contentType="text/html; charset=UTF-8"

          pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*,java.sql.*"%><%@ page import="javax.servlet.http.*,javax.servlet.*" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

          <html><head><title>SELECT 操作</title></head><body><!--

          JDBC 驅(qū)動名及數(shù)據(jù)庫 URL

          數(shù)據(jù)庫的用戶名與密碼,需要根據(jù)自己的設置

          useUnicode=true&characterEncoding=utf-8 防止中文亂碼

          --><sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

          url="jdbc:mysql://localhost:3306/RUNOOB?useUnicode=true&characterEncoding=utf-8"

          user="root" password="123456"/>

          <sql:query dataSource="${snapshot}" var="result">SELECT * from websites;</sql:query><h1>JSP 數(shù)據(jù)庫實例 - 菜鳥教程</h1><table border="1" width="100%"><tr>

          <th>ID</th>

          <th>站點名</th>

          <th>站點地址</th></tr><c:forEach var="row" items="${result.rows}"><tr>

          <td><c:out value="${row.id}"/></td>

          <td><c:out value="${row.name}"/></td>

          <td><c:out value="${row.url}"/></td></tr></c:forEach></table>

          </body></html>

          訪問這個JSP例子,運行結果如下:

          INSERT操作

          這個例子告訴我們?nèi)绾问褂肑STL SQL標簽來運行SQL INSERT語句:

          <%@ page language="java" contentType="text/html; charset=UTF-8"

          pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*,java.sql.*"%><%@ page import="javax.servlet.http.*,javax.servlet.*" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

          <html><head><title>SELECT 操作</title></head><body><!--

          JDBC 驅(qū)動名及數(shù)據(jù)庫 URL

          數(shù)據(jù)庫的用戶名與密碼,需要根據(jù)自己的設置

          useUnicode=true&characterEncoding=utf-8 防止中文亂碼

          --><sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

          url="jdbc:mysql://localhost:3306/RUNOOB?useUnicode=true&characterEncoding=utf-8"

          user="root" password="123456"/><!--

          插入數(shù)據(jù)

          --><sql:update dataSource="${snapshot}" var="result">INSERT INTO websites (name,url,alexa,country) VALUES ('菜鳥教程移動站', 'http://m.runoob.com', 5093, 'CN');</sql:update><sql:query dataSource="${snapshot}" var="result">SELECT * from websites;</sql:query><h1>JSP 數(shù)據(jù)庫實例 - 菜鳥教程</h1><table border="1" width="100%"><tr>

          <th>ID</th>

          <th>站點名</th>

          <th>站點地址</th></tr><c:forEach var="row" items="${result.rows}"><tr>

          <td><c:out value="${row.id}"/></td>

          <td><c:out value="${row.name}"/></td>

          <td><c:out value="${row.url}"/></td></tr></c:forEach></table>

          </body></html>

          訪問這個JSP例子,運行結果如下:

          DELETE操作

          這個例子告訴我們?nèi)绾问褂肑STL SQL標簽來運行SQL DELETE語句:

          <%@ page language="java" contentType="text/html; charset=UTF-8"

          pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*,java.sql.*"%><%@ page import="javax.servlet.http.*,javax.servlet.*" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

          <html><head><title>SELECT 操作</title></head><body><!--

          JDBC 驅(qū)動名及數(shù)據(jù)庫 URL

          數(shù)據(jù)庫的用戶名與密碼,需要根據(jù)自己的設置

          useUnicode=true&characterEncoding=utf-8 防止中文亂碼

          --><sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

          url="jdbc:mysql://localhost:3306/RUNOOB?useUnicode=true&characterEncoding=utf-8"

          user="root" password="123456"/><!--

          刪除 ID 為 11 的數(shù)據(jù)

          --><sql:update dataSource="${snapshot}" var="count">

          DELETE FROM websites WHERE Id=? <sql:param value="" /></sql:update><sql:query dataSource="${snapshot}" var="result">SELECT * from websites;</sql:query><h1>JSP 數(shù)據(jù)庫實例 - 菜鳥教程</h1><table border="1" width="100%"><tr>

          <th>ID</th>

          <th>站點名</th>

          <th>站點地址</th></tr><c:forEach var="row" items="${result.rows}"><tr>

          <td><c:out value="${row.id}"/></td>

          <td><c:out value="${row.name}"/></td>

          <td><c:out value="${row.url}"/></td></tr></c:forEach></table>

          </body></html>

          訪問這個JSP例子,運行結果如下:

          UPDATE操作

          這個例子告訴我們?nèi)绾问褂肑STL SQL標簽來運行SQL UPDATE語句:

          <%@ page language="java" contentType="text/html; charset=UTF-8"

          pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*,java.sql.*"%><%@ page import="javax.servlet.http.*,javax.servlet.*" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

          <html><head><title>SELECT 操作</title></head><body><!--

          JDBC 驅(qū)動名及數(shù)據(jù)庫 URL

          數(shù)據(jù)庫的用戶名與密碼,需要根據(jù)自己的設置

          useUnicode=true&characterEncoding=utf-8 防止中文亂碼

          --><sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

          url="jdbc:mysql://localhost:3306/RUNOOB?useUnicode=true&characterEncoding=utf-8"

          user="root" password="123456"/><!--

          修改 ID 為 3 的名字:菜鳥教程改為 RUNOOB

          --><c:set var="SiteId" value="3"/>

          <sql:update dataSource="${snapshot}" var="count">

          UPDATE websites SET name='RUNOOB' WHERE Id=? <sql:param value="${SiteId}" /></sql:update><sql:query dataSource="${snapshot}" var="result">SELECT * from websites;</sql:query><h1>JSP 數(shù)據(jù)庫實例 - 菜鳥教程</h1><table border="1" width="100%"><tr>

          <th>ID</th>

          <th>站點名</th>

          <th>站點地址</th></tr><c:forEach var="row" items="${result.rows}"><tr>

          <td><c:out value="${row.id}"/></td>

          <td><c:out value="${row.name}"/></td>

          <td><c:out value="${row.url}"/></td></tr></c:forEach></table>

          </body></html>

          訪問這個JSP例子,運行結果如下:

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          當瀏覽器請求一個網(wǎng)頁時,它會向網(wǎng)絡服務器發(fā)送一系列不能被直接讀取的信息,因為這些信息是作為HTTP信息頭的一部分來傳送的。您可以查閱HTTP協(xié)議來獲得更多的信息。

          下表列出了瀏覽器端信息頭的一些重要內(nèi)容,在以后的網(wǎng)絡編程中將會經(jīng)常見到這些信息:

          信息描述
          Accept指定瀏覽器或其他客戶端可以處理的MIME類型。它的值通常為 image/pngimage/jpeg
          Accept-Charset指定瀏覽器要使用的字符集。比如 ISO-8859-1
          Accept-Encoding指定編碼類型。它的值通常為 gzipcompress
          Accept-Language指定客戶端首選語言,servlet會優(yōu)先返回以當前語言構成的結果集,如果servlet支持這種語言的話。比如 en,en-us,ru等等
          Authorization在訪問受密碼保護的網(wǎng)頁時識別不同的用戶
          Connection表明客戶端是否可以處理HTTP持久連接。持久連接允許客戶端或瀏覽器在一個請求中獲取多個文件。Keep-Alive 表示啟用持久連接
          Content-Length僅適用于POST請求,表示 POST 數(shù)據(jù)的字節(jié)數(shù)
          Cookie返回先前發(fā)送給瀏覽器的cookies至服務器
          Host指出原始URL中的主機名和端口號
          If-Modified-Since表明只有當網(wǎng)頁在指定的日期被修改后客戶端才需要這個網(wǎng)頁。 服務器發(fā)送304碼給客戶端,表示沒有更新的資源
          If-Unmodified-Since與If-Modified-Since相反, 只有文檔在指定日期后仍未被修改過,操作才會成功
          Referer標志著所引用頁面的URL。比如,如果你在頁面1,然后點了個鏈接至頁面2,那么頁面1的URL就會包含在瀏覽器請求頁面2的信息頭中
          User-Agent用來區(qū)分不同瀏覽器或客戶端發(fā)送的請求,并對不同類型的瀏覽器返回不同的內(nèi)容

          HttpServletRequest類

          request對象是javax.servlet.http.HttpServletRequest類的實例。每當客戶端請求一個頁面時,JSP引擎就會產(chǎn)生一個新的對象來代表這個請求。

          request對象提供了一系列方法來獲取HTTP信息頭,包括表單數(shù)據(jù),cookies,HTTP方法等等。

          接下來將會介紹一些在JSP編程中常用的獲取HTTP信息頭的方法。詳細內(nèi)容請見下表:

          序號方法& 描述
          1Cookie[] getCookies()返回客戶端所有的Cookie的數(shù)組
          2Enumeration getAttributeNames()返回request對象的所有屬性名稱的集合
          3Enumeration getHeaderNames()返回所有HTTP頭的名稱集合
          4Enumeration getParameterNames()返回請求中所有參數(shù)的集合
          5HttpSession getSession()返回request對應的session對象,如果沒有,則創(chuàng)建一個
          6HttpSession getSession(boolean create)返回request對應的session對象,如果沒有并且參數(shù)create為true,則返回一個新的session對象
          7Locale getLocale()返回當前頁的Locale對象,可以在response中設置
          8Object getAttribute(String name)返回名稱為name的屬性值,如果不存在則返回null。
          9ServletInputStream getInputStream()返回請求的輸入流
          10String getAuthType()返回認證方案的名稱,用來保護servlet,比如 "BASIC" 或者 "SSL" 或 null 如果 JSP沒設置保護措施
          11String getCharacterEncoding()返回request的字符編碼集名稱
          12String getContentType()返回request主體的MIME類型,若未知則返回null
          13String getContextPath()返回request URI中指明的上下文路徑
          14String getHeader(String name)返回name指定的信息頭
          15String getMethod()返回此request中的HTTP方法,比如 GET,,POST,或PUT
          16String getParameter(String name)返回此request中name指定的參數(shù),若不存在則返回null
          17String getPathInfo()返回任何額外的與此request URL相關的路徑
          18String getProtocol()返回此request所使用的協(xié)議名和版本
          19String getQueryString()返回此 request URL包含的查詢字符串
          20String getRemoteAddr()返回客戶端的IP地址
          21String getRemoteHost()返回客戶端的完整名稱
          22String getRemoteUser()返回客戶端通過登錄認證的用戶,若用戶未認證則返回null
          23String getRequestURI()返回request的URI
          24String getRequestedSessionId()返回request指定的session ID
          25String getServletPath()返回所請求的servlet路徑
          26String[] getParameterValues(String name)返回指定名稱的參數(shù)的所有值,若不存在則返回null
          27boolean isSecure()返回request是否使用了加密通道,比如HTTPS
          28int getContentLength()返回request主體所包含的字節(jié)數(shù),若未知的返回-1
          29int getIntHeader(String name)返回指定名稱的request信息頭的值
          30int getServerPort()返回服務器端口號

          HTTP信息頭示例

          在這個例子中,我們會使用HttpServletRequest類的getHeaderNames()方法來讀取HTTP信息頭。這個方法以枚舉的形式返回當前HTTP請求的頭信息。

          獲取Enumeration對象后,用標準的方式來遍歷Enumeration對象,用hasMoreElements()方法來確定什么時候停止,用nextElement()方法來獲得每個參數(shù)的名字。

          <%@ page language="java" contentType="text/html; charset=UTF-8"

          pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*" %><!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><h2>HTTP 頭部請求實例</h2><table width="100%" border="1" align="center"><tr bgcolor="#949494"><th>Header Name</th><th>Header Value(s)</th></tr><%

          Enumeration headerNames=request.getHeaderNames();

          while(headerNames.hasMoreElements()) {

          String paramName=(String)headerNames.nextElement();

          out.print("<tr><td>" + paramName + "</td>\n");

          String paramValue=request.getHeader(paramName);

          out.println("<td> " + paramValue + "</td></tr>\n");

          }%></table></body></html>

          訪問main.jsp,將會得到以下結果:

          您可以在上面代碼中嘗試HttpServletRequest類的其它方法。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          SP:Java Server Pages。JSP是一種網(wǎng)頁的編碼格式,不同于HTML的是JSP中是由 HTML中的標簽指令 和 Java邏輯代碼 拼湊而成, 其中的Java代碼類似于JavaScript中的邏輯代碼, 但相對比來說JSP中的Java代碼更方便閱讀和書寫.

          一:JSP的運行原理

          當JSP頁面被運行時,WEB容器會把請求交給JSP引擎處理,會將JSP翻譯成一個_jspServlet,然后按照Servlet的調(diào)用方式來進行調(diào)用,

          瀏覽器向服務器發(fā)請求,不管訪問的是什么資源,其實都是在訪問Servlet,所以當訪問一個jsp頁面時,其實也是在訪問一個Servlet,服務器在執(zhí)行jsp的時候,首先把jsp翻譯成一個Servlet,所以我們訪問jsp時,其實不是在訪問jsp,而是在訪問jsp翻譯過后的那個Servlet,

          二:Tomcat

          Tomcat在Web中的作用:

          Tomcat是Web中的容器,

          當客戶在Web服務器中輸入請求的時候, 如果請求的動態(tài)頁面, 那么Web服務器會創(chuàng)建一個Servlet來處理, Servlet就是Java代碼, 只是在服務器端的Java代碼, Servlet通過配置文件來攔截客戶所發(fā)出的請求, 并進行相應的處理, 最后反饋到客戶端.

          在這一系列的請求中,Web服務器是如何創(chuàng)建出Servlet來對請求進行處理? 而Tomcat的作用就是幫助Web服務器來創(chuàng)建Servlet的

          Tomcat是應用(java)服務器,它只是一個Servlet容器,是Apache的擴展,處理動態(tài)頁面的部分

          Tomcat各個文件夾的含義

          • bin:二進制執(zhí)行文件。里面最常用的文件是startup.bat
          • conf:配置目錄。里面最核心的文件是server.xml。可以在里面改端口號等。默認端口號是8080,也就是說,此端口號不能被其他應用程序占用。
          • lib:庫文件。tomcat運行時需要的jar包所在的目錄
          • logs:日志
          • temp:臨時產(chǎn)生的文件,即緩存
          • webapps:web的應用程序。web應用放置到此目錄下瀏覽器可以直接訪問
          • work:編譯以后的class文件。

          當我們通過瀏覽器訪問index.jsp時,服務器首先將index.jsp翻譯成一個index_jsp.class,在Tomcat服務的work\Catalina\localhost\項目名\org\apache\jsp 目錄下可以看到index_jsp.class的源代碼文件index_jsp.java

          index_jsp這個類是繼承 org.apache.jasper.runtime.HttpJspBase這個類的,通過查看Tomcat服務器的源代碼,可以知道在apache-tomcat-6.0.20-src\java\org\apache\jasper\runtime目錄下存HttpJspBase這個類的源代碼文件

          HttpJspBase 類是繼承 HttpServlet 的,所以 HttpJspBase 類是一個 Servlet ,而 index_jsp 又是繼承 HttpJspBase類的,所以index_jsp類也是一個Servlet,所以當瀏覽器訪問服務器上的index.jsp頁面時,其實就是在訪問index_jsp這個Servlet,index_jsp這個Servlet使用_jspService這個方法處理請求。

          三:Jsp中的HTML代碼和Java代碼如何發(fā)送到客戶端

          1:jsp中的代碼是由 Java代碼 和 HTML 代碼組成的 但是兩種不同的代碼是如何實現(xiàn)他們的作用的?

          在客戶端發(fā)出請求時(請求的是動態(tài)代碼) 但是客戶端卻只能看到HTML代碼, Java代碼是客戶端看不到的

          原因是: 請求的JSP頁面中,所有的代碼是通過了Web服務器(在Tomcat下)編譯后的Servlet代碼, 在jsp中編寫的java代碼和html代碼都會被翻譯到_jspService方法中去,在jsp中編寫的java代碼會原封不動地翻譯成java代碼,如<%out.print("HelloJsp");%>直接翻譯成out.print("Hello Jsp");,而HTML代碼則會翻譯成使用out.write("<html標簽>\r\n");的形式輸出到瀏覽器。在jsp頁面中編寫的html排版標簽都是以out.write("<html標簽>\r\n");的形式輸出到瀏覽器,瀏覽器拿到html代碼后才能夠解析執(zhí)行html代碼。

          當執(zhí)行_jspService方法處理請求時,就會執(zhí)行在jsp編寫的java代碼了,所以Jsp頁面中的java代碼服務器是通過調(diào)用_jspService方法處理請求時執(zhí)行的。(_jspService中的Java代碼是實現(xiàn)動態(tài)頁面的邏輯基礎)


          主站蜘蛛池模板: 国产乱码精品一区三上| 国产在线一区二区视频| 日韩有码一区二区| 日本精品一区二区三区在线观看| 亚洲影视一区二区| 亚洲福利视频一区| 日韩人妻无码一区二区三区综合部| 国产精品一区二区久久精品| 国精无码欧精品亚洲一区| 美女AV一区二区三区| 蜜臀AV免费一区二区三区| 九九久久99综合一区二区| 国产福利电影一区二区三区久久久久成人精品综合 | 日本一区二区三区免费高清 | 国产精品综合AV一区二区国产馆| 国产丝袜无码一区二区视频| 亚洲熟女www一区二区三区| 风间由美性色一区二区三区| 一本大道东京热无码一区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 精品三级AV无码一区| 久久精品国产亚洲一区二区| 国产波霸爆乳一区二区| 国产乱码精品一区二区三| 一区二区三区视频在线播放| 一区二区三区高清在线| 少妇人妻偷人精品一区二区| 国产亚洲一区区二区在线| 中文字幕一区二区三区精华液 | 亚洲AV一区二区三区四区| 久久亚洲国产精品一区二区| a级午夜毛片免费一区二区| 亚洲AV美女一区二区三区| 无码乱人伦一区二区亚洲一| 91一区二区视频| 无码日本电影一区二区网站| 成人久久精品一区二区三区| 日本一区二区三区四区视频| 无码精品久久一区二区三区 | 国产精品av一区二区三区不卡蜜| 成人精品一区二区户外勾搭野战|