Jsp的九大内置对象

1:什么是内置对象?

    JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象

2:九大内置对象有哪些?

    常用的有:out对象,request对象,response对象,application对象,session对象

    不常用的有:Page对象,pageContext对象,exception对象,Config对象

3:out对象

    首先要知道缓冲区是什么:缓冲区就是内存的一块区域用来保存临时数据。

    那么out对象是什么呢?out对象是JspWriter类的实例,是向客户端输出内容常用的对象

    常用方法:

        1):void println():向客户端打印字符串

        2):void clear():清除缓冲区的内容,如果在flush之后调用会抛出异常

        3):void clearBuffer():清除缓冲区的内容,在flush之后调用不会抛出异常

        4):void flush():将缓冲区内容输出到客户端

        5):int getBufferSize():返回缓冲区以字节数的大小,如不设缓冲区则为0

        6):int getRemaining():返回缓冲区还剩余多少可用

        7):boolean isAutoFlush():返回缓冲区满时,是自动清空还是返回异常

        8):void close() 关闭输出流

 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>out内置对象</h1>
	<%
		out.println("hello");
		out.flush();
		//out.clear();//会抛出异常
		out.clearBuffer();//不会抛出异常
		out.println("world");
	%>
缓冲区大小:<%= out.getBufferSize() %>byte<br>
缓冲区剩余大小:<%= out.getRemaining() %>byte<br>
是否自动清空缓冲区:<%=out.isAutoFlush() %>
</body>
</html>

4:request对象

    学习request对象之前要分清楚表单提交的方式get和post的区别:

        get:以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2KB。安全性较低但效率比post要好。适合提交数据量不大,安全性不高的数据。比如:搜索,查询等功能

        post:将用户提交的信息封装在HTML HEADER内,适合提交数据量大,安全性高的用户信息。比如:注册,修改,上传等功能

    客户端的请求消息被封装在request对象中,通过它才能了解到客户的需求,然后做出相应。它是HttpServletRequest类的实例。request独享具有请求域,即完成客户端的请求之前,该对象一直有效

    常用的方法:

        1):String getParameter(String name):返name指定函数的参数值

        2):String[] getParameterValues(String name):返回包含参数name的所有值的数组

        3):void setAttribute(String,Object):存储此请求中的属性

        4):Object getAttribute(String name):返回指定属性的属性值

        5):String getContentType():得到请求题的MIME类型

        6):String getProtocol():返回请求用的协议类型及版本号

        7):String getServerName():返回接受请求的服务器主机名     

register.jsp页面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>注册界面</h1>
	<form action="request.jsp" method="post">
		<table>
			<tr>
				<td>用户名:</td>
				<td><input type="text" name="usernmae"></td>
			</tr>
			<tr>
				<td>兴趣爱好:</td>
				<td>
					<input type="checkbox" name="hobby" value="read">读书
					<input type="checkbox" name="hobby" value="tv">看电视
					<input type="checkbox" name="hobby" value="internet">上网
					<input type="checkbox" name="hobby" value="music">音乐
				</td>
			</tr>
			<tr><td colspan="2"><input type="submit" value="提交"></td></tr>
		</table>
	</form>
	<br>
	<br>
	
	<a href=request.jsp?username=zhangsan>测试URL传参</a>
</body>
</html>
request.jsp页面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>request内置对象的使用</h1>
	<% request.setCharacterEncoding("utf-8");//可以用来解决中文乱码的问题,但是对于URL传参不适用
		request.setAttribute("password", "123456");
    %>
	用户名:<%= request.getParameter("username") %>
	爱好:
	<%
		if(request.getParameterValues("hobby")!=null){
			String[] Params=request.getParameterValues("hobby");
			for(String Param:Params){
				out.println(Param);
			}
		}
	%>
	密码:<%		request.getAttribute("password"); %>
	请求实体的MIME类型:<% request.getContentType(); %><br>
	协议类型及其版本号:<%request.getProtocol(); %><br>
	服务器主机名:<% request.getServerName(); %><br>
	服务器端口号:<%request.getServerPort(); %><br>
	请求文件的长度:<%request.getContentLength(); %>
	请求客户端的ip地址:<%request.getRemoteAddr(); %>
	请求的真实路径:<%request.getRealPath("request.jsp"); %>
	请求的上下文路径:<%request.getContextPath(); %>	
</body>
</html>

    如果要解决URL传递参数的乱码问题,应该在server.xml(conf文件目录下)文件当中修改。添加URIEncoding属性,修改配置文件之后一定要重启服务器才能生效.

        

  5.response对象

    response对象包含了响应客户请求的有关信息,但在jsp中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只对这次访问有效,其他页面的response对象对当前页面无效

    常用方法:

    String getCharacterEncoding():返回响应用的是何种字符编码

    void setContentType(String type)设置响应的MIME类型

    PrintWriter getWriter()返回可以向客户端输出字符的一个对象

    sendRedirect(java.lang.String location)重新定向客户端的请求

    请求转发与请求重定向的区别:

        请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变

        请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变

<% 
	response.setContentType("text/html");//设置相应MIME类型
	out.println("<h1>response内置对象</h1>");
	out.println("<hr>");
	
	PrintWriter outer=response.getWriter();//获得输出流对象
	outer.println("大家好,我是response对象生成的输出流outer对象");//提前与内置的out对象	
	response.sendRedirect("regiser.jsp");//请求重定向
%>

    6.session对象

       session是什么呢?    

            session表示客户端与服务器的一次会话,Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session实际上是一个特定的时间概念

    session对象:

            1): session对象是在第一个jsp页面被装载时自动创建的,完成会话期管理。

            2):从一个客户打开浏览器并连接到服务器开始,到客户端关闭浏览器离开这个服务器结束,被称为一个会话。

            3):当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象

            4):session对象是HttpSession类的实例

    常用方法:

    long getCreationTime()返回session创建的时间    

    public String getId()返回session创建时jsp引擎为它设的唯一ID号

    public Object setAttribute(String name,Object value)使用指定名称将对象绑定到此会话

    public Object getAttribute(String name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null

    String[] getValueNames():返回一个包含此session中所有可用属性的数组

    int getMaxInactiveInterval()返回两次请求间隔多长时间此session被取消       

session1.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>session内置对象</h1>
	<hr>
	<%
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		Date d=new Date(session.getCreationTime());
		session.setAttribute("username", "admin");
		session.setAttribute("password", "123456");
		session.setAttribute("age", 12);
		
		//设置当前session最大生成周期
		session.setMaxInactiveInterval(10);
		
	%>
	创建的时间:<%= sdf.format(d) %>
	session的ID编号:<%= session.getId() %>
	从session中获取用户名:<%= session.getAttribute("username") %>
	<a href="session2.jsp" target="_blank">跳转</a>
</body>
</html>


session测试页面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>session内置对象</h1>
	 session的ID编号:<%= session.getId() %>
	从session中获取用户名:<%= session.getAttribute("username") %>
	session中保存的属性有:<%
		String [] names=session.getValueNames();
		for(int i=0;i<names.length;i++)
		{
			out.println(names[i]+"  ");
		}
	%>
</body>
</html>

    session的生命周期:

        1):创建:当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个SessionID,每次客户端向服务器发送请求时,都会将此SessionID携带过去,服务端会对此SessionId进行校验.

        2):活动:

            a:某次会话当中通过超链接打开的新页面属于同一次会话

            b:只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话

            c:除非本次会话的所有页面都关闭后再重新访问某个jsp或者servlet将会创建新的会话

        3):销毁:session的销毁只有三种方式

            a:调用了session.incalidate()方法

            b:Session过期(超时)

            c:服务器重启

    7:application对象

        application对象实现了用户间数据的共享,可存放全局变量。开始于服务器的启动,终止于服务器的关闭。在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作

    常用方法:

        public void setAttribute(String name,Object value)使用指定名称将 对象绑定到此会话中

        public Object getAttribute(string name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名下,则返回null    

        Enumeration getAttributeNames()返回所有可用属性名的枚举

        String getServerInfo()返回Jsp引擎名及版本号  

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>application对象	</h1>
	<%
		application.setAttribute("username","zhangsan");
		application.setAttribute("age", 11);
		application.setAttribute("email", "546546546@qq.com");
	%>
	用户名为:<%=application.getAttribute("username") %><br>
	年龄为:<%= application.getAttribute("age") %><br>
	邮箱为:<%= application.getAttribute("email") %><br>
	application中的属性有:
		<%
			Enumeration attributes=application.getAttributeNames();
			while(attributes.hasMoreElements()){
				out.println(attributes.nextElement()+"  ");
			}
		%><br>
		JSp引擎的版本号:<%=application.getServerInfo() %>
</body>
</html>

 

    8:page对象

 

        page独享是指当前页面本身,有点像类中的this指针,它是java.lang.Object类的实例,常用方法如下:

            Class getClass():返回此类Object类

            int hashCOde():返回此Object的hash码

            boolean equals(Object obj):判断此Object是否与指定的Object对象相等

            void copy(Object obj):把此Object拷贝到指定的Object对象中

            Object clone():克隆此对象

            String toString():把此Object对象转换成String类的对象

            void notify():唤醒一个等待的线程

            void notifyAll():唤醒所有等待的线程

            void wait(int timeout):使一个线程处于等待直到timeout结束或被唤醒

            void wait():使一个线程处于等待直到被唤醒

    9:pageContext对象

        1):pageContext对象提供了对jsp页面内所有的对象及名字空间的访问

        2):pageContext对象可以访问到本页所在的session,也可以获取本页面所在的application的某一属性

        3):pageContext对象相当于页面中所有功能的集大成者

        4):pageContext对象的本类名也叫pageContext

    10:Config对象

        Config对象是在一个servlet初始化时,JSP引擎向它传递信息用的,此信息包括servlet初始化时所要用到的参数以及服务器的有关信息(通过传递一个ServletContext对象),常用方法如下:

        ServletContext getServletContext():返回含有服务器相关信息的servletConext对象

        String getInitParameter(String name):返回初始化参数的值

        Enumeration getInitParameterNames():返回servlet初始化所需所有参数的枚举

    11:exception对象

        exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个JSp页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。实际上是java.lang.Throeable对象,常用方法如下:

        String getMessage():返回描述异常的消息

        String toString():返回关于异常的简短描述信息

        void printStackTrace():显示异常及其栈轨迹

        Throwable FillInStackTrace():重写异常的执行栈轨迹

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>测试异常的页面</h1>
	<hr>	
	<%
		System.out.println(100/0);
	%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>异常内置对象</h1>
	<hr>	
	异常消息是:<%=exception.getMessage() %>
	异常字符串的描述:<%=exception.toString() %>
</body>
</html>	<h1>异常内置对象</h1>
	<hr>	
	异常消息是:<%=exception.getMessage() %>
	异常字符串的描述:<%=exception.toString() %>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值