JSP技术
1.jsp脚本和注释
jsp脚本:
<%Java代码%>
<%!Java代码%>
<%=表达式%>
jsp注释:
<!---html注释--->
<%---jsp注释---%>
//单行注释 /*多行注释*/
2.jsp运行原理(jsp本质就是servlet)
jsp在第一次被访问时会被Web容器翻译成servlet再执行
过程:第一次访问jsp页面------>helloServlet.jsp------>helloServlet_jsp.java------>编译运行
被翻译的servlet保存在tomcat服务器目录work中
3.jsp指令
jsp指令包括三个:page、include、taglib
1)page指令:
page指令是实际开发当中的默认指令
格式是<%@page 属性1=“属性值1” 属性2=“属性值2” ······%>
page的属性有:
language:jsp脚本中可以嵌入的语言种类
<%@page language="java"%><%---表示页面中可使用java语言---%>
pageEncoding:当前jsp文件本身编码---内部可包含contextType
contextType:response.setContextType("text/heml;UTF-8");表示服务器响应客户端文本的编码
session:是否在jsp翻译时自动创建session
import:导入java的包
errorPage:当前页面出错后跳转到那个页面 errorPage="错误文件的路径!"
isErrorPage:当前页面是一个处理错误的页面
2)include指令
页面包含(静态包含)指令,可以将一个jsp指令包含到另外一个jsp页面中 格式:
<%@include file="被包含的文件的地址"%>
这里对比一下动态包含 格式:
<%jsp:include page="被包含的地址"%>
3)taglib指令
在jsp页面中引入标签库(jstl\strtus2标签库)
格式:
<%@taglib uri="标签库地址" prefix="前缀"%> <%---此处前缀可为任意一个字母---%>
4.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 |
表示JSP页面所发生的异常,在错误页中才起作用 |
重点:
1)out对象
out的类型:JspWriter
out的作用就是向客户端输出内容------out.write("要输入的内容");
out缓冲区默认8kb,可以设置成0,设置为0就是关闭out缓冲区,那么写到out缓冲区中的内容就会跳过out缓冲区直接写入 response缓冲区。
2)pageContext对象
jsp上下文对象,page对象与pageContext对象不通
pageContext对象是一个域对象,可以有以下格式:
pageContext.setAttribute(String name,Object obj);
pageContext.getAttribute(String name);
pageContext.removeAttribute(String name);
pageContext对象还可以向其他域中存取数据:
pageContext.setAttribute(String name,OBJ obj,int scope); //scope就是想要存的某个域
pageContext.getAttribute(String name,int scope);
pageContext.removeAttribute(String name,int scope);
findAttribute(String name);/*从所有域中查找 顺序是pageContext---request---session---application(servletContext),找到就不继续查找*/
这里四个域分别是:pageContext域,作用于当前jsp页面范围;request域,作用于一次请求;session域,作用于一次会 话;application域作用于整个WEB项目。
pageContext对象可以获取其他八大隐式对象
pageContext.getRequest();
pageContext.getSession();
5.jsp标签(动作)
1)页面包含(动态包含);<jsp:include page="被包含文件的路径">
2)请求转发:<jsp:forward page="要转发的资源路径">