jsp九个内置对象及4个作用域:
NO. | 内置对象 | 类型 | 对象类型 | 作用域 | 描述 |
---|---|---|---|---|---|
1 | pageContext | javax.servlet.jsp.PageContext | 页面上下文对象 | Page | JSP的页面容器 |
2 | request | javax.servlet.ServletRequest | 请求对象 | Request | 得到用户的请求信息 |
3 | response | javax.servlet.SrvletResponse | 响应对象 | Page | 服务器向客户端的回应信息 |
4 | session | javax.servlet.http.HttpSession | 会话对象 | Session | 用来保存每一个用户的信息 |
5 | application | javax.servlet.ServletContext | 应用程序对象 | Application | 表示所有用户的共享信息 |
6 | config | javax.servlet.ServletConfig | 配置对象 | Page | 服务器配置,可以取得初始化参数 |
7 | out | javax.servlet.jsp.JspWriter | 输出对象 | Page | 页面输出 |
8 | page | javax.lang.Object | 页面对象 | Page | 表示从页面中表示出来的一个servlet实例 |
9 | exception | javax.lang.Throwable | 例外对象 | Page | 表示JSP页面所发生的异常,在错误页中才起作用 |
注(作用域):
page:只在一个页面中保存属性,跳转之后无效。
request:只在一次请求中保存属性,服务器跳转后依然有效。
session:再一次会话范围中保存,无论何种跳转都可以使用,但是新开浏览器无法使用。
application:在整个服务器上保存,所有用户都可以使用。
属性操作方法:
NO. | 方法 | 类型 | 描述 |
1 | public void setAttribute(String name,Object o) | 普通 | 设置属性的名称及内容 |
2 | public void getAttribute(String name) | 普通 | 根据属性名称取得属性内容 |
3 | public void removeAttribute(String name) | 普通 | 删除指定的属性 |
request对象:
NO. | 方法 | 类型 | 描述 |
1 | public String getParameter(String name) | 普通 | 接收客户端发来的请求参数内容 |
2 | public String[] getParameterValues(String name) | 普通 | 取得客户端发来的一组请求参数内容 |
3 | pubic Enumeration getParameterNames() | 普通 | 取得全部请求参数的名称 |
4 | public String getRemoteAddr() | 普通 | 得到客户端的IP地址 |
5 | void setCharacterEncoding(String env) throws UnsupporedEncodingException | 普通 | 设置统一的请求编码 |
6 | public boolean isUserInRole(String role) | 普通 | 进行用户身份验证 |
7 | public Httpsession getSession() | 普通 | 取得当前的session对象 |
8 | public StringBuffer getRequestURL() | 普通 | 返回正在请求的路径 |
9 | public Enumeration getHeaderNames() | 普通 | 取得全部请求的头信息的名称 |
10 | public String getHeader(String name) | 普通 | 根据名称取得头信息的内容 |
11 | public String getMethod() | 普通 | 取得用户的提交方式 |
12 | public String getServletPath() | 普通 | 取得访问的路径 |
13 | public String getContextPath() | 普通 | 取得上下文资源路径 |
response对象:
NO. | 方法 | 类型 | 描述 |
1 | public void addCookie(Cookie cookie) | 普通 | 向客户端增加Cookie |
2 | public void setHeader(String name,String value) | 普通 | 设置回应的头信息 |
3 | public void sendRedirect(String location)throws IOException | 普通 | 页面跳转 |
HTML跳转头信息操作(三秒后跳转页面)
<meta http-equiv="refresh" content="3;url=hello.html">
<jsp:forward>服务器端跳转
地址栏信息不变,跳转页面时后面的部分不会执行
response.sendRedirect()客户端跳转
地址栏信息改变,跳转页面时后面的部分会执行
操作Cookie:
使用Cookie保存信息可以减少客户端的部分操作。
记住密码功能的实现,这时如果没有及时地清理掉使用的账户,就有可能出现安全隐患,这一点在进行项目开发时必须有所考虑。
Cookie定义的常用方法:
NO. | 方法 | 类型 | 描述 |
1 | public Cookie(String name,String value) | 构造 | 实例化Cookie对象,同时设置名称和内容 |
2 | public String getName() | 普通 | 取得Cookie的名称 |
3 | public String getValue() | 普通 | 取得Cookie的内容 |
4 | public void setMaxAge(int expiry) | 普通 | 设置Cookie的保存时间,以秒为单位 |
设置Cookie
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public void addCookie(Cookie cookie) | 普通 | 向客户端设置Cookie |
取得Cookie
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public Cookie[] getCookies() | 普通 | 取得客户端设置的全部Cookie |
要想Cookie保存在客户端上,需要为Cookie设置保存时间
Cookie c = new Cookie("co","cookie"); //定义新的Cookie对象
c.setMaxAge(60); //Cookie保存60秒
response.addCookie(c); //向客户端增加Cookie
session对象
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public String getId() | 普通 | 取得Session Id |
2 | public long getCreation Time() | 普通 | 取得session的创建时间 |
3 | public long getLastAccessedTime() | 普通 | 取得session的最后一次操作时间 |
4 | public boolean isNew() | 普通 | 判断是否是新的session(新用户) |
5 | public void invalidate() | 普通 | 让session失效 |
6 | public Enumeration getAttributeNames() | 普通 | 得到全部属性的名称 |
实例:
<%@page contentType="text/html;charset=GBK"%>
<%
long start = session.getCreationTime(); //取得创建时间
long end = session.getLastAccessedTime(); //取得最后一次操作时间
long time = (end-start)/1000; //得出操作的秒
%>
<h3>您已经停留了<%=time%>秒!</h3>
application对象
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | String getRealPath(String path) | 普通 | 得到虚拟目录对应的绝对路径 |
2 | public Enumeration getAttributeNames() | 普通 | 得到所有属性的名称 |
3 | public String getContextPath() | 普通 | 取得当前的虚拟路径名称 |
this.getServletContext()方法与application对象功能是一样的,尽量更多使用this.getServletContext()方法完成操作。
web安全性及config对象
WEB-INF的安全性是最高的。
在javaEE的标准中,Web目录中的WEB-INF是必须存在的,而且此文件夹的安全性是最高的,在各个程序的开发中,基本上都将一些配置信息保存在此文件夹中。
在定义WEB-INF目录时一定要注意大小写的问题,这里的字母必须都是大写。
config对象
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public String getInitParameter(String name) | 普通 | 取得指定名称的初始化参数内容 |
2 | public Enumeration getInitParameterNames() | 普通 | 取得全部的初始化参数名称 |
out对象
out对象是javax.servlet.jsp.JspWriter类的实例化对象,主要功能就是完成页面的输出操作,使用println()或print()方法输出信息。但是从实际开发来看,直接使用out对象的几率很小,一般使用表达式完成输出的操作。
out对象的其他操作
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public int getBufferSize() | 普通 | 返回JSP中缓冲区的大小 |
2 | public int getRemaining() | 普通 | 返回JSP中未使用的缓冲区大小 |
pageContext对象
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public abstract void forward(String relativeUrlPath) throwsServletException,IOException | 普通 | 页面跳转 |
2 | public void include(String relativeUrlPath) throws ServletException,IOException | 普通 | 页面包含 |
3 | public ServletConfig getServletConfig() | 普通 | 取得ServletConfig对象 |
4 | public ServletContext getServletContext() | 普通 | 取得ServletContext 对象 |
5 | public ServletRequest getRequest() | 普通 | 取得ServletRequest 对象 |
6 | public ServletResponse getResponse() | 普通 | 取得ServletResponse 对象 |
7 | public HttpSession getSession() | 普通 | 取得HttpSession 对象 |
pageContext对象中的getRequest()和getResponst()连个方法返回的是ServletRequest和ServletResponse,而常用的request和response分别是HttpServletRequest和HttpServletResponse接口的实例。