jsp
java Server Page
jsp本质就是servlet
jsp脚本
- <%java代码%>
定义局部变量,定义语句
被翻译到service方法内部 - <%=java变量 或表达式%>
表达式输出,向页面输出内容
相当于 out.print(“内容”) 会被翻译成service方法内部 - <%!java代码%>
定义常量
会被翻译成service的out.print(“内容”)
jsp注释
jsp | 可见范围 |
---|---|
<!–html注释–> | jsp源码 servlet html页面 |
//单行注释 | jsp源码 servlet |
/*多行注释*/ | jsp源码 servlet |
<%jsp注释%> | jsp源码 |
jsp指令
指导jsp翻译和运行的命令
jsp包括三大指令:
page —属性
属性最多的指令
根据不同的属性
指导整个页面的特性
1 | <%@page 属性一:"属性值一" 属性二:"属性值二" 属性三:"属性值三"%> |
- language
jsp脚本可以嵌入的语言种类 - contentType(MIME类型)
response.setContentType(“text/html”;charset=UTF-8) - charset
编码格式 - pageEncoding
jsp文件的编码 - import
导入java包 - session
是否jsp在翻译时自动创建session - errorPage
当前页面错误跳转 - iserrorPage
true/false 处理错误的页面
include指令 (静态包含)
页面包含指令可以将一个jsp页面包含到另一个jsp页面中
格式: <%@include file="被包含的文件地址"%>
taglib指令
在jsp页面引入标签库(jstl标签库,struts2标签库)
<%@ taglib uri=” “ prefix = “c” %>
prefix表示前缀
jsp内置对象 (9个)
编号 | 对象 | 类型 | 描述 |
---|---|---|---|
1 | pageContext | Javax.servlet.jsp.PageContext | Jsp的页面容器 |
2 | request | Javax.servlet.http.HttpServletRequest | 表示请求信息,可以通过此对象获取请求信息 |
3 | response | Javax.servlet.http.HttpServletResponse | 表示服务器端对客户端请求的响应 |
4 | session | Javax.servlet.http.HttpSession | 用来保存每一个用户的信息,相当于每一次浏览器访问服务器会话的信息 |
5 | application | Javax.servlet.ServletContext | 表示的是服务器的上下文 整个web应用,所有用户的共享信息 |
6 | config | Javax.servlet.ServletConfig | 项目配置,可以通过此对象获取配置的初始化参数 |
7 | out | Javax.servlet.jsp.JspWriter | 表示的是向页面的输出,out缓冲区默认为 8kb 可以设置成 0,代表关闭out缓冲区 内容直接输出 |
8 | exception | Java.lang.Throwable | 表示jsp发生异常的时候,所有的异常的信息,一般之后再将异常输出到页面的时候才用的上 |
9 | page | Java.lang.Object | 表示的是该页面的Servlet实例 当前jsp页面范围 |
属性范围
属性范围,又称为会话跟踪技术,又称为域对象,在一个页面设置了属性,跳转到另外页面是否还能够取得之前页面设置的属性的问题。属性范围总共有四种:
域 | 名称 | 作用域范围 | 描述 |
---|---|---|---|
page | page域 | 当前页面 | 当前页面可用跳转到其他页面,获取不到之前页面设置的page域对象,使用pageContext对象进行设置和获取域对象 |
request | 请求域 | 一次请求当前页面,转发到其他的页面 | 表示在一个页面设置了属性之后,当前页面可以获取到设置的属性,转发到其他的页面,也可以获取到之前页面设置的请求域中的内容,但是重定向之后获取不到,使用的是request对象进行设置或获取域对象的。 |
session | 会话域 | 当前页面,转发,重定向,一次会话 | 表示在一个页面设置了属性之后,当前页面可以获取,转发或者重定向到其他页面,也可以获取到之前页面设置的session域中的内容,但是如果浏览器重启或者不是同一个浏览器,那么session域内容获取无效。 |
application | application域 | 全局,整个web应用 | 使用application设置的域对象内容,只要服务器不重启,在任何页面都可以后去的到,这种的域对象设置在服务器上面,使用application对象设置和获取域对象内容。 |
pageContext域对象
pageContext对象是用来设置、获取和移除page域对象信息的,但是在pageContext中还有另外的三个方法可以操作域对象信息:
public abstract void removeAttribute(String name, int scope)
表示根据域对象名称和范围移除指定的域对象的信息,可以删除四种域对象的任意一种域对象信息
public abstract Object getAttribute(String name, int scope)
表示根据域对象名称和范围获取指定的域对象的信息,可以获取四种域对象的任意一种域对象信息
public abstract void setAttribute(String name, Object value, int scope)
表示设置域对象信息,可以设置四种范围域对象信息的任意的一种。
- 注意
以上的三个方法可以传递的参数都是整形的,在PageContex类中已有定义:
- public static final int APPLICATION_SCOPE : application范围
- public static final int PAGE_SCOPE:page范围
- public static final int REQUEST_SCOPE:request范围
- public static final int SESSION_SCOPE:session范围
操作方法
public abstract Object getAttribute(String name) 通过属性名称获取属性值
public abstract void setAttribute(String name, Object value) 设置属性名称和对应的属性值
public abstract void removeAttribute(String name) 通过属性名称移除属性
jsp标签 动作
页面包含
动态包含 <jsp:include page="被包含的页面"/> 形成两个class文件
请求转发:
<jsp:forword page ="要转发的资源"/>
静态包含和动态包含的区别
名字 | 指令 | 编译 |
---|---|---|
静态包含: | <%@ include file =” “ %> | 编译成一个class文件 |
动态包含: | <jsp:include page=” “> | 编译成两个class文件 |