一.什么是JSP内置对象
JSP内置对象是指在JSP页面中内置的,不需要定义就可以直接在网页中使用的对象。如下:
对象名称 | 作用 |
---|---|
out | 管理对客户端的输出 |
request | 保存客户端的请求信息 |
response | 向客户端发出响应 |
session | 保存会话过程中的信息 |
application | 保存整个应用环境的信息 |
exception | 表示页面上发生的异常 |
page | 当前JSP页面本身 |
pageContext | 本JSP的上下文 |
config | 本JSP的ServletConfig |
本章将学习out,request,response
二.out对象
out对象的主要作用是输出各种数据类型的内容。主要有print()方法和println()方法。如果要在网页上显示换行,需要如下代码:
<%
out.println("Hello World!" + "<br>");//必须要有<br>
%>
三.request对象
3.1获得客户端的参数
该对象用来获取客户端的参数和流。通常用getParameter(String name)和getParameterValues(String name)方法获取客户端的参数。
3.2获得客户端的基本信息
有如下方法:
方法名 | 作用 |
---|---|
getMethod() | 得到提交方式 |
getRequestURL() | 得到请求的URL地址 |
getProtocol() | 得到协议名称 |
getServletPath() | 获得客户端请求服务器文件的路径 |
getQueryString() | 得到URL的查询部分,对post来说,该方法得不到任何信息 |
getServerName() | 得到服务器的名称 |
getServerPort() | 得到服务器的端口号 |
getRemoteAddr() | 得到客户端的IP地址 |
四.response对象
response对象和request对象是一对相应的内置对象。response可以理解为客户端的响应。
4.1利用response对象进行重定向
重定向,就是跳转到另一个页面。 方法如下:
response.sendRedirect(目标页面路径);
首先实现一个简单的重定向例子,responseTest1.jsp代码如下:
responseTest1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
<title>responseTest1</title>
</head>
<body>
<form action = "responseTest2.jsp" method = "post">
<input type = "submit" value = "提交">
</form>
</body>
</html>
单击提交按钮,提交到responseTest2.jsp,代码如下;
responseTest2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
<title>responseTest2</title>
</head>
<body>
<%
response.sendRedirect("responseTest3.jsp");//相对路径
%>
</body>
</html>
但是在该业中又跳转到了responseTest3.jsp,代码如下:
responseTest3.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
<title>responseTest3</title>
</head>
<body>
欢迎您来到教务管理系统!
</body>
</html>
在浏览器输入http://localhost:8080/Prj11/responseTest1.jsp,如下图:
点击提交按钮,如下图:
4.2两种跳转方法的区别
4.2.1从浏览器的地址来看
forward方法是服务器去请求资源,服务器直接访问目标地址,并对该地址的响应内容进行读取,再把读取的内容发给浏览器,所以浏览器的地址不变。
而sendRedirect方法是告诉客户端,使浏览器知道去请求哪个地址,相当于客户端重新请求一遍。所以地址栏会变
4.2.2从数据共享来看
forward跳转能共享前一个页面中request里面的数据,而sendRedirect方法跳转的页面不能共享前一个页面中request里面的数据。前面讲到的投票页面,刷新则会票数加1。为什么会这样? 因为用了forward跳转,保存了上一次的参数,也重新提交了一次请求,所以就会票数加1。所以解决方法可以是用sendRedirect方法进行跳转。
4.2.3从功能来看
sendRedirect可以重定向到其他资源,而forward则不可以。如下:
<%
request.sendRedirect("http://www.baidu.com");
%>
上面这个不会报错。
再看看下面这个:
<jsp:forward page = "http://www.baidu.com"></jsp:forward>
这个会报错。
4.2.4从效率来看
forward效率比较高,因为跳转仅发生在服务器端;sendRedirect较低,因为相当于再进行了一次请求
摘自《Java Web开发与应用》,主编郭克华,副主编宋虹,清华大学出版社
欢迎小伙伴评论啊~~