javaweb笔记五
JSP:java server page服务器脚本语言。(脚本===插件),是一种在html代码中,嵌入java代码的方式。
解决servlet产生动态页面缺陷而产生的一门技术。
js:客户端脚本语言
jsp引擎:在web容器中,需要提供一个jsp引擎,将客户端请求的jsp页面翻译成java类。
jsp和servlet的区别:
按照servlet规范,由jsp引擎所翻译的java类,必须实现HttpJspPage接口。而HttpJspPage接口是Servlet的子接口,所以,jsp引擎所翻译的
Java类,同样满足servlet规范。从这个意义上说,jsp本质是servlet,拥有和servlet类似的生命周期。只不过jsp重在显示页面,而servlet
重在逻辑处理。
JSP生命周期:(3--7和servlet生命周期流程一样)
1、由JSP引擎将JSP页面翻译成JAVA代码(aa.jsp-->aa_jsp.java)
2、将JAVA代码编译成class字节码文件(aa_jsp.java-->aa_jsp.class)
3、加载到容器
4、由容器实例化成对象
5、初始化阶段相关的方法是jspInit()
6、请求到达,调用服务阶段相关的方法是_jspService()
7、销毁阶段相关的方法是jspDestroy()
JSP网页主要由元素(Element)和模板数据(Template Data)两个部分组成 :
模板数据是JSP的静态部分,WEB容器不处理 ;元素则是必须经由WEB容器解释
jsp脚本元素有三种:
声明:<%! %>定义jsp类的成员变量、静态变量和方法。
脚本:<% %>丰富_jspService()方法,在脚本中定义的变量都是_jspService()的局部变量。
表达式:<%= %>也是在丰富_jspService()方法,相当于打印语句,向客户端输出内容,表达式后不能加分号
jsp的注释:
jsp注释 <%-- --%>对于jsp注释,web容器是不翻译的,jsp注释只在源代码中可见,最为安全,可以注释掉java代码
html注释 <!-- -->容器可以识别,不能注释java代码。web容器会以out.println()方式输出到客户端,客户端和服务器都可见,最不安全。
java注释 只在服务器端可见,客户端不可见。
jsp隐式对象:
jsp引擎在翻译jsp页面时,会在_jspService()方法中,传入由web容器封装的请求、响应对象,同时在_jspService()方法开始时,定义了九个变量
,并且完成了这些变量的初始化。开发者所写的脚本,表达式,是在丰富_jspService()方法,所以,可以直接使用这些变量,而不用定义,
这些变量成为jsp的隐式对象。
jsp隐式对象有九个:(无需声明,可以直接使用)
四个作用域:
pageContext:作用于页面(只在jsp页面有效)===ServletContext
request:作用于请求(请求范围内有效)
session:作用于会话(一次会话有效)
application:作用于全局(在全局范围有效)
两个输出:
response:响应对象
out:打印输出流
page:当前jsp类对象(this)
config:配置对象
exception:异常对象
提供整个JSP页面的相关信息<%@ %>,用于JSP页面与容器之间的通信
在JSP中,有三种类型的指令:
page指令为当前页面提供处理指令
include指令用于把另一个文件包含在JSP中
taglib指令指定如何包含和访问自定义标签库
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
page指令常见的属性:contentType:设置响应信息的MIME类型和编码集====pageEncoding:设置响应信息的编码集,MIME类型默认为text/html
import:在jsp类中,导入其他包中的类,多个包用逗号分开。
session:客户端访问jsp时,是否创建session对象,默认为true
exception:当errorPage出现运行异常时,才会产生该异常对象。
errorPage:当前jsp中抛出了运行异常,跳转到errorPage属性所指定的页面。
isErrorPage:当该属性设置为true时,表示当前jsp为异常处理页面。在当前jsp类中,会定义exception隐式对象,接收从出错页面中传递过来的异对象。
在web.xml中,可以定义:(在相应信息为指定状态码时,跳转到指定页面)
<error-page>
<error-code>404</error-code>
<location>/noFind.jsp</location>
</error-page>
javaweb笔记五的更多相关文章
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- 《MFC游戏开发》笔记五 定时器和简单动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- Crazyflie笔记五: CRTP 实时通信协议(一)(转)
源:Crazyflie笔记五: CRTP 实时通信协议(一) 这里详细介绍了 Crazyflie 的 CRTP实时通信协议的相关内容,由于内容很长,分几篇博文来讲述.这里是第一节内容.欢迎交流:301 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Django开发笔记五
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
随机推荐
- 【转】AD转换中常用的十种数字滤波法
在AD采集中经常要用到数字滤波,而不同情况下又有不同的滤波需求,下面是10种经典的软件滤波方法的程序和优缺点分析: 限幅滤波法(又称程序判断滤波法) 中位值滤波法 算术平均滤波法 递推平均滤波法(又称 ...
- Oracle和SQL SERVER在SQL语句上的差别
Oracle与Sql server都遵循SQL-92标准:http://owen.sj.ca.us/rkowen/howto/sql92F.html,但是也有一些不同之处,差别如下: Oracle中表 ...
- 分库分表中间件sharding-jdbc的使用
数据分片产生的背景,可以查看https://shardingsphere.apache.org/document/current/cn/features/sharding/,包括了垂直拆分和水平拆分的 ...
- python中的functools模块
functools模块可以作用于所有的可以被调用的对象,包括函数 定义了__call__方法的类等 1 functools.cmp_to_key(func) 将比较函数(接受两个参数,通过比较两个参数 ...
- get请求中的url encode问题
首先发表一下感慨,Python的requests模块确实太简便,省却了很多的转码等等等等的问题,但这也是缺点,对于我这种基础不好的同学来说让我少知道了许多本来应该知道的东西. url encode: ...
- hdu 6166 Senior Pan
http://acm.hdu.edu.cn/showproblem.php?pid=6166 题意: 给出一张无向图,给定k个特殊点 求这k个特殊点两两之间的最短路 二进制分组 枚举一位二进制位 这一 ...
- Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现
前言 本文起笔于2018-06-26周二,接了一个这周要完成的开发任务,需要先等其他人的接口,可能更新的会慢一些,还望大家见谅.这篇博客我们主要讲Spring Cloud Zuul.项目地址:我的gi ...
- CSS reset--(来自网易)
/* reset */ html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,capti ...
- js简单的面试题
1,js有哪些数据类型,数据类型的判断函数? String,Number,Boolean,Null,Undefined,Object 判断函数有:typeof,instanceof,construct ...
- iOS 处理缓存的三种方法
缓存处理是个相当头疼的事情,要根据需要综合应用不同的策略.总的来说有以下几种情况: 1.URL缓存,例如社交应用的帖子浏览,要在viewDidAppear:里面进行URL缓存.简单来说就是用NSURL ...