jsp技术
Posted xiongdaren
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp技术相关的知识,希望对你有一定的参考价值。
2018-05-11 22:21:16
jsp脚本形式
1)<% %>
2)<%= %>
3<%! %>
当jsp文件被翻译后,可以在Tomcat/work下找到翻译后的xxx_jsp.java文件,打开发现
导入Tomcat源代码文件查找HttpJspBase发现
HttpJspBase继承了HttpServlet类,也就是说jsp的本质是servlet。
再返回来看xxx_jsp.java文件,会发现
<%= %>实质是out.print()
<% %>内的语句书写在servlt方法内部
<%! %>内容书写在成员变量的位置,因此可以在其中创建方法
对比三种注释方式:
html: <!--注释内容--> 可见范围:jsp源码,翻译后的Servlet,浏览器显示的源码
java: // /**/ 可见范围:jsp源码,翻译后的Servlet
jsp: <%--注释内容--%>可见范围:jsp源码
可见jsp的注释形式最安全
jsp运行原理
jsp在第一次被访问时会被Web容器翻译成servlet,再执行
过程:
第一次访问---->xxx.jsp---->xxx_jsp.java---->编译运行
jsp指令
1)page指令
language 只能是java 不支持其他语言
contentType:文本类型 实质是response.setContentType("text/html; charset=UTF-8")
pageEncoding:当前jsp文件的编码
当没有contentType时找pageEncoding,因此可以不写contentType
session:是否在jsp翻译时自动创建session
import:导包
errorPage:错误(500)时往某页面跳转
isErrorPage:当前页面是否为处理错误的页面
2)include指令
页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中
格式:<%@ include file="被包含的文件地址"%>
3)taglib指令
在jsp页面中引入标签库(jstl标签库、struts2标签库)
格式:<%@ taglib uri="标签库地址" prefix="前缀"%>
jsp内置/隐式对象
out 页面输出 out缓冲区默认大小8kb,可设置为0kb,将其关闭,内容将直接写在response缓冲区
request 得到用户请求信息
response 服务器向客户端的回应信息
config 服务器配置,可以取得初始化参数
session 用来保存用户的信息
application 所有用户的共享信息
page 指当前页面转换后的Servlet类的实例
pageContext JSP的页面容器 域对象,作用范围当前jsp页面,也可以向指定的其他域存取对象
pageContext.findAttributr("name"),从小到大搜索四个域(request,session,pageContext,appliaction)中的name,找到一个后停止
pageContext.get...方法可以得到其他八个隐式对象
exception 表示JSP页面所发生的异常,在错误页中才起作用
jsp表现
1)页面包含(动态包含):<jsp:include page="被包含的页面"/>
举例A中包含B来理解静态包含和动态包含
静态包含:将AB页面合在一起进行翻译
动态包含:先翻译A后编译运行,到<jsp:include page="被包含的页面"/>语句,再翻译B,然后对B编译运行
2)请求转发:<jsp:forward page="要转发的资源" />
以上是关于jsp技术的主要内容,如果未能解决你的问题,请参考以下文章