*3 JSP工作原理
1)Web服务器会在第一次访问某jsp时,将jsp翻译成java原码,该原码是一个servlet
2)jsp的三个生命周期方法:date_jsp(),_jspInit(),_jspDestory(),_jspService()方法,生命周期类似于servlet
3)在_jspService()方法,Web服务器自动默认创建8个内置对象并设置值
4)其中静态的资源通过out.write()方法输出,动态资源通过out.print()方法输出
5)从最终的本质上讲,jsp都是servlet,按照servlet方式运行
6)参见<<JSP原理.JPG>>
*4 JSP语法
1)JSP模版元素
就是JSP中的<html>静态的标签
2)JSP表达式
语法:<%="变量/常量"%>,字符串用""号定界,无需分号结束
需要向浏览器输出内容时,可以使用JSP表达式,
类似于Servlet中resposne.getWriter().write("哈哈");
3)JSP脚本片断
语法:<%一行呀多行Java代码,以分号结束%>
生成的源码,都位于_jspService()方法中,多个JSP脚本片段可以相互访问
4)JSP声明
语法:<%! 声明实例变量或普通方法%>
5)JSP注释
语法:<%-- JSP特有的注释 --%>
JSP引擎不会将其翻译成Servlet源码,即忽略
其它注释都会被翻译进Sercvlet源码
JSP特有注释不允许嵌套
============================================================
2 JSP中九大内置对象
request:取得请求参数
response:响浏览器输出内容
session:在当前会话中有效,新会话中无效
application:在当前web应用中有效
config:获取jsp在web.xml文件中配置的初始化参数
exception:当jsp页面是错误处理页面,方可使用
out:输出到浏览器
page
pageContext
3 PageContext对象作用
1)可以引用其它8个内置对象
如果一个普通的java类,拥用PageContext对象,则该普通Java类就可以与Web资源交互,例如取得客户端IP地址
2)域对象
>>PageContext域对象只能在当前JSP页面中有效,请求出了该JSP页面,原PageContext对象内容销毁
>>PageContext将值放入到指定的域对象,同样需要从指定的域对象中取值
>>findAttriute()会根据name依次去JSP中四个域对象查询,找到即止,如果都找不到,返回null字符串
3)封装Web常用的操作,例如转发/包含/。。。。
>>PageContext.include()
>>PageContext.forward()
*4 JSP中四个域对象汇总
1)什么是域对象:在多个动态Web资源之间共享信息,需要域对象;例如:Servlet到Servlet,Servlet到Jsp,Jsp到Jsp
2)JSP中域对象有四个:PageContext->request->session->application
3)应用场合:
>>PageContext:只能应用在当前面页的一次请求中
>>request:只要在一次请求中,不论该请求经过N个动态资源,只且只能是转发
>>session:只要在一次新会话中,不论该请求经过N个动态资源,不论转发还是重定向,例如:购物车
>>application:只要在当前web应用中,不论该请求经过N个动态资源,不论转发还是重定向,不论多个新会话,
例如:在线访问计数器,QQ群聊室
4)参见<<jsp中4个域对象.JPG>>
*5 JSP内置非JavaBean标签(美化+业务逻辑)
1)JSP标签主要目的:替代JSP页面中的<%%>脚本符号,
2)目标:达到美化和业务逻辑相统一的JSP页面
3)常用的标签/动作
<jsp:include/>(动态包含/运行/执行)
(1)将被包含的jsp都生成对应的servlet,即如果包含3个jsp的话,则生成3个servlet
(2)在运行jsp时,动态包含
(3)总的jsp文件,生成的servlet结构良好
(4)<%@include%>指令是通过file属性,而<jsp:include>标签是通过page属性
<jsp:forward/>
转发到指定的jsp页面
<jsp:param/>
包含一个或多个参数
4)JSP错误的种类:
>>JSP语法出错
>>JSP语法无错,但翻译成Servlet时出错了,源码有,但字符没有
>>JSP语法无错,翻译成Servlet时无错,执行class时出错了
*6 JSP中内置JavaBean标签 + Page对象
<jsp:useBean/>
先查询,如果查询不到,再创建新的JavaBean对象,同时绑定到指定域对象中
对于<jsp:useBean/>标签中的内容,只能在创建新的JavaBean对象时执行
id=绑定到域对象的名字
<jsp:setProperty/>
为JavaBean设置值
param表示参数的名
只能当参数名和JavaBean的属性名一致的情况下,可以使用通配符收集,代码如下:
<jsp:setProperty name="student(域对象中的name属性的值)" property="*"(属性名和参数名一致)/>
<jsp:getProperty/>
取得JavaBean属性的值
7 EL和JSTL快速入门
*1)EL可以替代和简化JSP脚本的输出
2)语法格式:${EL语法},前提:<%@ page isELIgnored="false"%>
3)输出普通变量/JavaBean/多个JavaBean嵌套的值
4)EL只会从域对象中查询值,找不到返回""空串,底层就是pageContext.findAttribute()方法的封装
* 5)JSTL替代和简化JSP脚本的迭代操作的输出
6)JSTL的开发步骤:
>>导入二个jar包:Jstl.jar和Standard.jar[都是class文件]
>>在需要使用jsp的页面中导入如下代码:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
这里好多视频下载学习http://www.itcast.cn/channel/video.shtml,喜欢的看看
1)Web服务器会在第一次访问某jsp时,将jsp翻译成java原码,该原码是一个servlet
2)jsp的三个生命周期方法:date_jsp(),_jspInit(),_jspDestory(),_jspService()方法,生命周期类似于servlet
3)在_jspService()方法,Web服务器自动默认创建8个内置对象并设置值
4)其中静态的资源通过out.write()方法输出,动态资源通过out.print()方法输出
5)从最终的本质上讲,jsp都是servlet,按照servlet方式运行
6)参见<<JSP原理.JPG>>
*4 JSP语法
1)JSP模版元素
就是JSP中的<html>静态的标签
2)JSP表达式
语法:<%="变量/常量"%>,字符串用""号定界,无需分号结束
需要向浏览器输出内容时,可以使用JSP表达式,
类似于Servlet中resposne.getWriter().write("哈哈");
3)JSP脚本片断
语法:<%一行呀多行Java代码,以分号结束%>
生成的源码,都位于_jspService()方法中,多个JSP脚本片段可以相互访问
4)JSP声明
语法:<%! 声明实例变量或普通方法%>
5)JSP注释
语法:<%-- JSP特有的注释 --%>
JSP引擎不会将其翻译成Servlet源码,即忽略
其它注释都会被翻译进Sercvlet源码
JSP特有注释不允许嵌套
============================================================
2 JSP中九大内置对象
request:取得请求参数
response:响浏览器输出内容
session:在当前会话中有效,新会话中无效
application:在当前web应用中有效
config:获取jsp在web.xml文件中配置的初始化参数
exception:当jsp页面是错误处理页面,方可使用
out:输出到浏览器
page
pageContext
3 PageContext对象作用
1)可以引用其它8个内置对象
如果一个普通的java类,拥用PageContext对象,则该普通Java类就可以与Web资源交互,例如取得客户端IP地址
2)域对象
>>PageContext域对象只能在当前JSP页面中有效,请求出了该JSP页面,原PageContext对象内容销毁
>>PageContext将值放入到指定的域对象,同样需要从指定的域对象中取值
>>findAttriute()会根据name依次去JSP中四个域对象查询,找到即止,如果都找不到,返回null字符串
3)封装Web常用的操作,例如转发/包含/。。。。
>>PageContext.include()
>>PageContext.forward()
*4 JSP中四个域对象汇总
1)什么是域对象:在多个动态Web资源之间共享信息,需要域对象;例如:Servlet到Servlet,Servlet到Jsp,Jsp到Jsp
2)JSP中域对象有四个:PageContext->request->session->application
3)应用场合:
>>PageContext:只能应用在当前面页的一次请求中
>>request:只要在一次请求中,不论该请求经过N个动态资源,只且只能是转发
>>session:只要在一次新会话中,不论该请求经过N个动态资源,不论转发还是重定向,例如:购物车
>>application:只要在当前web应用中,不论该请求经过N个动态资源,不论转发还是重定向,不论多个新会话,
例如:在线访问计数器,QQ群聊室
4)参见<<jsp中4个域对象.JPG>>
*5 JSP内置非JavaBean标签(美化+业务逻辑)
1)JSP标签主要目的:替代JSP页面中的<%%>脚本符号,
2)目标:达到美化和业务逻辑相统一的JSP页面
3)常用的标签/动作
<jsp:include/>(动态包含/运行/执行)
(1)将被包含的jsp都生成对应的servlet,即如果包含3个jsp的话,则生成3个servlet
(2)在运行jsp时,动态包含
(3)总的jsp文件,生成的servlet结构良好
(4)<%@include%>指令是通过file属性,而<jsp:include>标签是通过page属性
<jsp:forward/>
转发到指定的jsp页面
<jsp:param/>
包含一个或多个参数
4)JSP错误的种类:
>>JSP语法出错
>>JSP语法无错,但翻译成Servlet时出错了,源码有,但字符没有
>>JSP语法无错,翻译成Servlet时无错,执行class时出错了
*6 JSP中内置JavaBean标签 + Page对象
<jsp:useBean/>
先查询,如果查询不到,再创建新的JavaBean对象,同时绑定到指定域对象中
对于<jsp:useBean/>标签中的内容,只能在创建新的JavaBean对象时执行
id=绑定到域对象的名字
<jsp:setProperty/>
为JavaBean设置值
param表示参数的名
只能当参数名和JavaBean的属性名一致的情况下,可以使用通配符收集,代码如下:
<jsp:setProperty name="student(域对象中的name属性的值)" property="*"(属性名和参数名一致)/>
<jsp:getProperty/>
取得JavaBean属性的值
7 EL和JSTL快速入门
*1)EL可以替代和简化JSP脚本的输出
2)语法格式:${EL语法},前提:<%@ page isELIgnored="false"%>
3)输出普通变量/JavaBean/多个JavaBean嵌套的值
4)EL只会从域对象中查询值,找不到返回""空串,底层就是pageContext.findAttribute()方法的封装
* 5)JSTL替代和简化JSP脚本的迭代操作的输出
6)JSTL的开发步骤:
>>导入二个jar包:Jstl.jar和Standard.jar[都是class文件]
>>在需要使用jsp的页面中导入如下代码:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
这里好多视频下载学习http://www.itcast.cn/channel/video.shtml,喜欢的看看