JSP内置对象
来源:互联网 发布:海信液晶电视连接网络 编辑:程序博客网 时间:2024/06/03 20:46
1.内置对象简介
1.1内置对象的简介
JSP内置对是Web容器创建的一组对象,不适用new关键字就可以使用的内置对象
Tips:如下代码中的out就是内置对象
<%int[] value={60,70,80}; for(int i:value) { out.print(i) }%>
1.2 JSP九大内置对象
- out对象
- request对象
- response对象
- session对象
- application对象
- Page、pageContext、exception对象、config对象
2.四种作用域范围
>
Tips:
1.Page
在当前页面有效,即用户请求的页面有效,当当前页面关闭时,page对象将相应回馈给客户端后释放
2.request
一个HTTP请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。 所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。
3.session
session作用域比较容易理解,同一浏览器对服务器进行多次访问,在这多次访问之间传递信息,就是session作用域的体现。如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。
4.application
如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。 整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。 application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。
3.out对象
3.1 什么是缓冲区
缓冲区(Buffer)就是内存的一块区域用来保存临时数据
3.2 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() 关闭输出流
案例演示:
<body><% out.println("<h2>静夜思</h2>"); out.println("床前明月光,<br>"); out.println("疑是地上霜。<br>"); out.flush(); //将缓冲区中的内容输出到客户端 out.println("举头望明月,<br>"); out.println("低头思故乡。<br>"); out.getRemaining(); //获取缓冲区剩余字符大小%><!-- 获取缓冲区字符大小 -->缓冲区中字符大小:<%=out.getBufferSize() %> byte<br>缓冲区剩余容量大小:<%=out.getRemaining() %> byte<br></body>
演示结果
静夜思床前明月光,疑是地上霜。举头望明月,低头思故乡。缓冲区中字符大小:8192 byte缓冲区剩余容量大小:8112 byte
4.request对象
表单提交的两种方式:get和post
4.1 get和post区别
<form name="regForm" action="动作" method="提交方式"></form>
1.get:
以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2kb。安全性低,但效率比post方式高。适合提交数据量不大,安全性不高的数据。比如:搜索、查询等功能。
2.post
将用户提交的信息HTML HEADER内。适合提交数据量大,安全性高的影虎信息。比如:注册、修改、上传等功能。
案例演示
1.get提交方式
<form action="doLogin.jsp" name="loginForm" method="get"> <table> <tr> <td>用户名:</td> <td><input type="text" name="userName"/></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> </tr> <tr> <td><input type="submit" name="login"></td> </tr> </table> </form>
浏览器地址栏:
http://localhost:8080/web/doLogin.jsp?userName=%E5%BC%A0%E4%B8%89&password=123456&login=%E6%8F%90%E4%BA%A4
2.post提交方式
Tips:
地址栏不会显示用户提交的信息
http://localhost:8080/web/doLogin.jsp
4.2 request对象
客户端的请求信息被封存在request对象中,通过它才能了解到客户的需求。requset对象是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。
4.2.1 requset对象常用的方法
4.2.2 案例演示:
发送端jsp页面表单
1.首先创建一个jsp页面,命名为:request.jsp
<form action="doRequest.jsp" name="loginForm" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="userName"/></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> </tr> <tr> <td><input type="checkbox" name="favourite" value="read">读书 <input type="checkbox" name="favourite" value="music">音乐 </td> <td> <input type="checkbox" name="favourite" value="running">跑步 <input type="checkbox" name="favourite" value="swimming">游泳 </td> </tr> <tr> <td colspan="2"><input type="submit" name="login"></td> </tr> </table> </form>
接收端jsp页面代码:
2.创建一个jsp页面,命名为:doRequest.jsp,这个页面的作用是接收从requset页面传递的参数。
<body><lable>用户名: <%=request.getParameter("userName") %></lable><br><lable>密码: <%=request.getParameter("password") %></lable><br><lable>兴趣爱好:<% //getParameterValues()返回一个组名称相同的集合的值 String [] str=request.getParameterValues("favourite"); if(str!=null) { for(String s:str) { out.println(s+" "); } } %></lable></body>
浏览器运行效果:
用户名: sdfsd密码: asdfa兴趣爱好: read music running swimming
当在表单中输入汉字的时候,接收端的jsp页面显示的是乱码,这是因为,request对象接收和提取参数的默认编码方式为”iso-8859-1”,所以需要在提取参数之前修改编码方式为”utf-8”
<% //设置request对象接收参数以"utf-8"编码提取,默认的编码为"iso-8859-1" request.setCharacterEncoding("utf-8"); %>
其他常用方法代码
<div>得到请求的MIME类型: <%=request.getContentType() %><br>返回请求用的协议类型和版本号 <%=request.getProtocol() %><br>返回接受请求的服务器主机名: <%=request.getServerName() %><br>返回服务器接受此请求所用的端口号:<%=request.getServerPort() %><br>返回字符编码方式 <%=request.getCharacterEncoding() %><br>返回请求题的长度(以字节数) <%=request.getContentLength() %><br>返回发送此请求的客户端IP地址: <%=request.getRemoteAddr() %><br>返回一虚拟路径的真实路径: <%=request.getRealPath("request.jsp") %><br>返回上下文路径: <%=request.getContextPath() %></div>
用户名: 张三密码: 1234567兴趣爱好: read music running swimming 得到请求的MIME类型: application/x-www-form-urlencoded返回请求用的协议类型和版本号 HTTP/1.1返回接受请求的服务器主机名: localhost返回服务器接受此请求所用的端口号:8080返回字符编码方式 utf-8返回请求题的长度(以字节数) 137返回发送此请求的客户端IP地址: 0:0:0:0:0:0:0:1返回一虚拟路径的真实路径: D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\web\request.jsp返回上下文路径: /web
Tips:
调用request对象的getRemoteAdrr()方法,显示的ip地址错误,原因是该方法只能获取静态的ip地址,如果是都动态IP则获取不到
5.response对象
5.1 response对象简介
reponse对象包含了响应客户请求的有关信息,但在JSP中很少使用 它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其他页面的response对象对当前页面无效。
5.2 response对象的常用方法
5.3 案例演示
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import=" java.io.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><% response.setContentType("text/html;charset=UTF-8"); //设置响应的MIME类型 out.println("response对象"+"<br>"); PrintWriter outer=response.getWriter(); //获取输出流对象 outer.println("我是response对象的outer对象"+"<br>"); out.println(response.getCharacterEncoding()); //打印response对象返回的字符集编码方式%>
Tips:
注意都outer对象输出的内容在内置对象out对象的前面显示,这是out对象和PrintWriter类对象outer对象的区别,outer的内容总是先于out对象显示。解决办法是在out对象输出的内容后加上out.flush(),强制清空输出out中的内容。
我是response对象的outer对象response对象UTF-8
请求重定向
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import=" java.io.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><% response.setContentType("text/html;charset=UTF-8"); //设置响应的MIME类型 out.println("response对象"+"<br>"); PrintWriter outer=response.getWriter(); //获取输出流对象 outer.println("我是response对象的outer对象"+"<br>"); out.println(response.getCharacterEncoding()); //打印response对象返回的字符集编码方式 response.sendRedirect("MutipfyTable.jsp"); //请求重定向%>
Tips:
response对象最后一行代码请求重定向到MutipfyTable.jsp页面,该页面输出一个九九乘法表。
九九乘法口诀表1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
5.4 请求转发和请求重定向的区别
6.session对象
6.1 什么是session
- session表示客户端与服务器的一次会话
- Web中的session指的是用户在浏览某个网站的时,从进入网站到浏览器关闭所经过的这段时间,也就是用户刘侃这个网站所花费的时间,我们说是一个session
- 综上所述,session实际上是一个特点的时间概念
- session保存在服务器的内存当中,每一个用户在服务器中保存不同的session
6.2 session对象
- session对象是一个JSP内置对象
- session对象在第一个JSP也变被加载时自动创建,完成会话期管理
- 从一个客户打开浏览器并连接到服务器开始,到用户关闭浏览器离开这个服务器结束,被称为一个会话
- 当一个客户访问一个服务器的时候,可能会在服务器几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象
- session对象是HttpSession类的实例
6.3 session对象常用方法
6.4 实例演示
(1) session_page1.jsp
<title>session_page1</title></head><body><h1>session对象</h1><hr><% SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date date=new Date(session.getCreationTime());%> session对象创建的时间:<%=sdf.format(date)%><br><!-- 在session中绑定对象 --><% session.setAttribute("userName", "admin"); //设置session的最大有效时间(秒) session.setMaxInactiveInterval(10); //10秒%> 获取session中绑定的对象值: <%=session.getAttribute("userName") %><br> 获取session在的唯一ID号: <%=session.getId() %> <br> <a href="session_page2.jsp">跳转到session_page2</a></body></html>
session对象session对象创建的时间:2017年10月08日 14:09:48获取session中绑定的对象值: admin获取session在的唯一ID号: 2EB26E0373352B2246D386C98833B0F8 跳转到session_page2
(2) session_page2.jsp
<body><% SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date date=new Date(session.getCreationTime());%>session的id号为:<%=session.getId() %><br>session中绑定的用户名:<%=session.getAttribute("userName") %><br>session创建的时间:<%=sdf.format(date) %><br>session中保存的属性:<% String[] str=session.getValueNames(); //获取session中所用可用属性的数组 for(int i=0;i<str.length;i++) { out.println(str[i]+" "); }%></body>
session的id号为:2EB26E0373352B2246D386C98833B0F8session中绑定的用户名:adminsession创建的时间:2017年10月08日 14:09:48 session中保存的属性:userName
Tips:
如果在session_page1.jsp页面停留的时间超过10秒。那么跳转到session_page2.jsp显示的页面如下所示
session的id号为:608B069F812CA0AA8E493B4D9D4A63D3session中绑定的用户名:nullsession创建的时间:2017年10月08日 15:05:48 session中保存的属性:
因为session设置的有效时间为10秒,过了10秒之后再跳转页面。之前的session就不存在了。所以session_page2页面的session对象的id也发生了变化。
6.4 Session的生命周期
session的生命周期要经历三个阶段,创建——>活动——>销毁
创建
当客户端第一次访问某个jsp或者servlet时候,服务器会问当前会换创建一个sessionID,每次客户端向服务器发送请求时,都会将此sessionID携带过去,服务器会对此sessionID进行检验。判断是否属于同一词会话。
活动
- 某次会话当中,通过超链接打开的新的页面属于同一次会话
- 只要当前会话的页面没有全部关闭,重新单打开的浏览器窗口访问同一个项目资源时属于同一次会话。
- 除非本次会话的所有页面都关闭再重新访问某个jsp页面或者Servlet将会创建新的会话注意:原有的会话还存在,只是这个旧的sessionid仍然存在于服务端,只是再也不会有客户端携带它然后交个服务端校验
销毁
session销毁的三种方式
- 调用session.invalidate()方法
- session过期(超时)
- 服务器重新启动
7.application对象
7.1application对象简介
- application对象实现了用户间数据的共享,可存放全局变量
- application开始于服务器启动,终止于服务器关闭
- 在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作
*application对象属于服务器,而不属于某个对象,也就是说,在任何地方对application对象的属性的操作,都将影响到其他用户对此的访问。- 服务器的启动和关闭,决定了application对象的生命。
- application对象是ServletContext类的实例
7.2 常用方法
7.3 案例演示
<h1>application内置对象</h1> <% application.setAttribute("city", "北京"); application.setAttribute("position", "01"); application.setAttribute("emain", "1540433618@qq.com"); %> <%=application.getAttribute("city") %> <% Enumeration attributes=application.getAttributeNames(); while(attributes.hasMoreElements()) { out.println(attributes.nextElement()+"nbsp;nbsp;"); } %> <br> JSP(SERVLET)引擎及版本号为:<%=application.getServerInfo() %>
application内置对象北京 javax.servlet.context.tempdirnbsp;nbsp; org.apache.catalina.resourcesnbsp;nbsp; org.apache.tomcat.util.scan.MergedWebXmlnbsp;nbsp; citynbsp;nbsp; org.apache.tomcat.InstanceManagernbsp;nbsp; org.apache.catalina.jsp_classpathnbsp;nbsp; org.apache.jasper.compiler.ELInterpreternbsp;nbsp; org.apache.jasper.compiler.TldLocationsCachenbsp;nbsp; org.apache.tomcat.JarScannernbsp;nbsp; javax.websocket.server.ServerContainernbsp;nbsp; positionnbsp;nbsp; emainnbsp;nbsp; org.apache.jasper.runtime.JspApplicationContextImplnbsp;nbsp; JSP(SERVLET)引擎及版本号为:Apache Tomcat/7.0.81
8.page对象
8.1 page对象简介
page页面就是指向当前页面本身,类比于this指针,他是java.lang.Object类的实例
8.2 常用方法
参照JDK文档的Object类的肠炎方法
9.pageContext对象
9.1 pageContext简介
- pageContext对象提供了对JSP页面内所用的对象及名字空间的访问
- pageContext对象可以访问本页所有的session,也可以取本页所在application的某一属性值
- pageContext对象相当于页面中所有功能的集大成者
- pageContext对象的本类名为pageContext
9.2 pageContext对象的常用方法
10.Config对象
10.1 Config对象简介
config对象是一个在Servlet初始化时,JSP引擎想它传递信息用的,此信息包括Servlet初始化时所要用的参数(通过键值对的方式构成)以及服务器的有关信息(通过传递一个ServletContext对象)
10.2 常用方法
10 exception对象
10.1 exception对象简介
exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个JSP页面应用此对象,就必须吧isErrorPage设为True,否则无法编译。exception对象实际上是java.lang.Throwable对象
10.2 常用方法如下
10.3 案例演示
(1) exception.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="doexception.jsp" %><!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=UTF-8"><title>exception</title></head><body><h1>测试异常的页面</h1><% System.out.println(1/0);%></body></html>
(2) doexception.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isErrorPage="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!--下边是嵌入的java代码--><% Date myday=new Date(); // 获取系统时间 SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd-HH-mm:ss"); //定义日期输出格式 String time =format.format(myday); //按照定义的格式输出时间%><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>doException</title></head><body> <h1>处理exception页面异常</h1> <%=exception.getMessage() %><br> <%=exception.toString() %><br> <%=exception.getStackTrace() %></body></html>
处理exception页面异常/ by zerojava.lang.ArithmeticException: / by zero[Ljava.lang.StackTraceElement;@750ae
Tips
exception.jsp页面中的errorPage属性:errorPage=”doexception.jsp”
doexception.jsp 中的属性isErrorPage=”true”,否则页面将会报错。
- JSP - JSP内置对象
- JSP--JSP内置对象
- JSP内置对象
- JSP内置对象
- JSP内置对象
- JSP内置对象
- jsp内置对象
- JSP 内置对象
- JSP内置对象
- JSP内置对象
- JSP内置对象
- JSP的内置对象
- jsp内置对象集合
- jsp内置对象
- JSP内置对象
- jsp内置对象
- JSP内置对象
- JSP的内置对象
- EasyUI进阶:一、如何在Dialog中显示iframe内容
- 用Java提交poj的细节问题
- 【Luogu3041】视频游戏的连击(AC自动机,动态规划)
- 51nod 1459 迷宫游戏 【djstl】
- Web前端优雅的显示网络请求进度条
- JSP内置对象
- iOS 用本地文件保存自定义模型
- 机器学习面试问题汇总
- 递归实现指数函数
- Linux下C语言开发(初学者) —— Hello world
- 爬格子呀5-4
- jsonp —— 跨域请求遇到的问题,服务接口返回View 对象才成功
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$
- 箱线图(boxplot)简介与举例