- 浏览: 458952 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
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的技术原理。如果有什么不对请大家不要浪费砖头,给我狠狠的拍。呵呵
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2094最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 998在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 889最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 93891.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 865FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 760核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 1031HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 778基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1246基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 1063在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2193在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2218JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2241在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 35131.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1430java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4516在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3952在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18932前面介绍和总结了JPA ... -
JPA学习之二(入门篇)
2010-04-16 10:48 3768简单总结下,JPA的入门。在学习JPA的时候运用参考Hib ... -
JPA2.0的学习一
2010-04-15 17:18 8642Java EE 5平台引入了Java ...
相关推荐
- **1996年**:Sun Microsystems发布了第一个版本的JSP技术。 - **1999年**:发布JSP 1.1版本,支持EL表达式和JSTL标签库。 - **2001年**:推出JSP 1.2版本,改进了性能并增强了安全性。 - **2005年**:发布JSP 2.0...
Java Server Pages(JSP)是Java平台上的一个服务器端技术,用于创建动态网页。它结合了HTML、脚本语言(如JavaScript)和Java代码,允许开发者在服务器端生成HTML内容,提供丰富的交互性和可扩展性。在深入学习JSP...
- **JSP技术原理**: 涵盖JSP技术的特点和优势。 - **JSP与其他动态网页技术比较**: ASP、PHP和JSP的异同。 - **JSP开发和运行环境**: Tomcat的安装、配置及使用。 - **JSP中常用的JAVA知识**: 异常处理、文件...
网上购物系统的建设涉及到多个关键技术点,包括JSP技术原理、服务器配置、系统需求分析、总体设计以及数据库管理等。 【JSP技术原理】 1.1.1 JSP语言及其特点 JSP是Java平台上的一个标准,用于创建动态网页。它...
了解JSP工作原理 JSP(Java Server Pages)是一种服务器端的WEB程序开发技术,由Sun公司发布,具有跨平台、通用性好、安全可靠等特点。JSP是基于Java的,页面程序由HTML或XML标记和JSP脚本共同组成,文件以“ .jsp...
在JSP技术原理中,它基于JavaEE体系,通常运行在Web服务器上,如Tomcat。开发者可以通过JSP页面来生成HTTP响应,这些页面包含静态内容和可执行的Java代码片段。JSP最终会被编译为Servlet,由服务器处理并返回给...
JSP技术原理** JSP是Java平台上的动态网页技术,它允许开发人员将静态HTML内容与动态Java代码结合在一起。JSP的核心特点包括: 1.1.1 JSP语言及其特点 JSP页面由HTML或XML标记以及嵌入的Java代码组成。当用户...
"基于jsp的网上商城购物系统论文" ...本论文主要介绍了基于JSP的网上商城购物系统的设计和实现,涵盖了JSP技术原理、Java及Java Servlets概述、JavaBean简介、服务器配置、系统需求分析及总体设计等方面的知识点。
JSP技术使得开发人员能够在静态网页的基础上添加动态元素,如数据库查询结果、日期时间显示等。 #### 二、JSP的工作流程 1. **JSP文件的读取与转换**:当用户首次访问某个JSP页面时,JSP引擎首先会读取该JSP文件,...
### JSP运行原理详解 #### 一、JSP的基本概念 JSP(Java Server Pages)是一种结合了HTML标记和Java代码的技术,用于创建动态网页。它允许开发人员将业务逻辑和展示逻辑分离,使得Web应用更加模块化和易于维护。 ...
JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的动态处理。JSP语法包括了指令、脚本元素和标签,这些元素共同构成了JSP页面的基础。 **5.1 JSP语法的基本原理**...
以下将详细阐述JSP技术原理以及在系统设计中的关键步骤。 1.1 JSP的技术原理 1.1.1 JSP语言及其特点 JSP是一种用于创建动态网页的Java技术,它允许开发者将静态HTML与动态Java代码结合在一起。JSP的主要特点包括: ...
本篇文章将深入探讨JSP的原理、请求方式、与Servlet的关系以及JSP在现代Web应用中的应用前景。 ### JSP原理 JSP的核心原理是“分离显示逻辑和业务逻辑”。开发者在JSP页面上编写HTML代码,同时嵌入Java代码来处理...