重新学习JSP之九——JSP内置对象(上)

一.什么是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开发与应用》,主编郭克华,副主编宋虹,清华大学出版社

欢迎小伙伴评论啊~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值