- JSP内置对象的作用: JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,这些内置对象不需要通过JSP页面编写来实例化,在所有的JSP页面中都可以直接使用,它起到了简化页面的作用。JSP的内置对象被广泛应用于JSP的各种操作中。由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一一个对象前,需要先实例化这个对象,这其实是件比较繁琐的事情。JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可。在JSP中一共预先定义了9个这样的对象,分别为request、response、 session、 application、 out、pageContext、config、 page 和exception。其中,最为常用的是request、response、 session、 application。我们将着重介绍这些内置对象及其常用方法。
一、JSP内置对象之 request
- request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。
- request最常用的方法是
request.getParameter("");
该方法的作用是接收上一个界面需要传递的值。从而实现值在不同界面之间的传递,例如:form表单里面的数据,在下一个界面可以使用该方法进行接收。 - request还有一个较为常用的方法是
request.getAttribute(“”) ; 和 request.setAttribute(arg0, “”);
set方法是用来保存需要存储的信息,get方法用来获取set方法保存的信息。 - request 还有一些其他方法
- request.getRequestURL(): 浏览器发出请求时的完整URL,包括协议、主机名、端口
request方法 | 作用 |
---|---|
request.getQueryString(): | 请求行中的参数部分,只能显示以get方式发出的参数,post方式的看不到 |
request.getRemoteAddr() | 浏览器所处于的客户机的IP地址 |
request.getRemotePort(): | 浏览器所处于的客户机使用的网络端口 |
request.getRemoteHost() | 浏览器所处于的客户机的主机名 |
request.getLocalAddr() | 服务器的IP地址 |
request.getLocalName() | 服务器的主机名 |
request.getMethod() | 得到客户机请求方式一般是GET或者POST |
request.getParameter() | 用于获取单值的参数 |
request.getParameterValues() | 用于获取具有多值的参数。 |
request.getAttribute(“”) ; | 用于获取set保存转发的信息 |
request.setAttribute(“”) ; | 用于保存转发的信息 |
- request的方法应用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<form action = "" method = "post">
<input type = "text" name = "username" />
<input type = "submit" value = "提交" />
</form>
请求方式:<%=request.getMethod() %> <br>
请求的资源:<%=request.getRequestURL()%><br>
请求的文件路径:<%=request.getServletPath() %><br>
请求的服务器ip:<%=request.getServerName() %><br>
请求的服务器端口:<%=request.getServerPort() %><br>
客户端主机名: <%=request.getRemoteHost() %><br>
客户端ip: <%=request.getRemoteAddr() %><br>
<%
request.setCharacterEncoding("UTF-8");
%>
表单提交的用户: <%=request.getParameter("username")%><br>
</body>
</html>
-
运行结果为:
-
解决中文乱码问题 :在使用request方法接收上一个界面传递值时,如果出现中文则会出现乱码情况,request中有一个方法可以解决乱码问题 通过方法
request.setCharacterEncoding("UTF-8");
可以解决中文乱码问题。 -
对于存储在request.setAttribute 会话中的对象,在使用getAttribute方法接收对象值时需要进行强制类型转换,例如:
String name =(Striing) request.getAttribute("name");
二、JSP内置对象之 response
- response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。
- 使用response 对象提供的
sendRedirec()
方法可以将网页重定向到另一一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request 中的属性全部失效,并且开始一个新的request对象。 - 例如:
response.sendRedirect("login.jsp"); //重定向到login.jsp界面
response.sendRedirect("www.baidu.com"); //重定向到百度引擎搜索界面
- 使用response设置页面自动刷新 例如:使页面每10s自动刷新一次
response.setHeader("Refresh", "10");
三、JSP内置对象之 session
- session在网络中被称为会话。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发
出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点, HTTP协议提供了session, 通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session 对象就会自动消失。这个时间取决于服务器,例如,Tomcat 服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。 - session在程序中的作用范围比request和response的作用范围广,request的作用范围在相互关联的页面之间,而session在程序中的作用是所有的界面,在所有界面都可以的都可以进行传递和接收。
- session最常用的方法是
session.setAttribute("name", "Object obj"); // 存储或读取客户相关信息 ,name 是指定作用域在session范围内的变量名
session.getAttribute(""); // 读取setAttribute保存的信息,可以在不同的界面进行接收
- session方法在jsp界面属于内置对象,可以直接进行使用,但是在servlet中需要先申明然后才能使用,在serlvet中的使用方法如下
HttpSession session = request.getSession(); //先进行声明
session.setAttribute("name", "Object obj");
- 对于存储在session 会话中的对象,在使用getAttribute方法接收对象值时需要进行强制类型转换,例如:
String name =(Striing) session.getAttribute("name");
四、JSP内置对象之 application
-
application对象提供了对应用程序初始化参数进行访问的方法。应用程序初始化参数在web.xml文件中进行设置,
web.xml
文件位于Web应用所在目录下的WEB-INF子目录中。在web.xml
文件中通过<context- param>
标记配置应用程序初始化参数。 -
与session对象相同,也可以在application对象中设置属性。与session对象不同的是,session 只是在当前客户的会话范围内有效,当超过保存时间,session 对象就被收回;而application 对象在整个应用区域中都有效。application 对象管理应用程序环境属性的方法分别介绍如下。
方法名 | 文字说明 |
---|---|
getAttributeNames() | 获得所有application对象使用的属性名 |
getAttribute(String name) | 从application 对象中获取指定对象名 |
setAttribute(String key,Object obj) | 使用指定名称和指定对象在application对象中进行关联 |
removeAttribute(String name) | 从application对象中去掉指定名称的属性 |