1.jsp脚本和注释
jsp脚本
1)<%java 代码%> -------- 内部的java代码翻译到server方法的内部
2)<%= java 变量表达式%> ---- 会被翻译成server内部out.print()
3)<%! java 代码%>-- 会被翻译成servlet的成员的内容
jsp注释
1)Html注释<!--注释内容 --> -------可见范围jsp源码、翻译后的servlet、页面
2)java注释 //单行注释 /*多行注释*/ -- 可见范围jsp源码 翻译后servlet
3)jsp注释<%--注释内容--%>---可见范围jsp源码可见
2.jsp运行运行原理 -- jsp的本质就是servlet
jsp 第一次访问/文件被修改 会被Web容器翻译成servlet,在执行(在servlet在Tconcat服务器work文件夹中)
过程:
第一次访问/文件被修改 --->helloServlet.jsp -->helloServlet_.java->编译运行
3.jsp指令
- page指令 --- 属性最多的指令(实际开发中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="被包含的文件地址"%>
- taglib指令
在jsp页面中引入标签库(jstl标签库、struts2标签库)
格式:<%@ taglib uri="标签库地址" prefix="前缀"%>
4.jsp内置/隐式对象(9个)
还有一个是exception,错误处理
名称 |
类型 |
描述 |
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 |
表示JSP页面所发生的异常,在错误页中才起作用 |
1)out对象
out 的类型 jspWriter
作用就是想客服端输出内容---->out.write();
out的缓冲区默认是8kb可以设成0-->-buffer=“0kb”,关闭后直接写到response缓冲区器中
2)pageContext对象(小重要)
1.pageContext对象的作用和性质
jsp页面的上下文对象,作用如下
page对象与pageContext对象不是一回事
pageContext是一个域对象
2.pageContext对象的常用方法
1.存取数据
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)
向其他域中写入/读取数据
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
-------在所有域中查找该名称的数据,找到则返回,不再继续寻找,域从小到大
-------依次pageContext域->request域->session域->application域
2.pageContext可以获得其他8大隐式对象
用于传参的封装
调用例子:
pageContext.getRequest()
pageContext.getSession()
5.jsp标签(动作)
1.页面包含(动态包含):<jsp:include page ="被包含的页面">
2.请求转发<jsp:forward page ="要转发的资源">
静态包含与动态包含的区别?
静态页面文件是两个文件翻译后合一而动态的页面文件是两个翻译后还是两个人