日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSP 基础(一)

發(fā)布時間:2025/3/8 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSP 基础(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JavaServletPage(JSP)

一 JSP簡介

Servlet的缺陷 –Servlet的編碼、部署和調(diào)試任務(wù)繁瑣 –生成動態(tài)網(wǎng)頁繁瑣,不利于項目分工 為了彌補Servlet的這些缺陷,SUN公司在Servlet的基礎(chǔ)上推出了JSP技術(shù)作為解決方案 采用JSP技術(shù)編寫動態(tài)頁面 ? –由HTML語句和嵌套在其中的Java代碼組成的一個普通文本文件 –JSP頁面的擴展名必須為.jsp

二 JSP運行機制與生命周期

JSP的執(zhí)行包括7個階段

?2.1 JSP頁面翻譯階段:Web容器第一次接收到某個JSP頁面的請求后,首先把自動將該頁面翻譯成Servlet代碼。

??

1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'index.jsp' starting page</title> 13 <meta http-equiv="pragma" content="no-cache"> 14 <meta http-equiv="cache-control" content="no-cache"> 15 <meta http-equiv="expires" content="0"> 16 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 17 <meta http-equiv="description" content="This is my page"> 18 <!-- 19 <link rel="stylesheet" type="text/css" href="styles.css"> 20 --> 21 </head> 22 23 <body> 24 <% 25 out.print("Hello Jsp"); 26 %> 27 </body> 28 </html>

執(zhí)行了上面的這個.jsp后,會在D:\apache-tomcat-6.0.20\work\Catalina\localhost\項目名\org\apache\jsp下發(fā)現(xiàn)一個index_jsp.class文件和一個index_jsp.java文件

打開java文件

1 package org.apache.jsp; 2 3 import javax.servlet.*; 4 import javax.servlet.http.*; 5 import javax.servlet.jsp.*; 6 import java.util.*; 7 8 public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase 9 implements org.apache.jasper.runtime.JspSourceDependent { 10 11 private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); 12 13 private static java.util.List _jspx_dependants; 14 15 private javax.el.ExpressionFactory _el_expressionfactory; 16 private org.apache.AnnotationProcessor _jsp_annotationprocessor; 17 18 public Object getDependants() { 19 return _jspx_dependants; 20 } 21 22 public void _jspInit() { 23 _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); 24 _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName()); 25 } 26 27 public void _jspDestroy() { 28 } 29 30 public void _jspService(HttpServletRequest request, HttpServletResponse response) 31 throws java.io.IOException, ServletException { 32 33 PageContext pageContext = null; 34 HttpSession session = null; 35 ServletContext application = null; 36 ServletConfig config = null; 37 JspWriter out = null; 38 Object page = this; 39 JspWriter _jspx_out = null; 40 PageContext _jspx_page_context = null; 41 42 43 try { 44 response.setContentType("text/html;charset=ISO-8859-1"); 45 pageContext = _jspxFactory.getPageContext(this, request, response, 46 null, true, 8192, true); 47 _jspx_page_context = pageContext; 48 application = pageContext.getServletContext(); 49 config = pageContext.getServletConfig(); 50 session = pageContext.getSession(); 51 out = pageContext.getOut(); 52 _jspx_out = out; 53 54 out.write('\r'); 55 out.write('\n'); 56 57 String path = request.getContextPath(); 58 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 59 60 out.write("\r\n"); 61 out.write("\r\n"); 62 out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n"); 63 out.write("<html>\r\n"); 64 out.write(" <head>\r\n"); 65 out.write(" <base href=\""); 66 out.print(basePath); 67 out.write("\">\r\n"); 68 out.write(" \r\n"); 69 out.write(" <title>My JSP 'index.jsp' starting page</title>\r\n"); 70 out.write("\t<meta http-equiv=\"pragma\" content=\"no-cache\">\r\n"); 71 out.write("\t<meta http-equiv=\"cache-control\" content=\"no-cache\">\r\n"); 72 out.write("\t<meta http-equiv=\"expires\" content=\"0\"> \r\n"); 73 out.write("\t<meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">\r\n"); 74 out.write("\t<meta http-equiv=\"description\" content=\"This is my page\">\r\n"); 75 out.write("\t<!--\r\n"); 76 out.write("\t<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">\r\n"); 77 out.write("\t-->\r\n"); 78 out.write(" </head>\r\n"); 79 out.write(" \r\n"); 80 out.write(" <body>\r\n"); 81 out.write(" "); 82 83 out.print("Hello Jsp"); 84 85 out.write("\r\n"); 86 out.write(" </body>\r\n"); 87 out.write("</html>\r\n"); 88 } catch (Throwable t) { 89 if (!(t instanceof SkipPageException)){ 90 out = _jspx_out; 91 if (out != null && out.getBufferSize() != 0) 92 try { out.clearBuffer(); } catch (java.io.IOException e) {} 93 if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); 94 } 95 } finally { 96 _jspxFactory.releasePageContext(_jspx_page_context); 97 } 98 } 99 }

?

?2.2 JSP頁面編譯階段:index_jsp.java文件編譯成index_jsp.class文件。

?2.3 JSP頁面類裝載階段:Web容器裝載新生成的Servlet類。

?2.4 JSP頁面實例化階段:Web容器創(chuàng)建實例。

?2.5 JSP頁面初始化階段:web容器調(diào)用Servlet示例的_jspInit()方法。

?2.6 JSP頁面服務(wù)階段:容器創(chuàng)建一個新線程來處理客戶的請求,Servlet對象的_jspService()方法運行。

?2.7 JSP頁面的銷毀:servlet對象的_jspDestory()方法。?

如果一個Web應(yīng)用程序中包含有JSP頁面,部署這個應(yīng)用時,在JSP生命周期中,整個翻譯和編譯步驟只發(fā)生一次。JSP一旦被翻譯和編譯,就像其他Servlet一樣了。其實只有在第一次執(zhí)行的時候有性能上的差別。

JSP通常用于簡化創(chuàng)建產(chǎn)生文本的Servlet,二Servlet更適合用于發(fā)送原生字節(jié)到客戶端或所需要用java源代碼完全控制源代碼的場合。

三 JSP語法與語義

? ?JSP網(wǎng)頁主要有元素(Element)和模板數(shù)據(jù)(Template Data)兩部分組成。

? 元素可以分成三個不同的類別:腳本元素,指令,動作。(下面進行解釋)?

四 腳本元素

?在JSP中有三種不同類型的腳本元素:scriptlet,腳本表達式,聲明。

? 4.1 Scriptlet? ? ?

JSP腳本片斷(scriptlet)用于在JSP頁面中編寫多行Java代碼。語法格式:
    <% ?多行java代碼 ?%>

  在<% %>中可以定義變量、編寫語句,不能定義方法。

eg:

1 <% 2 /*聲明變量*/ 3 int sum=0; 4 5 /*編寫語句*/ 6 for (int i=1;i<=100;i++){ 7 sum+=i; 8 } 9 out.println("<h1>Sum="+sum+"</h1>"); 10 11 out.print("Hello Jsp"); 12 %>

?

? 4.2 腳本表達式

?JSP腳本表達式(expression)用于將程序數(shù)據(jù)輸出到客戶端。語法:

? ? ? ? ? ? ? ?<%= 變量或表達式 %>

eg:

?

1 <body> 2 3 <% 4 int[] balls = new int[6]; 5 Random r = new Random(); 6 for (int i = 0; i < 6;) { 7 boolean flag = true; 8 int temp = r.nextInt(33) + 1; 9 for (int j = 0; j <= i; j++) { 10 if (balls[j] == temp) { 11 flag = false; 12 break; 13 } 14 } 15 if (flag) { 16 balls[i] = temp; 17 i++; 18 %> 19 <div class="red"><%=temp%></div> 20 21 <% 22 } 23 } 24 %> 25 <div class="blue"><%=r.nextInt(16) + 1%></div> 26 </body>

?

?

?

?JSP引擎在翻譯腳本表達式時,會將程序數(shù)據(jù)轉(zhuǎn)成字符串,然后在相應(yīng)位置用out.print(…) 將數(shù)據(jù)輸給客戶端。
JSP腳本表達式中的變量或表達式后面不能有分號(;)

4.3 聲明

? ?JSP頁面中編寫的所有代碼,默認會翻譯到servlet的service方法中, 而Jsp聲明中的java代碼被翻譯到_jspService方法的外面。語法:
    <%!?java代碼 ?%>
  所以,JSP聲明可用于定義JSP頁面轉(zhuǎn)換成的Servlet程序的靜態(tài)代碼塊、成員變量和方法?。?
  多個靜態(tài)代碼塊、變量和函數(shù)可以定義在一個JSP聲明中,也可以分別單獨定義在多個JSP聲明中。
  JSP隱式對象的作用范圍僅限于Servlet的_jspService方法,所以在JSP聲明中不能使用這些隱式對象。

可以在JSP程序中聲明一個或多個變量。但是每一個聲明語句都必須以分號結(jié)束

eg:

1 <%! String s="hello"; %> 2 <%! int a,b,c; %> 3 <%! java.util.Date date=new java.util.Date(); %>

?

1 <%! 2 public void method(){ 3 4 } 5 %>

?

五 注釋?

六 JSP指令

七 JSP標準動作

八 JSP隱式對象

?

總結(jié)

以上是生活随笔為你收集整理的JSP 基础(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人毛片18女人 | 邻居少妇张开双腿让我爽一夜 | 日韩av色图 | 成人激情视频网 | 一级少妇精品久久久久久久 | 日本黄色美女 | 在线播放视频高清在线观看 | 亚洲少妇xxx| 久操伊人| 黑人黄色片 | 在线97视频 | 黄av网 | 国产精品情侣 | 97超碰免费在线观看 | 日本三区在线 | 深夜成人福利 | 天天狠天天插天天透 | 成人午夜剧场视频网站 | 国产不卡视频一区二区三区 | av免费网| 国产精品成人久久电影 | 国模无码视频一区二区三区 | 午夜亚洲国产 | 97无码精品人妻 | 免费观看污视频 | 九一毛片 | 日韩欧美自拍偷拍 | 国产精品久久久久桃色tv | 国产性猛交xxxx免费看久久 | 大黄一级片 | 国产精品久久久久久亚洲av | 理论片午午伦夜理片影院99 | av在线片 | av在哪里看| 日本欧美激情 | 国产偷人视频 | 日本亚洲一区 | 国内少妇精品 | 久久久久久国产精品三级玉女聊斋 | 久久久久久久九九九九 | 91在线观看免费高清 | 男欢女爱久石 | 亚洲午夜一区 | av免费观看在线 | 天天射视频 | 国产成人麻豆免费观看 | www四虎影院 | 成人在线黄色 | 日韩黄视频 | jizjiz中国少妇高潮水多 | 麻豆一区二区三区精品视频 | 国产日韩在线观看一区 | 不卡在线播放 | 久久亚洲综合 | 午夜亚洲 | 涩涩在线观看 | 男人插女人视频网站 | 日韩不卡高清 | 欧美日韩国产三区 | 国内av自拍| 神马影院一区二区三区 | 影音先锋成人资源网站 | 免费观看一区二区三区毛片 | 免费av国产 | 91麻豆精品在线 | 日批黄色 | 亚洲老女人视频 | 欧美另类在线播放 | 日韩激情小视频 | 农村妇女一区二区 | 欧美成在线视频 | 六月色丁香 | 欧美做爰性生交视频 | 一区二区精品视频 | 熟妇人妻va精品中文字幕 | 国产视频精品在线 | 香蕉视频免费在线观看 | 日韩综合网站 | 欧美麻豆视频 | 成年网站在线播放 | 一边摸一边做爽的视频17国产 | 免费的av网站| 青青草在线免费 | 欧美日韩首页 | 狠狠操五月天 | 丁香花高清在线观看完整动漫 | 在线观看免费黄色 | 淫久久 | 神马久久久久久久 | 亚洲精品在线不卡 | 一个人看的视频www 色就是色网站 | 亚洲无人区码一码二码三码的含义 | 超碰超碰 | 国产精品久久久久久久一区探花 | 少妇精品一区二区 | 翔田千里一区二区 | 中文字幕乱码一区 | 欧美视频一区二区在线观看 | 日韩av少妇 |