1.jsp的介绍
jsp(java server pages)技术是在HTML中嵌入java代码。jsp的本质就是servlet,jsp在第一次访问的时候会被翻译成servlet,然后再编译运行。
2.jsp脚本和注释形式
如何在jsp文件中嵌入java代码:
<% java代码 %> //内部的java代码会被翻译到service方法的内部
<%=变量或表达式%> //会被翻译成service方法内部的out.print()
<%! java代码 %> //会被翻译成servlet的成员的内容
<%! java代码 %>通过该方式写脚本,在编译成servlet的时候会被编译成成员变量。
jsp的注释:
<!--html注释内容-->
//java注释内容(单行注释)
/*
java注释内容(多行注释)
*/
/*
*
java文档注释
*/
<%--jsp注释内容--%>
在jsp中使用不同的注释,代表着该注释代码的可见范围不同:html注释的可见范围是jsp源码、翻译后的servlet代码、页面显示html代码;java注释可见范围是jsp源码、翻译后的servlet代码;jsp注释可见范围是jsp源码。
3.jsp的指令
page指令
属性:language、pageEncoding(当前jsp文件的编码形式)、contentType、import(导入包)、session(在翻译时是否创建session)、extends(在翻译时是否继承特定类)、errorPage(当页面出错跳转到该页面)、iserrorPage(当前是否为错误页面)
include指令
页面包含指令<%@ include file="被包含的jsp的地址"%>
taglib指令
在jsp页面中引入标签库 <%@ taglib uri="标签库地址" prefix="前缀"%>
可能会用的标签库:jstl标签库,structs2标签库
4.jsp的9个内置/隐式对象
out 向客户端输出内容(用于页面输出),out缓冲区默认8kb,buffer设置为0代表关闭out缓冲区,直接添加到response缓冲区
request 得到用户请求信息
response 服务器向客户端的回应信息
pageContext 是一个域对象,作用范围当前页面,可以向指定的其他域中存储内容
(pageContext.setAttribute("name","xxx",PageContext.REQUEST_SCOPE))
pageContext.findAttribute("name") 从所有域中从小到大搜索域中的name
可以获得其他8个隐式对象:pageContext.getSession() 依此类推
域的排名:page域(pageContext)<request域<session域<application域
session 用来保存用户的信息,也是域对象
application 存储所有用户的共享信息,也是一个域对象,类型属于ServletContext
config 可以取得初始化参数
page 指当前页面转换后的Servlet类的实例
exception 表示JSP页面所发生的异常,在错误页中才起作用
5.jsp标签(动作)
//动态包含
<jsp:include page="路径"> </jsp:include>
动态包含和静态包含的区别:静态包含(<%@ include file="被包含的jsp的地址"%>)是将两个页面的代码先拼凑到一起,然后再进行翻译;动态包含(<jsp:include page="路径"> </jsp:include>)是将两个页面先翻译,然后再通过一个方法拼凑到一起。
//请求转发
<jsp:forward page="要转发的资源"></jsp:forward>