jsp内置对象

来源:互联网 发布:数据标准管理需求 编辑:程序博客网 时间:2024/05/21 19:29

jsp内置对象

共9个内置对象,web容器会为用户准备好内置对象

内置对象 类型 描述 pageContext javax.servlet.jsp.PageContext jsp的页面容器 request javax.servlet.HttpServletRequest 得到用户的请求信息 response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息 session javax.servlet.http.HttpSession 用来保存每一个用户的信息 application javax.servlet.ServletContext 表示所有用户的共享信息 config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数 out javax.servlet.jsp.JspWriter 页面输出 page java.lang.Object 表示从该页面中表示出来的一个Servlet实例 exception java.lang.Throwable 表示JSP页面所发生的异常,在错误页中才起作用

一.四种属性范围

pageContext:只在一个页面中保存属性,跳转之后无效
request:只在一次请求中保存,服务器跳转后依然有效
session:在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用
application:在整个服务器上保存,所有用户都可以使用

四种属性的操作方法

方法 类型 描述 public void setAttribute(String name,Object o) 普通 设置属性的名称及内容 public Object getAttribute(String name) 普通 根据属性名称取得属性 public void removeAttribute(String name) 普通 删除指定的属性

pageContext中还有一种属性设置方法:
public void setAttribute(String name,Object value,int scope)
scope取不同的值对应不同的属性范围:
public static final int PAGE_SCOPE
public static final int REQUEST_SCOPE
public static final int SESSION_SCOPE
public static final int APPLICATION_SCOPE
同时有getAttribute(String name,int scope),removeAttribute(String name,int scope)

二.request对象

(1)、用来接受客户端发送而来的请求信息

对应接口:public interface HttpServletRequest extends ServletRequset

<%request.setCharacterEncoding("GBK");//设置编码String a=request.getParameter("属性名称");//接受传递的属性内容String b[] =request.getParameterValues("属性名称");//接受传递的一组属性内容,输出时需要判断b是否为空Enumeration enu=request.getParameterNames();//需要import java.util.*,用于接受属性名称,一般是在表单不确定的时候使用while(enu.hasMoreElements()){    String c=(String)enu.nextElement();    out.print(c);//输出属性名称    out.pirntln(request.getParameter(c));//输出属性内容}%>

(2)、显示头信息

<%Enumeration enu=request.getHeaderNames();//取得全部头信息while(enu.hasMoreElements()){    String headername=(String)enu.nextElement();    String headervalue=request.getHeader(headername);    out.print(headername);    out.println(headervalue);//输出头信息内容}%>

(3)、其他

String method=request.getMothod();//请求方式String ip=request.getRemoteAddr();//IP地址String path=request.getServletPath();//访问路径String contextPath=request.getContextPath();//上下文名称

三.response对象

(1)、用于服务器对客户端的回应

对应接口:public interface HttpServletResponse extends ServletResponse

(2)、response对象的常用方法

方法 类型 描述 public void addCookie(Cookie cookie) 普通 向客户端增加Cookie public void setHeader(String name,String value) 普通 设置回应的头信息 public void sendRedirect(String location)throws IOException 普通 页面跳转

(3)、设置头信息

<%response.setHeader("refresh","时间");//设置页面每隔一定时间刷新response.setHeader("refresh","时间;URL=要跳转的页面");//隔一定时间后跳转%>

(4)、页面跳转

<%response.sendRedirect("要跳转的页面");%>

(5)、操作Cookie

Cookie定义的常用方法

方法 类型 描述 public Cookie(String name,String value) 构造 实例化Cookie对象,同时设置名字和内容 public String getName() 普通 取得Cookie的名字 public String getValue() 普通 取得Cookie的内容 public void setMaxAge(int expiry) 普通 设置Cookie的保存时间,以秒为单位
<%Cookie c=new Cookie("属性名称","属性内容");//设置Cookie信息response.addCookie(c);//添加Cookiec.setMaxAge(1000);//设置Cookie的保存时间。若未设置Cookie保存时间,默认是在一个浏览器上保存的,关闭浏览器则Cookie消失Cookie cs[]=request.getCookies();//取得客户端的全部Cookiefor(int i=0;x<c.length;x++){    out.print(cs[i].getName());//输出Cookie名称    out.println(cs[i].getValue());//输出Cookie内容}%>

四.session对象

是javax.servlet.http.HttpSession接口的实例

(1).HttpSession接口的主要方法

方法 类型 描述 public String getId() 普通 取得session ID public long getCreationTime() 普通 取得session的创建时间 public long getLastAccessedTime() 普通 取得session的最后一次操作时间 public boolean isNew() 普通 判断是否是新的session public void invalidate() 普通 让session失效 public Enumeration getAttributeName() 普通 得到全部属性的名称

五、application对象

是javax.servlet.ServletContext接口的实例,表示整个Servlet的上下文
方法|类型|描述
String getRealPath(String path)|普通|得到虚拟目录对应的绝对路径
public Enumeration getAttributeName()|普通|得到所有属性的名称
public String getContextPath()|普通|取得当前的虚拟路径名称

(1).取得绝对路径

String path=application.getRealPath("/");//与this.getServletContext().getRealPath("/");效果相同
request.setCharacterEncoding("GBK");String name=request.getParameter("filename");String content=request.getParameter("filecontent");String filename=this.getServletContext().getRealPath("/")+"note"+File.separator+name;//保存在note文件夹中File file=new File(filename);if(!file.getParentFile().exists()){    file.getParentFile().mkdir();//建立一个文件夹}PrintStream ps=null;ps=new PrintStream(new FileOutputStream(file));ps.println(content);ps.close();Scanner scan=new Scanner(new FileInputStream(file));//读文件scan.useDelimiter("\n");StringBuffer buf=new StringBuffer();while(scan.hasNext()){    buf.append(scan.next()).append("<br>");}scan.close();out.print(buf);

(2).取得全部属性

Enumeration enu=this.getServletContext().getAttributeName();while(enu.hasMoreElements()){    String name=(String)enu.nextElement();    String content=this.getServletContext().getAttribute(name);}
0 0