jsp 之 内置对象(9个)

来源:互联网 发布:mac卸载海马玩模拟器 编辑:程序博客网 时间:2024/05/14 06:53

名称

类型 

application

javax.servlet.ServletContext

config

javax.servlet.ServletConfig

out

javax.servlet.jsp.JspWriter

page

java.lang.Object

pageContext

javax.servlet.jsp.PageContext

request

javax.servlet.http.HttpServletRequst

response

javax.servlet.http.HttpServletResponse

session

javax.servlet.http.HttpSession

exception

java.lang.Throwable

详细解释:

1.out  常用方法:

void clear() //清除缓冲区的内容
void clearBuffer() //清除缓冲区的当前内容 
void flush() //清空流 
int getBufferSize() //返回缓冲区以字节数的大小,如不设缓冲区则为0 
int getRemaining() //返回缓冲区还剩余多少可用 
boolean isAutoFlush() //返回缓冲区满时,是自动清空还是抛出异常 
void close() //关闭输出流

举列子:(out和response的区别)

因为 out.write() 和<%= %> 和 response.getWriter().write() 都能实现输出的作用

举列:

<%@ page contentType="text/html;charset=UTF-8" %><html><head>    <title>Out和其他的方法</title></head><body>然后我是第二个输出<%    out.write("我是第三");    response.getWriter().write("我先输出");     //只有他是最有先输出(使用了response缓冲区)    // 其他依次输出(相当于使用同一个out的缓冲区)%><%="我第四"%></body></html>
输出:


原理:


Tomcat先从response缓冲区获取内容 然后 再从out缓冲区获取内容(默认8kb)

也可以进行设置关闭掉out缓冲区

<%@ page contentType="text/html;charset=UTF-8" buffer="none" %>
或者

<%@ page contentType="text/html;charset=UTF-8" buffer="0kb" %>

然后out缓冲区就没有了 只能全部存储到response缓冲区了

代码:

<%@ page contentType="text/html;charset=UTF-8" %><%@ page contentType="text/html;charset=UTF-8" buffer="none" %><html><head>    <title>Out和其他的方法</title></head><body>然后我是第二个输出<%    out.write("我是第三 ");    response.getWriter().write(" 我先输出");    //只有他是最有先输出(使用了response缓冲区)    // 其他依次输出(相当于使用同一个out的缓冲区)%><%="我第四"%></body></html>

运行结果:


原理图:


因为out缓冲区关闭了,或者是空间不够了,只能把数据存入response缓冲区了


2.pageContext   jsp上下文对象,

常用方法:

 //默认是page域下的:

 setAttribute(String name,Object obj) //设置属性的属性值

 getAttribute(String name) //返回给定名的属性值

 removeAttribute(String name) //删除属性及其属性值


 //pageContext  还可以向指定域获取数据
 setAttribute(String name,Object obj,int scope) //设置某个域下的属性的属性值

 getAttribute(String name,int scope)//返回某个域下的定名的属性值

 removeAttribute(String name,int scope) //删除某个域下的属性及其属性值

 findAttribute(String name) //以此从小到大范围搜索

 分别获取page域 request域 session域 application域


 //还能获取剩余的8大隐式对象

 getException //方法返回exception隐式对象
 getPage //方法返回page隐式对象
 getRequest //方法返回request隐式对象
 getResponse //方法返回response隐式对象
 getServletConfig //方法返回config隐式对象
 getServletContext //方法返回application隐式对象
 getSession //方法返回session隐式对象
 getOut //方法返回out隐式对象


举例代码:

<%@ page contentType="text/html;charset=UTF-8" %><html><head>    <title>pageContext方法</title></head><body><%    //PageContext.PAGE_SCOPE = 1    //PageContext.REQUEST_SCOPE  = 2    //PageContext.SESSION_SCOPE = 3    //PageContext.APPLICATION_SCOPE = 4    //不写后面的域 分别使用 page域(1) request域(2)  session域(3) application域(4)    pageContext.setAttribute("aaa","不废话快上车1111");//这 PAGE_SCOPE 域下的    request.setAttribute("aaa","不废话快上车2222"); //这 REQUEST_SCOPE 域下的    session.setAttribute("aaa","不废话快上车3333"); //这 SESSION_SCOPE 域下的    application.setAttribute("aaa","不废话快上车4444"); //这 APPLICATION_SCOPE 域下的    //写后面的域 全用pageContext.setAttribute(string name,Object obj,int scope)    pageContext.setAttribute("bbb","PAGE_SCOPE(1)",1); //默认不写 PAGE_SCOPE 域下的    pageContext.setAttribute("bbb","REQUEST_SCOPE(2)",2);    pageContext.setAttribute("bbb","SESSION_SCOPE(3)",3);    pageContext.setAttribute("bbb","APPLICATION_SCOPE(4)",4);%><%=pageContext.getAttribute("aaa",PageContext.PAGE_SCOPE)%><br /><%=pageContext.getAttribute("aaa",PageContext.REQUEST_SCOPE)%><br /><%=pageContext.getAttribute("aaa",PageContext.REQUEST_SCOPE)%><br /><%=pageContext.getAttribute("aaa",PageContext.APPLICATION_SCOPE)%><br /><br /><%=pageContext.getAttribute("bbb")%><br /><%=request.getAttribute("bbb")%><br /><%=session.getAttribute("bbb")%><br /><%=application.getAttribute("bbb")%><br /><br /><%--findAttribute会从最小到大范围搜索--%><%=pageContext.findAttribute("aaa")%><br /><% pageContext.removeAttribute("aaa",1);%><%=pageContext.findAttribute("aaa")%><br /><% pageContext.removeAttribute("aaa",2);%><%=pageContext.findAttribute("aaa")%><br /><% pageContext.removeAttribute("aaa",3);%><%=pageContext.findAttribute("aaa")%><br /><% pageContext.removeAttribute("aaa",4);%><%--pageContext能获取其他8个隐式对象 (一般写框架常用)--%><%    pageContext.getRequest();//request    pageContext.getOut();//out    pageContext.getResponse();//response    pageContext.getSession();//session    pageContext.getPage();//page    pageContext.getErrorData();//exception    pageContext.getServletConfig();//config    pageContext.getServletContext();//application%></body></html>

 

运行结果:


3.session 

常用方法:

 void setAttribute(Sting name, Object value) //设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。 
 Object getAttribute(String name) //在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。 
 void removeAttribute(String name) //删除指定名字的session属性,若该属性不存在,则出现异常。 
 void invalidate() //使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。 
 int getMaxInActiveInterval()// 获取会话的最大持续时间。
 int getId() //获取会话的id 可以进行一些操作进行持久化
代码:

<%@ page import="java.util.Enumeration" %><%@ page contentType="text/html;charset=UTF-8" %><html><head>    <title>session方法</title></head><body><%    //简单设置一个session    session.setAttribute("name","不废话快上车");%><%--输出一个session--%><%=session.getAttribute("name")%><%    //移除一个session    session.removeAttribute("name");%><br /><%    session.setAttribute("aaa","AAA");    session.setAttribute("bbb","BBB");    session.setAttribute("ccc","CCC");    //批量输出    Enumeration<String> sessions = session.getAttributeNames();    while (sessions.hasMoreElements())    {        String name = sessions.nextElement();        Object obj= session.getAttribute(name);        out.write(name+":"+obj.toString()+"<br />");    }%><%--session持久化--%><%    String id = session.getId();    Cookie cookie=new Cookie("JSESSIONID",id);    cookie.setMaxAge(60*60*1000); //一小时    response.addCookie(cookie);%><%--摧毁session--%><%    //手动摧毁session    session.invalidate();%></body></html>

4.request

常用方法:

 object getAttribute(String name) //返回指定属性的属性值 
 Enumeration getAttributeNames() //返回所有可用属性名的枚举 
 String getCharacterEncoding() //返回字符编码方式 
 int getContentLength() //返回请求体的长度(以字节数)
 String getContentType() //得到请求体的MIME类型 
 ServletInputStream getInputStream() //得到请求体中一行的二进制流 
 String getParameter(String name) //返回name指定参数的参数值 
 Enumeration getParameterNames() //返回可用参数名的枚举 
 String[] getParameterValues(String name) //返回包含参数name的所有值的数组如checkbox这种多选框可用此方法 
 String getProtocol() //返回请求用的协议类型及版本号 
 String getScheme() //返回请求用的计划名,如:http.https及ftp等 
 String getServerName() //返回接受请求的服务器主机名 
 int getServerPort() //返回服务器接受此请求所用的端口号 
 BufferedReader getReader() //返回解码过了的请求体 
 String getRemoteAddr() //返回发送此请求的客户端IP地址 
 String getRemoteHost() //返回发送此请求的客户端主机名 
 void setAttribute(String key,Object obj) //设置属性的属性值 
 String getRealPath(String path) //返回一虚拟路径的真实路径 
 void setCharacterEncoding(String code) //用于设置传递的字符编码,可用于解决乱码问题

  具体可以查看:http://blog.csdn.net/qq_35146878/article/details/78700946

5.response

常用方法:

 String getCharacterEncoding() //返回响应用的是何种字符编码 
 ServletOutputStream getOutputStream() //返回响应的一个二进制输出流 
 PrintWriter getWriter() //返回可以向客户端输出字符的一个对象 
 void setContentLength(int len) //设置响应头长度 
 void setContentType(String type) //设置响应的MIME类型 
 sendRedirect(java.lang.String location) //重新定向客户端的请求

  具体查看:http://blog.csdn.net/qq_35146878/article/details/78681167

6.page

 page就是指向的当前jsp本身

7.application

 ObjectgetAttribute(Stringname) //返回给定名的属性值
 void setAttribute(String name,Object obj) //设定属性的属性值
 void removeAttribute(String name) //删除一属性及其属性值
 String getRealPath(String path) //返回一虚拟路径的真实路径
 URL getResource(String path) //返回指定资源(文件及目录)的URL路径
 RequestDispatcher getRequestDispatcher(String uripath) //返回指定资源的RequestDispatche

 具体查看:http://blog.csdn.net/qq_35146878/article/details/78668129

8.exception

  必须要把isErrorPage设定为true。

  常用方法

  String getMessage() // 返回错误信息

原创粉丝点击