JSP回顾
2015-12-25 22:43
323 查看
1.JSP调用
实际在调用时,还是调用的Servlet,写好的JSP会翻译成对应的Servlet,路径在Tomcat的work目录下:
ApacheSoftwareFoundation\Tomcat6.0\work\Catalina\localhost\azhesh\org\apache\jsp
2.JSP引擎
把Jsp翻译成Servlet的程序叫做Jsp引擎,默认编码ISO8859-1。
3.JSP编码
pageEncoding="characterSet",是通知服务器端(即Servlet引擎)以什么码表解析JSP。
contentType="charset=ISO-8859-1" 设置response编码,控制浏览器以什么方式解析打开。
如果jsp在文本编辑下,需要注意保存文件的编码方式和pageEncoding要一致。但是在eclipse下不需要,因为eclipse会智
能地按照pageEncoding设置的方式保存文件。如果jsp里面没有设置contentType中的编码方式,那么服务器在生成
response时,response默认以这个码表设置的。
4.JSP脚本表达式
用于将程序数据输出到客户端 语法:<%=变量或表达式 %>
JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端。所以往前
台输出有两种方式,另外一种就是手写的out.print("");JSP脚本表达式中的变量或表达式后面不能有分号(;)
5.JSP脚本片段
<%多行Java代码%>JSP脚本片断中只能出现java代码,不能出现其它模板元素,JSP引擎在翻译JSP页面中,会将JSP脚本片
断中的Java代码将被原封不动地放到Servlet的_jspService方法中,片断中的Java代码必须严格遵循Java语法(JSP页面中
的HTML内容称之为JSP模版元素)单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完
整的Java语句
6.JSP声明
JSP页面中编写的所有代码,默认会翻译到servlet的service方法中,而Jsp声明中的java代码被翻译到_jspService方法的
外面。语法:<%! java代码%>
多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
7.JSP指令
JSP指令是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分
•page <%@指令属性名="值"%><%@page contentType="text/html;charset=gb2312" import="java.util.Date"%>
•Include <%@include file="relativeURL"%>,其中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代
表当前web应用。静态引入其它JSP页面,JSP引擎将把这两个JSP翻译成一个servlet。
动态包含:运行时包含,生成多个Servlet
Servlet<% request.getRequestDispatcher("/test.jsp").include(request,response) %>
<jsp:include page=""></jsp:include>
<%pageContext.include("a.jsp");%>
•taglib taglib指令用于在JSP页面中导入标签库
8.JSP案列
关于JSP中页面刷新后一会儿好一会坏:这种情况,必须是第一次加载是好的JSP,此时对应的Servlet也是OK的后来改动了
JSP,有错误,此时无法翻译成Servlet,但是文件中还是存在以前好的Servlet。改动后刷新自然报错,间隔一段时间刷
新,还是报错。但是如果间隔时间很短,Servlet引擎有一个机制:因为相隔时间很短,JSP引擎会认为刚刚翻译过,就直
接从文件中拿,此时拿的自然是好的。但是隔得久就会重新翻译,就会报错。此时就会出现时错时对的情况。
9.九大隐式对象
Request,Response,Session,Application(servletContext),
Config(servletConfig),Page(this),Exception,Out(jspWriter),pageContext
10.JSP调用时间
每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一
个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。由于JSP第一次访问时会翻译成
servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所
以程序的执行效率不会受到影响。
11.JSP常用标签:
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>"/>
</jsp:include>
<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>"/>
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以
使用多个<jsp:param>标签来传递多个参数。
12.Servlet中配置JSP
<servlet>
<servlet-name>SimpleJspServlet</servlet-name>
<jsp-file>/jsp/simple.jsp</jsp-file>
<load-on-startup>1</load-on-startup>
</servlet>
……
<servlet-mapping>
<servlet-name>SimpleJspServlet</servlet-name>
<url-pattern>/xxx/yyy.html</url-pattern>
</servlet-mapping>
13.out隐式对象
out隐式对象用于向客户端发送文本数据。
out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的
PrintWriter对象非常相似。JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的
PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。
但是只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通
过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
设置page指令的buffer属性关闭了out对象的缓存功能;out对象的缓冲区已满;整个JSP页面结束;
避免同时使用out或是页面上直接输数据和response.getwriter()输出数据。顺序有问题另外JSP页面上直接输入的数据,
翻译成Servlet后,也是out.print();注意。
14.pageContext对象
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的
引用(用在自定义标签的开发中),它自身还是一个域对象,可以用来保存数据。并且,这个对象还封装了web开发中经常
涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
pageContext封装其它8大内置对象的意义
PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法
和include方法。方法接收的资源如果以“/”开头, “/”代表当前web应用。
实际在调用时,还是调用的Servlet,写好的JSP会翻译成对应的Servlet,路径在Tomcat的work目录下:
ApacheSoftwareFoundation\Tomcat6.0\work\Catalina\localhost\azhesh\org\apache\jsp
2.JSP引擎
把Jsp翻译成Servlet的程序叫做Jsp引擎,默认编码ISO8859-1。
3.JSP编码
pageEncoding="characterSet",是通知服务器端(即Servlet引擎)以什么码表解析JSP。
contentType="charset=ISO-8859-1" 设置response编码,控制浏览器以什么方式解析打开。
如果jsp在文本编辑下,需要注意保存文件的编码方式和pageEncoding要一致。但是在eclipse下不需要,因为eclipse会智
能地按照pageEncoding设置的方式保存文件。如果jsp里面没有设置contentType中的编码方式,那么服务器在生成
response时,response默认以这个码表设置的。
4.JSP脚本表达式
用于将程序数据输出到客户端 语法:<%=变量或表达式 %>
JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端。所以往前
台输出有两种方式,另外一种就是手写的out.print("");JSP脚本表达式中的变量或表达式后面不能有分号(;)
5.JSP脚本片段
<%多行Java代码%>JSP脚本片断中只能出现java代码,不能出现其它模板元素,JSP引擎在翻译JSP页面中,会将JSP脚本片
断中的Java代码将被原封不动地放到Servlet的_jspService方法中,片断中的Java代码必须严格遵循Java语法(JSP页面中
的HTML内容称之为JSP模版元素)单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完
整的Java语句
6.JSP声明
JSP页面中编写的所有代码,默认会翻译到servlet的service方法中,而Jsp声明中的java代码被翻译到_jspService方法的
外面。语法:<%! java代码%>
多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
7.JSP指令
JSP指令是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分
•page <%@指令属性名="值"%><%@page contentType="text/html;charset=gb2312" import="java.util.Date"%>
•Include <%@include file="relativeURL"%>,其中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代
表当前web应用。静态引入其它JSP页面,JSP引擎将把这两个JSP翻译成一个servlet。
动态包含:运行时包含,生成多个Servlet
Servlet<% request.getRequestDispatcher("/test.jsp").include(request,response) %>
<jsp:include page=""></jsp:include>
<%pageContext.include("a.jsp");%>
•taglib taglib指令用于在JSP页面中导入标签库
8.JSP案列
关于JSP中页面刷新后一会儿好一会坏:这种情况,必须是第一次加载是好的JSP,此时对应的Servlet也是OK的后来改动了
JSP,有错误,此时无法翻译成Servlet,但是文件中还是存在以前好的Servlet。改动后刷新自然报错,间隔一段时间刷
新,还是报错。但是如果间隔时间很短,Servlet引擎有一个机制:因为相隔时间很短,JSP引擎会认为刚刚翻译过,就直
接从文件中拿,此时拿的自然是好的。但是隔得久就会重新翻译,就会报错。此时就会出现时错时对的情况。
9.九大隐式对象
Request,Response,Session,Application(servletContext),
Config(servletConfig),Page(this),Exception,Out(jspWriter),pageContext
10.JSP调用时间
每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一
个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。由于JSP第一次访问时会翻译成
servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所
以程序的执行效率不会受到影响。
11.JSP常用标签:
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>"/>
</jsp:include>
<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>"/>
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以
使用多个<jsp:param>标签来传递多个参数。
12.Servlet中配置JSP
<servlet>
<servlet-name>SimpleJspServlet</servlet-name>
<jsp-file>/jsp/simple.jsp</jsp-file>
<load-on-startup>1</load-on-startup>
</servlet>
……
<servlet-mapping>
<servlet-name>SimpleJspServlet</servlet-name>
<url-pattern>/xxx/yyy.html</url-pattern>
</servlet-mapping>
13.out隐式对象
out隐式对象用于向客户端发送文本数据。
out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的
PrintWriter对象非常相似。JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的
PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。
但是只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通
过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
设置page指令的buffer属性关闭了out对象的缓存功能;out对象的缓冲区已满;整个JSP页面结束;
避免同时使用out或是页面上直接输数据和response.getwriter()输出数据。顺序有问题另外JSP页面上直接输入的数据,
翻译成Servlet后,也是out.print();注意。
14.pageContext对象
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的
引用(用在自定义标签的开发中),它自身还是一个域对象,可以用来保存数据。并且,这个对象还封装了web开发中经常
涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
pageContext封装其它8大内置对象的意义
PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法
和include方法。方法接收的资源如果以“/”开头, “/”代表当前web应用。
相关文章推荐
- href="#"与href="javascript:void(0)"的区别
- jsp成绩单综合设计
- 每天一个JavaScript实例-html5拖拽
- javaScript编写简单计算器
- 谷歌浏览器javascript调试教程
- JavaScript中的this关键字使用方法总结
- jstl 之c:set 标签使用
- 看起来好难越过去的坎
- 山重水复疑无路
- 在js中引用图片的写法
- JavaWeb自学之JavaScript学习笔记 Day-2
- JS事件
- JS原型继承工作原理
- JavaScript 定时器使用
- JavaScript权威指南--Chapter5 语句
- js获取文本显示宽度
- 一、p2物理引擎在egret中的应用:简单贴图的实现
- banner轮播图js
- 推荐牛X的一本JS书
- 在Angular.js使用组合+依赖注入而不是继承