JSP知识概括

JSP介绍

简介:

  • jsp 的全换是 java server pages。Java 的服务器页面。
  • jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据。
  • 因为 Servlet 程序回传 html 页面数据是一件非常繁锁的事情。开发成本和维护成本都极高
  • jsp 的本质是什么:
    ①jsp 页面本质上是一个 Servlet 程序。

jsp 的三种语法

jsp 头部的 page 指令

简介:

  • jsp 的 page 指令可以修改 jsp 页面中一些重要的属性,或者行为。如:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  • 包括:
    ①language 属性 表示 jsp 翻译后是什么语言文件。暂时只支持 java。
    ②pageEncoding 属性 表示当前 jsp 页面文件本身的字符集。
    ③import 属性 跟 java 源代码中一样。用于导包,导类。 .
    ④autoFlush 属性 设置当 out 输出流缓冲区满了之后,是否自动刷新冲级区。默认值是 true。
    ⑤buffer 属性 设置 out 缓冲区的大小。默认是 8kb
    ⑥errorPage 属性 设置当 jsp 页面运行时出错,自动跳转去的错误页面路径。
    ⑦isErrorPage 属性 设置当前 jsp 页面是否是错误信息页面。默认是 false。如果是 true 可以 获取异常信息。
    ⑧session 属性 设置访问当前 jsp 页面,是否会创建 HttpSession 对象。默认是 true。
    ⑨extends 属性 设置 jsp 翻译出来的 java 类默认继承谁。

jsp 中的常用脚本(标签)

声明脚本(标签)(极少使用):

  • 声明标签用于在JSP 中定义成员变量与方法的定义。标签中的内容会出现在 JSP 被编译 后的 Servlet 的 class 的{}中。
  • 声明脚本的格式是:
 <%! 声明 java 代码 %> 
  • 作用:可以给 jsp 翻译出来的 java 类定义属性和方法甚至是静态代码块。内部类等。

表达式脚本(标签)(常用) :

  • 赋值标签用于在 JSP 中做内容输出。标签中的内容会出现在_jspService 方法的 out.print()
    方法的参数中。注意我们在使用赋值标签时不需要在代码中添加 ”;”。
  • 表达式脚本的格式是:
<%=表达式%>
  • 表达式脚本的作用是:在jsp 页面上输出数据。

  • 表达式脚本的特点:
    1、所有的表达式脚本都会被翻译到_jspService() 方法中
    2、表达式脚本都会被翻译成为 out.print()输出到页面上
    3、由于表达式脚本翻译的内容都在_jspService() 方法中,所以_jspService()方法中的对象都可以直接使用。
    4、表达式脚本中的表达式不能以分号结束。

代码脚本(标签):

  • 脚本标签用于在 JSP 中编写业务逻辑。标签中的内容会出现在 JSP 被编译后的 Servlet的_jspService 方法体中。
  • 代码脚本的格式是:
<% java 语句 %>
  • 代码脚本的作用是:可以在 jsp 页面中,编写我们自己需要的功能(写的是 java 语句)。
  • 代码脚本的特点是:
    1、代码脚本翻译之后都在_jspService 方法中
    2、代码脚本由于翻译到_jspService()方法中,所以在_jspService()方法中的现有对象都可以直接使用。 3、还可以由多个代码脚本块组合完成一个完整的 java 语句。
    4、代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据

jsp 中的三种注释

简介:

  • html 注释
    <!-- 这是 html 注释 -- >
    html 注释会被翻译到 java 源代码中。在_jspService 方法里,以 out.writer 输出到客户端。
  • java 注释
    <% // 单行 java 注释 /* 多行 java 注释 */ %>
    java 注释会被翻译到 java 源代码中。
  • jsp 注释
    <%-- 这是 jsp 注释 --%>
    jsp 注释可以注掉,jsp 页面中所有代码。

jsp 九大内置(隐式)对象

简介:

  • jsp 中的内置对象,是指 Tomcat 在翻译 jsp 页面成为 Servlet 源代码后,内部提供的九大对象,叫内置对象。
  • JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。
  • jsp 九大内置(隐式)对象在代码标签赋值标签中使用他们。
    在这里插入图片描述
  • 详解:
    在这里插入图片描述

jsp 四大域对象

简介:

  • jsp 四大域对象其实也就是jsp 九大内置(隐式)对象中具有域属性的四个对象。

四个域对象分别是:

  • pageContext (PageContextImpl 类) 当前 jsp 页面范围内有效
  • request (HttpServletRequest 类)、 一次请求内有效
  • session (HttpSession 类)、 一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器) - -
  • application (ServletContext 类) 整个 web 工程范围内都有效(只要 web 工程不停止,数据都在)

注意:

  • 域对象是可以像 Map 一样存取数据的对象。四个域对象功能一样。不同的是它们对数据的存取范围。
  • 虽然四个域对象都可以存取数据。在使用上它们是有优先顺序的。四个域在使用的时候,优先顺序分别是,他们从小到大的范围的顺序。
  • pageContext ====>>> request ====>>> session ====>>> application

jsp 中的 out 输出和 response.getWriter 输出的区别

简介:

  • response 中表示响应,我们经常用于设置返回给客户端的内容(输出)
  • out 也是给用户做输出使用的。
    在这里插入图片描述
  • 由于 jsp 翻译之后,底层源代码都是使用out 来进行输出,所以一般情况下。我们在 jsp 页面中统一使用 out 来进行输出避免打乱页面输出内容的顺序
  • out.write() 输出字符串没有问题。
  • out.print()输出任意数据都没有问题(都转换成为字符串后调用的 write 输出)
  • 深入源码,浅出结论:在 jsp 页面中,可以统一使用 out.print()来进行输出。

jsp 的常用标签和动作元素

jsp 静态包含:

  • <%@ include file=""%>就是静态包含
  • file 属性指定你要包含的 jsp 页面的路径
  • 地址中第一个斜杠 / 表示为 http://ip:port/工程路径/ 映射到代码的 web 目录(因为jsp在服务器解析
  • 不以"/"开头的相对路径则表示相对于当前资源的相对路径。
  • 静态包含的特点:
    1、静态包含不会翻译被包含的 jsp 页面。
    2、静态包含其实是把被包含的 jsp 页面的代码拷贝到包含的位置执行输出。

JSP 动作元素:

  • 与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。
  • 利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。
  • 动作元素只有一种语法,它符合XML标准:
<jsp:action_name attribute="value" />
  • 动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用JSP作为前缀,可用的标准动作元素如下:
    在这里插入图片描述

jsp 动态包含:

  • <jsp:include page=""></jsp:include>这是动态包含
  • page 属性是指定你要包含的 jsp 页面的路径
  • 地址中第一个斜杠 / 表示为 http://ip:port/工程路径/ 映射到代码的 web 目录(因为jsp在服务器解析
  • 不以"/"开头的相对路径则表示相对于当前资源的相对路径。
  • 动态包含也可以像静态包含一样。把被包含的内容执行输出到包含位置
  • 动态包含的特点:
    1、动态包含会把包含的 jsp 页面也翻译成为 java 代码
    2、动态包含底层代码使用如下代码去调用被包含的 jsp 页面执行输出。 JspRuntimeLibrary.include(request, response, “/include/footer.jsp”, out, false);
    3、动态包含,还可以传递参数。
  • 动态包含底层原理:
    在这里插入图片描述

jsp 标签-转发:

  • <jsp:forward page=""></jsp:forward>是请求转发标签。
  • 地址中第一个斜杠 / 表示为 http://ip:port/工程路径/ 映射到代码的 web 目录(因为jsp在服务器解析
  • 不以"/"开头的相对路径则表示相对于当前资源的相对路径。
  • 它的功能就是请求转发 page 属性设置请求转发的路径
  • 没有重定向因为在客户端重定向没有意义。

asp、php、asp.net、jsp介绍

前提:

  • HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持。

主流网站开发语言之ASP:

  • ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和Visual BASIC类似,可以像SSI(Server SideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
  • 目前在微软的 .net 战略中新推出的ASP.net 借鉴了Java技术的优点,使用C Sharp (C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的Windows NT/2000/XP + IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案,但是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
  • ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
  • asp 默认语言是 vbscript, 也可以用 javascript, 建议用 vbscript;

主流网站开发语言之PHP:

  • PHP 的全名非常有趣,它是一个巢状的缩写名称——“PHP: HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML 内嵌式的语言 (就像上面讲的ASP那样)。而 PHP独特的语法混合了C,Java,Perl以及 PHP 式的新语法。它可以比 CGI 或者 Perl 更快速地执行动态网页。
  • PHP的源代码完全公开,在 Open Source 意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP 无论在 UNIX 或是 Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI 或者 ASP 等技术有了更好的表现。
  • 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

php5:

  • 2004年7月,PHP5正式版本的发布,标志着一个全新的PHP时代的到来。它的核心是第二代Zend引擎,并引入了对全新的PECL模块的支持。PHP5的最大特点是引入了面向对象的全部机制,并且保留了向下的兼容性。程序员不必再编写缺乏功能性的类,并且能够以多种方法实现类的保护。另外,在对象的集成等方面也不再存在问题。使用PHP5引进了类型提示和异常处理机制,能更有效的处理和避免错误的发生。

  • 在不断更新的同时,PHP5依然保留对旧有的PHP4程序可以运行于PHP5的平台上而不会出现较大问题。随着MySQL数据库的发展,PHP5还绑定了新的MySQLi扩展模块和PDO扩展模块,MySQLi提供了一些更加有效的方法和实用工具用于处理数据库操作,而PDO使各种数据库链接变得统一化,不像php4那样换个数据库就要重写整站的代码。这些方法大都以面向对象的方式实现,同时也极大地提高了基于数据库的Web项目的执行速度。

  • 另外,PHP5中还改进了创建动态图片的功能,目前能够支持多种图片格式(如PNG、GIF、TTIF、JPGE等)。PHP5以及内置了对GD2库的支持,因此安装GD2库(主要指UNIX系统中)也不再是件难事,这使得处理图像十分简单和高效。

  • 大多数Web程序开发者依然将XML作为一个彻底的简单数据库使用。PHP5中也采用了一系列简单易用、功能强大的方法处理XML文档。

  • 今天,已经有包括雅虎和亚马逊等在内的数百万网站,以及众多的开发人员和编程爱好者正在使用PHP。从最初的PHP/FI到现在的PHP5,PHP的发展是及其迅猛的,其未来的发展前景也必定令人瞩目。

PHP总结:

  • PHP作为最成熟的开源体系LAMP(Linux,Apache,MySQL,PHP)的重要一员,以其简单性、开放性、低成本、安全性和适用性,受到越来越多的Web程序员的欢迎和喜爱。
  • PHP中提供了作为编码语言所有的基本功能。此外,它还提供许多实用的功能,使得PHP比其他编程语言更适合动态网页的开发。针对企业级Web应用,PHP也不断地完善和增加新的功能。
  • PHP是源码开放的,这意味着其代码的核心部分可以被免费使用。所有源码、文档可以在PHP官方网站上获得。用户可以自由复制、编译、分发其拷贝。任何一个用PHP编写的程序都属于用户自己,并且可以自行处理。
  • 正式由于这种开源精神,才使PHP社区可以聚集众多的爱好者,也使得PHP有如此迅猛的发展。PHP的更新速度,以及发现和修正错误的速度是非常迅速的。可以看到,几乎每周都有一个新版本的PHP程序包发布。
  • 目前,PHP的官方维护者和推动者Zend公司已经加快了PHP企业级应用的步伐。随着PHP5的应用不断扩大,Zend公司还将推出一个标准的PHP开发框架ZendFramework。通过这一框架,PHP开发者可以快速地构建Web应用。
  • 如同ASP具有Windows自己的开发平台一样,Zend也为PHP设计了全新的开发环境 Zend Studio。这是一款集程序调试、系统发布以及开发环境为一体的PHP开发软件。这将大大简化PHP开发过程,并且缩短相应的测试周期。另外,Zend还将与IBM公司合作推出集成Zend IDE特性的Eclipse软件供大家使用。
  • PHP还具有优秀的平台兼容性。PHP源于UNIX系统平台,尤其是PHP、MySQL、Apache和Linux组合,备受PHP爱好者的欢迎。不仅如此,PHP在Windows系列操作系统上也有出色的表现。其良好的程序界面、语言易用性等特点吸引了微软的开发人员。目前,有消息称未来的Windows.NET开发环境将集成PHP,这也意味着PHP的用户群将日益壮大。
  • PHP是广泛及通用的脚本语言,它尤其适合于Web开发。PHP是世界上主要的网络开发语言之一,运行在世界三分之一的服务器上。它是从雅虎到Facebook等公司的平台选择,也是共享主机上最广泛的开发平台,为世界上数百万的网站提供动力。
  • 随着PHP5版本性能的提升,以及面向对象功能的完善,PHP也逐渐开始于面向企业级应用。PHP的发展前景将无限广阔。
  • PHP可以作为纯后台,返回JSON等纯数据,也可以返回HTML等网页代码;也可以在前端的HTML代码中嵌套。

ASP.NET:

  • ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是 Active Server Page (ASP)
    的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET的语法在很大程度上与 ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。

  • 可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。ASP.NET是一个已编译的、基于 .NET 的环境,可以用任何与 .NET 兼容的语言(包括 Visual Basic .NET、C# 和JScript .NET.)创作应用程序。另外,任何 ASP.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

  • ASP.NET 可以无缝地与 WYSIWYG HTML 编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。

  • 微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。

  • asp.net 可以用 C#, vb开发

主流网站开发语言之JSP:

  • JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java 2 platform Enterprise Edition)应用体系中的一部分。
  • Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process),而Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,Java Servlet可以用来做大规模的应用服务。
  • 虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSP Parser)转换成Servlet代码,然后Servlet代码被Java编译器编译成 .class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(Script Language)版。
  • 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA– Write Once, Run Anywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。因此,JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
  • 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数,而是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错),逐步缩小出错代码段的范围,最终确定错误代码的位置。
  • JSP作为页面输出工具,可以在前端的HTML代码中嵌套;Java作为纯后台,返回JSON等纯数据,也可以返回HTML等网页代码。
  • 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台,但是众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值