响应式做的好的网站,dw做旅游网站教程,自己做网站用什么软件下载,wdcp拒绝访问网站目录 JSP概述作用一个简单的案例#xff1a;使用JSP页面输出当前日期 JSP处理过程JSP 生命周期编译阶段初始化阶段执行阶段销毁阶段案例 JSP页面的元素JSP指令JSP中的page指令Include指令示例 taglib指令 JSP中的小脚本与表达式JSP中的声明JSP中的注释HTML的注释JSP注释 JSP行… 目录 JSP概述作用一个简单的案例使用JSP页面输出当前日期 JSP处理过程JSP 生命周期编译阶段初始化阶段执行阶段销毁阶段案例 JSP页面的元素JSP指令JSP中的page指令Include指令示例 taglib指令 JSP中的小脚本与表达式JSP中的声明JSP中的注释HTML的注释JSP注释 JSP行为 JSP概述
JSP全称Java Server Pages是一种动态网页开发技术。是由 Sun公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。JSP 技术是以 Java 语言作为脚本语言的使用HTML嵌套Java代码实现运行在服务器端的Java页面。JSP文件后缀名为 *.jsp 。JSP开发的WEB应用可以跨平台使用既可以运行在 Linux 上也能运行在 Windows上。
作用
替换显示页面部分的Servlet使用*.jsp文件替换XxxJSP.java就是显示网页的和HTML有什么区别就是我们的jsp页面可以嵌套java代码可以和Servlet完美的契合
一个简单的案例使用JSP页面输出当前日期
% page languagejava importjava.util.*,java.text.* contentType text/html; charsetutf-8 %
htmlheadtitle输出当前日期/title/headbody你好今天是% SimpleDateFormat formater new SimpleDateFormat(yyyy年 MM月dd日);String strCurrentTime formater.format(new Date()); % %strCurrentTime %/body
/htmlJSP处理过程 第一次请求之后Web容器可以重用已经编译好的字节码文件 如果对JSP文件进行了修改Web容器会重新对JSP文件进行翻译和编译
以下步骤表明了Web服务器是如何使用JSP来创建网页的
就像其他普通的网页一样您的浏览器发送一个HTTP请求给服务器。Web服务器识别出这是一个对JSP网页的请求并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。JSP引擎从磁盘中载入JSP文件然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句并且将所有的JSP元素转化成Java代码。JSP引擎将servlet编译成可执行类并且将原始请求传递给servlet引擎。Web服务器的某组件将会调用servlet引擎然后载入并执行servlet类。在执行过程中servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。最终Web浏览器处理HTTP response中动态产生的HTML网页就好像在处理静态网页一样。
一般情况下JSP引擎会检查JSP文件对应的servlet是否已经存在并且检查JSP文件的修改日期是否早于servlet。如果JSP文件的修改日期早于对应的servlet那么容器就可以确定JSP文件没有被修改过并且servlet有效。这使得整个流程与其他脚本语言比如PHP相比要高效快捷一些。
总的来说JSP网页就是用另一种方式来编写servlet而不用成为Java编程高手。除了解释阶段外JSP网页几乎可以被当成一个普通的servlet来对待。
JSP 生命周期
JSP生命周期就是从创建到销毁的整个过程类似于servlet生命周期区别在于JSP生命周期还包括将JSP文件编译成servlet。
以下是JSP生命周期中所走过的几个阶段
编译阶段
servlet容器编译jsp源文件生成servlet类 当浏览器请求JSP页面时JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过或者在上次编译后被更改过则编译这个JSP文件。 编译的过程包括三个步骤
解析JSP文件。将JSP文件转为servlet。编译servlet。
初始化阶段
加载与JSP对应的servlet类创建其实例并调用它的初始化方法 容器载入JSP文件后它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务复写jspInit()方法就行了就像下面这样
public void jspInit(){// 初始化代码
}以般来讲程序只初始化一次servlet也是如此。通常情况下您可以在jspInit()方法中初始化数据库连接、打开文件和创建查询表。
执行阶段
调用与JSP对应的servlet实例的服务方法 这一阶段描述了JSP生命周期中一切与请求相关的交互行为直到被销毁。
当JSP网页完成初始化后JSP引擎将会调用_jspService()方法。
_jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数就像下面这样
void _jspService(HttpServletRequest request,HttpServletResponse response)
{// 服务端处理代码
}_jspService()方法在每个request中被调用一次并且负责产生与之相对应的response并且它还负责产生所有7个HTTP方法的回应比如GET、POST、DELETE等等。
销毁阶段
调用与JSP对应的servlet实例的销毁方法然后销毁servlet实例 JSP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。
jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法比如释放数据库连接或者关闭文件夹等等。
jspDestroy()方法的格式如下
public void jspDestroy()
{// 清理代码
}案例
创建一个index.jsp 将下面的 代码 复制到 jsp页面中 然后运行Tomcat
访问http://localhost:9090/kgcSmbms/index.jsp 看看 控制台打印效果 已经页面显示的内容 关闭tomcat
JSP页面的元素 JSP指令
JSP指令用来设置整个JSP页面相关的属性如网页的编码方式和脚本语言。
JSP指令语法格式% directive attributevalue % 指令可以有很多个属性它们以键值对的形式存在并用逗号隔开。
JSP中的三种指令标签
指令描述% page … %定义网页依赖属性比如脚本语言、error页面、缓存需求等等% include … %包含其他文件% taglib … %引入标签库的定义
JSP中的page指令
作用通过设置内部的多个属性定义整个页面的属性
属性描述buffer指定out对象使用缓冲区的大小autoFlush控制out对象的 缓存区contentType指定当前JSP页面的MIME类型和字符编码errorPage指定当JSP页面发生异常时需要转向的错误处理页面isErrorPage指定当前页面是否可以作为另一个JSP页面的错误处理页面extends指定servlet从哪一个类继承import导入要使用的Java类info定义JSP页面的描述信息isThreadSafe指定对JSP页面的访问是否为线程安全language定义JSP页面所用的脚本语言默认是Javasession指定JSP页面是否使用sessionisELIgnored指定是否执行EL表达式 (默认true)isScriptingEnabled确定脚本元素能否被使用pageEncoding当前页面的编码格式
Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分会被同时编译执行。最后会被整合 成一个 Servlet .class
注意: 使用 include 指令是以静态方式包含文件 简单来说就是合二为一 ,原封不动地附加到当前文件中 所以要避免重复的代码 和变量 等逻辑。
例如:里面不要包含 … 这样的标签因为是把源代码原封不动的附加过来所以会与当前的jsp中的这样的标签重复导致出错。
但是也是有好处的 就是 js 和jsp … 变量方法等共享 你可以在 Include指令 后面修改包含页面内 变量的内容 从而改变包含页面的状态
为了避嫌 html 和jsp 中文乱码的情况 在项目的web.xml中添加 jsp-configjsp-property-groupurl-pattern*.html/url-patternurl-pattern*.jsp/url-patternpage-encodingUTF-8/page-encoding/jsp-property-group/jsp-config语法% include file“url” %
示例
% page languagejava contentTypetext/html; charsetUTF-8 isELIgnoredtrue pageEncodingUTF-8 %
html
headtitleindex/title
/head
body
% include fileindex1.html %
% include fileindex1.jsp %
h1index.jsp/h1/body
/htmltaglib指令
在JSP页面中使用第三方的标签库时需要使用taglib指令来“导包”
Taglib指令的语法% taglib uriuri prefixprefixOfTag % uri属性确定标签库的位置prefix属性指定标签库的前缀。
比如引入JSTL标签库% taglib urihttp://java.sun.com/jstl/core prefixc%
JSP中的小脚本与表达式
在JSP页面中计算两个数的和将结果输出显示
% page languagejava importjava.util.*,java.text.* contentTypetext/html; charsetutf-8 %
htmlheadtitle计算求和/title/headbody两个数的求和结果为%int numA 4, numB 5 ;int result numAnumB;%%result %/body
/htmlJSP中的声明
作用JSP页面中定义方法 语法%! Java代码%
% page languagejava importjava.util.*,java.text.* contentTypetext/html; charsetutf-8%
html
%String formatDate(Date d){SimpleDateFormat formater new SimpleDateFormat(yyyy年MM月dd日);
return formater.format(d); }
%你好今天是
%formatDate(new Date()) %
/body
/htmlJSP中的注释
HTML的注释
F12查看页面源码可见
!-- html注释--JSP注释
F12查看页面源码不可见
%-- JSP注释--%% //单行注释 %
% /*多行注释 */ %JSP行为
JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件重用JavaBean组件引导用户去另一个页面为Java插件产生相关的HTML等等。
行为标签只有一种语法格式它严格遵守XML标准jsp:action_name attributevalue / 行为标签基本上是一些预先就定义好的函数下表罗列出了一些可用的JSP行为标签
语法描述jsp:include用于在当前页面中包含静态或动态资源jsp:useBean寻找和初始化一个JavaBean组件jsp:setProperty设置 JavaBean组件的值 配合 jsp:useBean使用jsp:getProperty输出某个JavaBean的属性。 配合 jsp:useBean 使用jsp:forward把请求转到一个新的页面 (转发)