JSP脚本和运行原理
JSP脚本
1:<%java代码%> 内部是Java代码翻译到service内部
2:<%= java 变量或表达式%> 会被翻译到service 方法内部的out.print
3:<%! java 代码%> 会被翻译到servlet 成员内容
jsp 运行原理
访问一个JSP文件,首先会到web容器work目录下面寻找是否有翻译好的_jsp.java文件,如果没有,web容器就会翻译成_jsp.java文件内容,总之jsp其实也是servlet
JSP指令
page指令
格式:<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>常用属性如 下:
language:jsp脚本中可以嵌入的语言种类
pageEncoding:当前jsp文件的本身编码---内部可以包含contentTypecontentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻译时自动创建session
import:导入java的包
errorPage:当当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面
include指令
页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中
格式:<%@ include file="被包含的文件地址"%>
taglib指令
在jsp页面中引入标签库(jstl标签库、struts2标签库)
格式:<%@ taglib uri="标签库地址" prefix="前缀"%>
JSP内置/隐式对象
JSP被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在JSP脚本中可以直接使用这9个对象
out javax.servlet.jsp.JspWriter 用于页面输出
request javax.servlet.http.HttpServletRequest 得到用户请求信息
response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信
config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数
session javax.servlet.http.HttpSession 用来保存用户的信息
application javax.servlet.ServletContext 所有用户的共享信息
page java.lang.Object 指当前页面转换后的Servlet类的实例
pageContext javax.servlet.jsp.PageContext JSP的页面容器
exception java.lang.Throwable java.lang.Throwable 表示JSP页面所发生的异常,在错误页中才起作用
PageContext 四大作用域
依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找
JSP 标签
1)页面包含(动态包含):<jsp:include page="被包含的页面"/>
2)请求转发:<jsp:forward page="要转发的资源" />
静态包含和动态包含的区别:静态包含会把所有页面一次性翻译到一个servlet的service方法中,而对于动态包含,会翻译成多个servlet.java文件,需要的时候才动态引用。
EL表达式和JSTL标签库使用
EL表达式主要是依次从依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取之后将不在向后寻找
过${pageContext.request.contextPath}获取项目路径
EL和JSTL的作用就是来替换jsp中的java脚本片段代码
网友评论