国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JSP > 正文

JSP的運(yùn)行內(nèi)幕

2020-06-01 23:29:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    經(jīng)常有朋友問(wèn)起,JSP和Servlet之間有什么區(qū)別,兩者之間又有什么聯(lián)系?其實(shí)Servlet技術(shù)的出現(xiàn)時(shí)間很早,是當(dāng)時(shí)為了Java的服務(wù)器端應(yīng)用而開(kāi)發(fā)的。大家都知道Applet是應(yīng)用小程序,Servlet就是服務(wù)器端小程序了。但在Microsoft公司的ASP技術(shù)出現(xiàn)后,使用Servlet進(jìn)行響應(yīng)輸出時(shí)一行行的輸出語(yǔ)句就顯得非常笨拙,對(duì)于復(fù)雜布局或者顯示頁(yè)面更是如此。JSP就是為了滿足這種需求在Servlet技術(shù)之上開(kāi)發(fā)的??梢?jiàn),JSP和Servlet之間有著內(nèi)在的血緣關(guān)系,在學(xué)習(xí)JSP時(shí),如果能夠抓住這種聯(lián)系,就能更深刻地理解JSP的運(yùn)行機(jī)理,達(dá)到事半功倍的效果。

本文將通過(guò)對(duì)一個(gè)JSP運(yùn)行過(guò)程的剖析,深入JSP運(yùn)行的內(nèi)幕,并從全新的視角闡述一些JSP中的技術(shù)要點(diǎn)。

HelloWorld.jsp

我們以Tomcat 4.1.17服務(wù)器為例,來(lái)看看最簡(jiǎn)單的HelloWorld.jsp是怎么運(yùn)行的。

代碼清單1:HelloWorld.jsp

HelloWorld.jsp
<%
 String message = "Hello World!";
%>
<%=message%>
 


  這個(gè)文件非常簡(jiǎn)單,僅僅定義了一個(gè)String的變量,并且輸出。把這個(gè)文件放到Tomcat的webapps/ROOT/目錄下,啟動(dòng)Tomcat,在瀏覽器中訪問(wèn)http://localhost:8080/HelloWorld.jsp,瀏覽器中的輸出為“HelloWorld!”

  讓我們來(lái)看看Tomcat都做了什么。轉(zhuǎn)到Tomcat的/work/Standalone/localhost/_目錄下,可以找到如下的HelloWorld_jsp.java,這個(gè)文件就是Tomcat解析HelloWorld.jsp時(shí)生成的源文件:

  代碼清單2:HelloWorld_jsp.java

package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;

public class HelloWorld_jsp extends HttpJspBase {
 ......
public void _jspService(HttpServletRequest request,
HttpServletResponse response)throws java.io.IOException, ServletException
 {
  JspFactory _jspxFactory = null;
  javax.servlet.jsp.PageContext pageContext = null;
  HttpSession session = null;
  ServletContext application = null;
  ServletConfig config = null;
  JspWriter out = null;
  Object page = this;
  JspWriter _jspx_out = null;

  try {
   _jspxFactory = JspFactory.getDefaultFactory();
   response.setContentType("text/html;charset=ISO-8859-1");
   pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);
   application = pageContext.getServletContext();
   config = pageContext.getServletConfig();
   session = pageContext.getSession();
   out = pageContext.getOut();
   _jspx_out = out;

   String message = "Hello World!";
   out.print(message);
  } catch (Throwable t) {
   out = _jspx_out;
   if (out != null && out.getBufferSize() != 0)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泰州市| 舞阳县| 沂水县| 临西县| 托克托县| 绩溪县| 黔南| 黑水县| 安吉县| 乌鲁木齐县| 会宁县| 永宁县| 郴州市| 阿拉尔市| 蓬安县| 江安县| 思南县| 花莲市| 北安市| 高安市| 浏阳市| 喜德县| 志丹县| 伊春市| 湖口县| 白玉县| 六安市| 荣成市| 平潭县| 张北县| 平塘县| 历史| 上林县| 方山县| 名山县| 宜兰市| 禄劝| 盐津县| 成武县| 景德镇市| 武义县|