`
jiangduxi
  • 浏览: 458952 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSP技术原理

阅读更多

 

JSP的工作原理

 

   我们编写一个简单的HTML文件----form.html,这个HTML中包含一个表单,这个表单可以接受用户输入的数字,然后把这个数字发送到Web服务器,服务器根据接受的参数决定显示内容重复的次数。

     form.html

<html>

 <head>

  <title>JSP原理</title>

</head>

<body>

   <p>请输入显示的次数</p>

  <form method=get action="showData.jsp">

      <input type="text" name=times>

      <input type=submit value="提交">

 </form>

</body>

</html>

 

因为这里说原理,且说显示图片麻烦,固将图片省略。反正页面显示一个text文本框和一个提交按钮。

 

 当用户在文本框中输入数字后点击提交,浏览器会把用户的数据和请求发送到showData.jsp。由于showData.jsp是新编写的,故还没有经过编译,Servlet容器会在第一次调用这个JSP时候自动编译它。编译完成后,就好调用这个JSP。JSP从服务器获得请求中表单的数据,根据这个数据执行Scriptlet并产生一些输出。这些输出包含的就是HTML文件,然后由Servlet容器把这些输出发送到客户端。

 

下面给出showData.jsp页面代码

< %@ page language="java"  contentType="text/html;charset=gb2312"% >

 <%@ page info="a hello world example"%>

<html>

   <head>

     <title>jsp原理</title>

  </head>

 <body>

    <center>

  <h1>

     <%

      int times=Integer.parseInt(request.getParameter("times"));

      for(int i=0;i<times;i++){

     out.println("Hello, World");

    out.println("<br>")

}

   %>

 </h1>

 </center>

</body>

</html>

 

这个页面显示你在form.html中提及数字个Hello World!。例如你在form.html中提及的数字是5,那么在showData.jsp页面就显示6行Hello World!

那看看在showData.jsp页面的Scriptlets吧!

<%

      int times=Integer.parseInt(request.getParameter("times"));

      for(int i=0;i<times;i++){

     out.println("Hello, World");

    out.println("<br>")

}

   %>

。那么被解析成HTML代码是什么呢?看下面

Hello WorldI

<br>

Hello WorldI

<br>

Hello WorldI

<br>

Hello WorldI

<br>

.....

为了进一步了解JSP的工作原理,我们还得看JSP编译后的结果。

Servlet容器在第一次调用JSP时,会自动编译,然后这个JSP就驻留内存了。所以我们在调用JSP时,第一次总是会有一定的延时,在接下来的调用中就不会再有延时了。

下面看看JSP引擎上得到的java文件的源代码:

package org.apache.jsp;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

 

public final class helloworld_jsp extends org.apache.jasper.runtime.HttpJspBase

  implements org.apache.jasper.runtime.JspSourceDependent{

      public String getServeltInfo(){

         return "a Hello world example";

      }

   public static java.util.Vector_jspx_dependants;

 

   public java.util.List getDependants(){

     return _jspx-dependents;

  }

 

 public void _jspService(HttpServletRequest request,HttpServeltResponse response)

 throws java.io.IOException,ServeltException{

  JSPFactory _jspxFactory=null;

  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=gb2312");

   pageContext=_jspxFactory.getPageContext(this,request,response,null,true,8192,true);

  application=pageContext.getServeltContext();

  config=pageContext.getServeltConfig();

  session=pageContext.getSession();

 out=pageContext.getOut();

 _jspx_out=out;

 

 out.write("  \r\n");

 out.write(" \r\n");

 out.write("<html>\r\n\t");

 out.write("<head>\r\n\t\t");

 out.write("<title>JSP原理 ");

out.write("<title>\r\n\t");

out.write(" </head>\r\n\t");

out.write("<body> \r\n\t\t");

out.write("<center> \r\n\t\t");

out.write("<h1> \r\n\t\t");

int times=Integer.parseInt(request.getParameter("times"));

 for(int i=0;i<times;i++)

 {

   out.println("Hello,World!");

   out.println("<br>");

  }

  out.write(" \r\n\t\t");

  out.write("</h1> \r\n\t\t");

  out.write("</center> \r\n\t\t");

  out.write("</body> \r\n");

   out.write(" </html>\r\n");

catch(Throwable){

    if(!(instanceof javax.servlet.jsp.SkipPageException)){

    out=_jspx_out;

  if(out!=null && out.getBufferSize()!=0)

    out.clearBuffer();

  if(pageContent!=null) pageContext.handlePageException();

    }

  }finally{

  if(_jspFactory!=null) _jspxFactory.releasePageContext(pageContext);

 }

 }

}

看完上面的代码,请留意黑体字是生成客户端响应的代码片段。可以看出,通过一个循环把动态的内容输入到客户端输出流上。  JSP源文件是安装在Web服务器上的JSP引擎编译执行的。JSP引擎把来自客户端的请求传递给JSP源文件,然后JSP引擎再把对它的响应从JSP源文件传递给客户端。

 所有的JSP引擎都必须支持的请求和响应协议时HTTP,但是同一个引擎也可以支持其他的一些请求和响应协议。默认的request对象对应的协议是HttpServletRequest,而response对象对应的协议则是HttpServletResponse。

  一个JSP引擎需要在传递request和response对象之前,在JSP源代码中创建一个类,而Servlet则定义了在JSP引擎与JSP源文件之间实现类的约定。例如,当使用HTTP协议时,HttpServlet类就描述了JSP引擎和JSP源文件实现类之间的约定。

 JSP规范中还定义了JSP引擎与JSP页面作者之间的约定,这个约定实际上就是页面作者对JSP源文件中描述的动作所进行的假设。例如

 

public final void _jspx_init() throws JasperException :该方法可以在JSP页面中随意定义JSP页面初始化时调用该方法当该方法调用时,在Servlet中的所有方法都可以使用。

 

public final void _jspx_destory()throws JasperException :该方法可以再JSP页面中随意定义JSP页面结束之前调用该方法

 

public void _jspService(HttpServeltRequest request,HttpServeltResponse response)throws IOException,ServeltException: 该方法不能在JSP页面中定义JSP引擎自动按照JSP页面的内容产生这个方法每次客户请求时,都要调用该方法

 

这个约定描述了一个JSP作者如何说明当源文件实现init()和destory()方法时必须执行的一些动作。在这个约定中,最重要的是 _jspService()方法,这个方法是通过一个JSP引擎从JSP源文件自动产生的。

 

上述就是JSP的技术原理。如果有什么不对请大家不要浪费砖头,给我狠狠的拍。呵呵

 

 

分享到:
评论

相关推荐

    jspjspjspjsp

    - **1996年**:Sun Microsystems发布了第一个版本的JSP技术。 - **1999年**:发布JSP 1.1版本,支持EL表达式和JSTL标签库。 - **2001年**:推出JSP 1.2版本,改进了性能并增强了安全性。 - **2005年**:发布JSP 2.0...

    jsp 原理 jsp教程

    Java Server Pages(JSP)是Java平台上的一个服务器端技术,用于创建动态网页。它结合了HTML、脚本语言(如JavaScript)和Java代码,允许开发者在服务器端生成HTML内容,提供丰富的交互性和可扩展性。在深入学习JSP...

    《JSP》课程教学大纲

    - **JSP技术原理**: 涵盖JSP技术的特点和优势。 - **JSP与其他动态网页技术比较**: ASP、PHP和JSP的异同。 - **JSP开发和运行环境**: Tomcat的安装、配置及使用。 - **JSP中常用的JAVA知识**: 异常处理、文件...

    基于jsp的网上购物论文

    网上购物系统的建设涉及到多个关键技术点,包括JSP技术原理、服务器配置、系统需求分析、总体设计以及数据库管理等。 【JSP技术原理】 1.1.1 JSP语言及其特点 JSP是Java平台上的一个标准,用于创建动态网页。它...

    了解JSP工作原理.ppt

    了解JSP工作原理 JSP(Java Server Pages)是一种服务器端的WEB程序开发技术,由Sun公司发布,具有跨平台、通用性好、安全可靠等特点。JSP是基于Java的,页面程序由HTML或XML标记和JSP脚本共同组成,文件以“ .jsp...

    JSP动态网页设计 PPT课件

    在JSP技术原理中,它基于JavaEE体系,通常运行在Web服务器上,如Tomcat。开发者可以通过JSP页面来生成HTTP响应,这些页面包含静态内容和可执行的Java代码片段。JSP最终会被编译为Servlet,由服务器处理并返回给...

    基于jsp网上购物系统

    JSP技术原理** JSP是Java平台上的动态网页技术,它允许开发人员将静态HTML内容与动态Java代码结合在一起。JSP的核心特点包括: 1.1.1 JSP语言及其特点 JSP页面由HTML或XML标记以及嵌入的Java代码组成。当用户...

    基于jsp的网上商城购物系统论文

    "基于jsp的网上商城购物系统论文" ...本论文主要介绍了基于JSP的网上商城购物系统的设计和实现,涵盖了JSP技术原理、Java及Java Servlets概述、JavaBean简介、服务器配置、系统需求分析及总体设计等方面的知识点。

    jsp工作原理

    JSP技术使得开发人员能够在静态网页的基础上添加动态元素,如数据库查询结果、日期时间显示等。 #### 二、JSP的工作流程 1. **JSP文件的读取与转换**:当用户首次访问某个JSP页面时,JSP引擎首先会读取该JSP文件,...

    jsp运行原理

    ### JSP运行原理详解 #### 一、JSP的基本概念 JSP(Java Server Pages)是一种结合了HTML标记和Java代码的技术,用于创建动态网页。它允许开发人员将业务逻辑和展示逻辑分离,使得Web应用更加模块化和易于维护。 ...

    JSP标签JSP 语法的基本原理

    JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的动态处理。JSP语法包括了指令、脚本元素和标签,这些元素共同构成了JSP页面的基础。 **5.1 JSP语法的基本原理**...

    基于JSP网上购物系统设计

    以下将详细阐述JSP技术原理以及在系统设计中的关键步骤。 1.1 JSP的技术原理 1.1.1 JSP语言及其特点 JSP是一种用于创建动态网页的Java技术,它允许开发者将静态HTML与动态Java代码结合在一起。JSP的主要特点包括: ...

    jsp原理及框架

    本篇文章将深入探讨JSP的原理、请求方式、与Servlet的关系以及JSP在现代Web应用中的应用前景。 ### JSP原理 JSP的核心原理是“分离显示逻辑和业务逻辑”。开发者在JSP页面上编写HTML代码,同时嵌入Java代码来处理...

Global site tag (gtag.js) - Google Analytics