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 ="要转发的资源">
6.补充
1.静态包含与动态包含的区别?
静态包含:
<%@include file ="name.jsp" %>
动态包含
<jsp:include page = "name.jsp"></jsp:include>
静态页面文件是两个文件翻译后只有一个java文件,合并
动态的页面文件是两个翻译后还是两个java文件
2.四大作用域的总结:
1.page域:当前jsp页面范围
2.request域:一次请求
3.session域:一次会话
4.application域:整个web应用
3.JSP行为
jsp:include | 用于在当前页面中包含静态或动态资源 |
jsp:useBean | 寻找和初始化一个JavaBean组件 |
jsp:setProperty | 设置 JavaBean组件的值 |
jsp:getProperty | 将 JavaBean组件的值插入到 output中 |
jsp:forward | 从一个JSP文件向另一个文件传递一个包含用户请求的request对象 |
jsp:plugin | 用于在生成的HTML页面中包含Applet和JavaBean对象 |
jsp:element | 动态创建一个XML元素 |
jsp:attribute | 定义动态创建的XML元素的属性 |
jsp:body | 定义动态创建的XML元素的主体 |
jsp:text | 用于封装模板数据 |