概述:
由于JSP使用java作为脚本语言 所以JSP具有强大的对象处理能力 并且可以动态创建web页面内容 但java语言在使用一个对象前 需要先实例化这个对象 为了简化开发 JSP提供了一些内置对象 用来实现JSP应用 在使用JSP内置对象时 不需要提前定义这些对象 直接使用即可
1:request
request对象封装了由客户端生成的HTTP请求的所有细节 主要包括HTTP头信息 系统信息 请求方式和请求参数等等 通过request对象提供的相应方法可以处理客户端浏览器提交的http请求中的各项参数
1.1:通过request对象的getParmeter()
方法获取传递的参数值
语法如下
<% request.getParmeter("id"); %>
实例如下 创建index.jsp文件 在该文件中添加一个连接到deal.jsp页面的超链接 并传递两个参数
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>使用request对象获取请求参数值</title> </head> <body> <a href="deal.jsp? id=1&user">处理页</a> </body> </html>
创建deal.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String id=request.getParameter("id"); String user=request.getParmeter("user"); String pwd=request.getParmeter("pwd"); %> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>处理页</title> </head> <body> id参数的值为:<%=id %><br> user参数的值为:<%=user %><br> pwd参数的值为:<%=pwd %> </body> </html>
1.2:在作用域中管理属性
使用setAttribute()
方法将数据保存到request范围内的变量中
使用getAttribute()
方法可以读取request范围内的变量
实例如下
index1.jsp文件如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>Insert title here</title> </head> <body> <% try{ int money=100; int number=0; request.setAttribute("result",money/number); } catch(Exception e){ request.setAttribute("result","很抱歉 页面产生错误"); } %> <jsp:forward page="deal1.jsp"/> </body> </html>
deal1.jsp文件如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>结果页</title> </head> <body> <%String message=request.getAttribute("result").toString(); %> <%=message %> </body> </html>
1.3:解决中文乱码
所有的request请求对象都是 iso-8859-1的 在此页面中采用的是utf-8的编码方式 只要将获取到的数据通过String的构造方法使用指定的编码类型重新构造一个string对象 就可以解决此问题
关键代码如下
<body> name参数的值为<%=new String(request.getParmeter("name").getBytes("ISO-8859-1"),"UTF-8")%> sex参数的值为<%=request.getPatmeter("sex")%> </body>
1.4:获取客户端信息
通过request对象可以获取客户端的相关信息
部分方法实例如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>Insert title here</title> </head> <body> <br>客户提交信息的方式<%=request.getMethod() %> <br> 使用的协议<%=request.getProtocol() %> <br> 获取发出请求字符串的客户端地址<%=request.getRequestURL() %> <br> 获取提交数据的客户端IP地址<%=request.getRemoteAddr() %> <br> 服务器端口号<%=request.getServerport() %> <br> 获取服务器的名称<%=request.getServerName() %> <br> 获取客户端所请求的脚本文件的文件路径<%=request.getServletPath() %> <br> 获得HTTP协议定义的文件头信息host的值<%=request.getHeader("host") %> </body> </html>
2:response
response对象用于响应客户请求 向客户端输出信息 它封装了JSP产生的响应 并发送到客户端以响应客户端的请求 请求数据可以是各种数据类型 甚至是文件。
2.1:重定向网页
使用response对象提供的sendRedirect()
对象可以将网页重定向到另一个页面 重定向操作支持将地址重定向到不同的主机上 这一点与转发不同 在客户端浏览器上将会得到跳转的地址 并重新发送请求链接 用户可以从浏览器的地址栏中看到跳转后的地址 进行重定向地址后 request中的属性全部失效 并且开始一个新的request对象 语法如下
response.sendRedirect(String path);
2.2:处理http文件头
禁用缓存
在默认的情况 浏览器会对显示的内容内容进行缓存 这样 当用户再次访问相关网页时,浏览器会判断网页是否有变化 如果没有变化则直接显示缓存中的内容 这样可以提高网页的显示速度 对于一些安全性较高网站 通常需要禁用缓存 语法如下
<% response.setHeader("Cache-Control","no-store"); response.setDateHeader("Expires",0); %>
2.3:设置页面页面自动刷新
通过设置HTTP头还可以实现页面的自动刷新 语法如下
<% response.setHeader("refresh","10"); %>
2.4:定时跳转网页
通过设置HTTP头还可以实现定时跳转网页的功能 语法如下
<% response.setHeader("refresh","5; URL=login.jsp"); %>
2.5:设置输出缓冲
通常情况下 服务器要输出到客户端的内容不会直接写到客户端 而是写到一个输出缓冲区 语法如下
response.setBufferSize(32);
3: session
session在网络中被称为会话 由于HTTP协议是一种无状态协议 服务器并不保存相关的信息 所以session可以在应用程序的web页面进行跳转 保存用户的状态 使整个用户会话一直存在下去 部分方法语法如下
session.setAttribute(String name,Object obj) session.getAttribute(String name)
3.1:从会话中移动指定的绑定对象
对于存储在session会话中的对象 如果想删除 可以使用session对象的removeAttribute方法
removeAttribute(String name)
3.2:销毁session
session.invalidate()
4:application
application对象用于保存所有应用程序中的公有数据 它在服务器启动时自动创建 在服务器停止时销毁 有点类似于系统的全局变量
应用getAttribute方法获取web.xml中定义的全部应用程序初始化参数名 并通过循环输出 代码如下
<%@ page import="java.util.*"%> <% Enumeration enema=application.getInitParameterNames(); while(enema.hasMoreElements()){ String name=(String)enema.nextElement(); String value=application.getInitParameter(name); out.printIn(name+""); out.printIn(value); } %>
5:out
out对象一个最基本的应用就是想客户端浏览器输出信息 out对象可以输出各种数据类型的数据.,还可以对缓冲区进行管理
分别有print
方法和printIn()
方法 都可以用于输出数据 区别不大
out.print() out.printIn()
6:获取会话范围的pageContext对象
pageContext
可以获取页面上下文
7:读取web.xml配置信息的config对象
config对象主要用于取得服务器的配置信息
8:应答或请求的page对象
page对象代表JSP本身 只有在JSP页面内才是合法的 page对象本质上是包含当前Servlet接口引用的变量 可以看作是this关键字的别名 效果如下
代码如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>page 对象各方法的引用</title> </head> <body> <%! Object object;%> <ul> <li>getClass()方法的返回值<%=page.getClass()%></li> <li>hashCode方法的返回值<%=page.hashCode() %></li> <li>toString方法的返回值<%=page.toString() %></li> <li>与object对象比较的返回值<%=page.equals(object) %></li> <li>与this对象比较的返回值<%=page.equals(this) %></li> </ul> </body> </html>
9:获取异常信息的exception
exception对象用来处理JSP文件执行时发生的所有错误和异常 只有在page指令中设置isErrorPage属性值为true的页面中才可以被使用
实例如下 使用exception对象获取异常信息
index4.jsp文件如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" errorPage="error.jsp"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>使用exception对象获取异常信息</title> </head> <body> <% request.setAttribute("price","12.5元"); float price=Float.parseFloat(request.getAttribute("price").toString()); %> </body> </html>
error.jsp文件如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isErrorPage="true"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>错误提示页</title> </head> <body> 错误提示为:<%=exception.getMessage() %> </body> </html>
创作不易 觉得有帮助请点赞关注收藏~~