JSP技术

JSP的本质是一个类文件,它存储于tomcat(如果你使用tomcat)目录下的work文件夹中,该类文件继承了HttpJspBase类,而HttpJspBase类继承了HttpServlet类,所以其实质是一个servlet的类文件。


JSP的脚本(以下要根据JSP的本质是一个Servlet类来理解):
1)<%java代码%> ----- 内部的java代码翻译到service方法的内部
2)<%=java变量或表达式%> ----- 会被翻译成service方法内部out.print()
3)<%!java代码%> ---- 会被翻译成servlet的成员的内容



JSP中的注释:
1)Html注释:<!--注释内容--> ---可见范围 jsp源码、翻译后的servlet、页面显示html源码
2)java注释://单行注释  /*多行注释*/ --可见范围 jsp源码 翻译后的servlet
3)jsp注释:<%--注释内容--%> ----- 可见范围 jsp源码可见
其中jsp注释的范围最低,所以可以用于注释不希望被他人看见的内容,提高自己程序的安全性。
response的输出流和<%=参数%>相比,一般而言response的速度更快,因为页面先寻找response缓存,然后out缓存再加载至response中被读取,out缓存默认大小为8kb,可以以page指令的buffer设置,如果设为0,则response的输出流和out输出流按正常排序的先后顺序输出。



三大指令:
page指令
格式:格式:<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>
常用属性如下:
language:jsp脚本中可以嵌入的语言种类
pageEncoding:当前jsp文件的本身编码---内部可以包含contentType(写了它不用再写下面的了)
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻译时自动创建session
import:导入java的包
errorPage:当当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面

include指令:
页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中
格式:<%@ include file="被包含的文件地址"%>
静态包含为被包含的内容被以代码的形式写入进包含其的jsp servlet类文件,动态包含为jsp servlet中只导向一个地址,没有将被包含内容写入进去。

taglib指令:
在jsp页面中引入标签库(jstl标签库、struts2标签库)
格式:<%@ taglib uri="标签库地址" prefix="前缀"%>

JSP九个隐式对象(可以直接使用的对象):
out------------------用于页面输出
request------------得到用户请求信息,
response------------------服务器向客户端的回应信息
config-------------服务器配置,可以取得初始化参数
session----------用来保存用户的信息
application--------------web工程的上下文环境(ServletContext)
page---------------------指当前页面转换后的Servlet类的实例(在普通类中的this)
pageContext-----------------------JSP的页面容器
exception-------------------表示JSP页面所发生的异常,在错误页中才起作用

out的作用就是向客户端输出内容 out.write();

pageContext可以向指定的其他域中存取数据
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
---依次从pageContext域,request域,session域,application域(域的范围从小到大)中获取属性,在某个域中获取后将不在向后寻找


5.jsp标签(动作)
1)页面包含(动态包含):<jsp:include page="被包含的页面"/>
2)请求转发:<jsp:forward page="要转发的资源" />

原文地址:https://www.cnblogs.com/zhangrui0328/p/9285957.html