`

JSP九大内置对象总结(二)

阅读更多

上一篇文章列举了JSP内置对象的作用范围和当中的五个内置对象,本篇文章将进一步列举request和response内置对象的使用方法。

 

一、request对象

1、作用范围:请求有效。在一起完整的请求响应过程中,即request scope。

2、说明:代表由用户提交请求而出发的request对象。

3、request对象可以获取的信息:

(1)建立HTML表单: <form  action=“action” method=“method” name=“name”>。。。</form>

(2)用REQUEST对象处理:JSP页面将数据存放在request对象里,并将该请求传递到下一个页面,下一个页面访问request对象,处理上一个JSP页面传递过来的数据。

(3)通过超链接来传递:<a   href="aaa.jsp?aa=aa&bb=bb&cc=cc">aaa</a> 

(4)通过jsp动作标签param来进行传递

4、下面对四种可以通过request传递信息的方式进行一一说明。

(1)建立HTML表单: 

// login.jsp
<%@ page language="java" import="java.util.*" pageEncoding=“GB2312"%>
<html>
  <head><title>DengLu</title></head>
  <body>
    <form action="treat.jsp" method="post" >
     用户名<input type="text" name="name" />
     密  码<input type="password" name="password" />
     <input type="submit" value="登陆“ />
    </form>
  </table>
  </body>
</html>
 获取表单提交信息并处理: 
// treat.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<html>
  <head><title>treat.jsp</title></head>
  <body>
   <%
   String name=request.getParameter("name");
   String passw=request.getParameter("password");
   %>
   您好!<%=name%><br />
   您的密码是<%=passw%>
  </body>
</html>
 (2)用REQUEST对象处理: 
// index.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
  <title>请求有效</title>
</head>
<body>
请求有效 - 使用请求request.setAttribute()
<p/>
<%
request.setAttribute("name", "yyw");  
request.setAttribute("password", "123");
%>
<jsp:forward page="requestScopeGet.jsp"/>
</body>
</html>
 由于index.jsp中采用的是forwadr跳转,所以会在同一次请求当中,所以requestScopeGet.jsp中可以获取index.jsp中保存的数据。 
// requestScopeGet.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head><title>请求有效</title></head>
<body>
请求有效 - 使用请求request.getAttribute()
<br />
<%
   String name = (String) request.getAttribute("name");  
   String password = (String) request.getAttribute("password");
   out.println("姓名 = " + name);
   out.println("密码 = " + password);
%>
</body>
</html>
 (3)通过超链接来传递: 
// chaolianjie.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
  <title>请求有效</title>
</head>
<body>
<h1>连接有效 - 使用超链接a</h1>
<a href="requestScopeGet.jsp?name=yyw&password=123">连接</a>
</body>
</html>
 处理提交请求的页面与(2)中的requestScopeGet.jsp一模一样。 

(4)通过jsp动作标签param来进行传递:

仔细观察,可以发现jsp:forward的结束放在了jsp:param的后面。

// jspparam.jsp
<%@ page contentType="text/html;charset=GB2312"%>
<html>
<head>
<title></title>
</head>
<body>
   	<jsp:forward page="header.jsp">
   	<jsp:param name="selected" value="welcome"/>
   	</jsp:forward>
    <h1>北京</h1>
</body>
</html>

 处理页面:

// Header.jsp
<html> …..
<h1><font color="#ff0000">beijin</font></h1>
<%
String name=request.getParameter("selected");
%>
<%=name%>

 (5)如何接受多个属性值的属性

比方说我们在表单中使用到了复选框checkbox,那么我们如何在表单提交页面获取用户选择的多个值呢,我们可以来模拟实现以下。 

// info.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
  <title>请求有效</title>
</head>
<body>
<h1>用户信息</h1>
<form action="requestScopeGet2.jsp" method = "post">
姓 名:<input type="text" name="name" /><br />
密 码:<input type="password" name="password" /><br />
爱 好:<input type="checkbox" name="habit" value="read" checked />看书
	   <input type="checkbox" name="habit" value="sport" />运动
	   <input type="checkbox" name="habit" value="code" />编程
	   <br />
<input type="submit" />
</form>
</body>
</html>

 requestScopeGet2.jsp中的处理内容如下: 

// requestScopeGet2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
  <title>请求有效</title>
</head>
<body>
请求有效 - 使用请求request.getAttribute()
<br />
<%
   String name = request.getParameter("name");  
   String password = request.getParameter("password");
   String[] userHabits=request.getParameterValues("habit");
   out.println("姓名 = " + name);
   out.println("密码 = " + password);
   for(int i=0;i<userHabits.length;i++){
%>
	第<%=i%>项<%=userHabits[i]%><br>
<%}%>
<br />
</body>
</html>

(6)通过request对象获取服务器和浏览器相关信息

 主要代码:

 <%
//服务器
String localName=request.getLocalName();
String serverName = request.getServerName();
String localAddr=request.getLocalAddr();
int localPort=request.getLocalPort();
int serverPort = request.getServerPort();%>
<p>
<b>服务器</b>:<%= localName %><br/>
<b>服务器端IP</b>:<%= localAddr %><br/>
<b>服务器端口</b>:<%= localPort %><br />
</p>
<%//客户端信息
String remoteHost=request.getRemoteHost();
String remoteAddr=request.getRemoteAddr();
int remotePort=request.getRemotePort();%>
<p>
<b>浏览器端</b>:<%= remoteHost %><br/>
<b>浏览器端IP是</b>:<%= remoteAddr %><br/>
<b>浏览器端口</b>:<%= remotePort %><br/>
</p>
<%//协议相关
String pro=request.getProtocol();
String pro1=request.getScheme();
int len=request.getContentLength();
String type=request.getContentType();
String charEncode=request.getCharacterEncoding();
%>
<b>协议版本</b>:<%= pro %><br/>
<b>协议</b>:<%= pro1 %><br/>
<b>数据内容长度</b>:<%= len %><br/>
<b>数据类型</b>:<%= type %><br/>
<b>字符编码方式</b>:<%= charEncode %><br/>

 效果:


 

二、response对象

1、作用范围:page scope

2、说明:负责将服务器端的数据发送回浏览器的客户端。主要用于向客户端发送数据,如Cookie、HTTP文件头等信息。

3、用法实例:

(1)设置返回给浏览器的页面格式,如下例将页面设置为word类型

 

<%@ page contentType="text/html;charset=GB2312" %>
<html>
	<body>
	<h2>response对象 - setContentType方法</h2>
	将当前页面转换为word文档
	<% response.setContentType("application/msword;charset=GB2312");%> 
	</body>
</html>
 运行效果: 


 

(2)设置header。如下实现了页面自动刷新 

<%@ page contentType="text/html;charset=GBK" %>
<html>
<head>
  <title>response对象 - 处理HTML Header</title>
</head>
<body>
<h2>response - no-cache</h2>
<% 	
	if (request.getProtocol().compareTo("HTTP/1.0") == 0) 		
		 response.setHeader("Pragma", "no-cache"); 	
	else if (request.getProtocol().compareTo("HTTP/1.1") == 0) 		
		response.setHeader("Cache-Control", "no-cache"); 	
	response.setDateHeader("Expires", -1); 
%>
<h2>response - 自动刷新</h2>
当前时间:
<% 
   response.setHeader("Refresh","3");
   out.println(""+new java.util.Date());
 %>
</body>
</html>
 设置setHeader的第一参数为“refresh”的时候,第二个参数可以在指定时间内跳转到其他页面,如下:response.setHeader("Refresh","3");设为 

response.setHeader("Refresh","3;url=http://localhost:8080/try/response1.jsp");

(3)设置重定向页面

<%@page import="java.util.*"%>
<html>
<head><title>response应用</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
Date nowdate=new Date();
int hour;
hour=nowdate.getHours();
if (hour>=8 & hour<=17) {
       response.sendRedirect(“business.jsp?time=”+hour);//跳转
}else{
       response.sendRedirect(“privacy.jsp?time=”+hour);//跳转
}
%>
</body>
</html>

 business.jsp代码:

// business.jsp
<%@page import="java.util.*"%>
<html>
<head>
<title>response应用</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FF11FF">
现在是办公时间
<%
    String nowdate = request.getParameter("time");
%>
<%= nowdate%>
</body>
</html>

 private.jsp代码:

// private.jsp
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
<title>response应用</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FF11FF" text="#000000">
现在是私人时间
<%
   String nowdate = request.getParameter("time");
%>
<%= nowdate%>
</body>
</html>

 (4)添加Cookie

// Addcookies.jsp
<body>
<%
//以获取到的请求参数为值,创建一个Cookie对象
Cookie c = new Cookie("username" , "yyw");
//设置Cookie对象的生存期限,24小时
c.setMaxAge(24 * 3600);
//向客户端增加Cookie对象
response.addCookie(c);
%>
</body>

 readCookies.jsp代码:

// readCookies.jsp
<body>
<%
//获取本站在客户端上保留的所有Cookie
Cookie[] cookies = request.getCookies();
//遍历客户端上的每个Cookie
for (Cookie c : cookies){
	//如果Cookie的名为username,表明该Cookie是我们需要访问的Cookie
	if(c.getName().equals("username")){
		out.println(c.getValue());
		return;
	}
}
out.println("没有这个用户");
%>
</body>

 

关于request和response的用法先介绍到这了,下一篇将会详细介绍session和pageContext对象的使用和探究内置对象为何不用声明便可直接使用。

 

 谢谢您的关注和阅读,文章不当之处还请您不吝赐教~~~微笑微笑微笑

 

  • 大小: 10 KB
  • 大小: 12.2 KB
分享到:
评论

相关推荐

    jsp九大内置对象

    ### JSP九大内置对象详解 #### 一、Request对象 - **定义**:`javax.servlet.http.HttpServletRequest` 类型的对象。 - **用途**:用于接收客户端发送到服务器端的数据(包括但不限于HTTP请求头、请求参数等)。 - ...

    JSP九大内置对象

    jsp九大内置对象是学习jsp必须了解的内容,所以现在总结一下,以便以后学习中可以使用。

    jsp九大内置对象讲解

    JSP内置对象为开发者提供了强大的功能,使他们能够轻松处理HTTP请求和响应,管理会话状态,以及在不同页面间传递数据。理解这些内置对象及其作用域对于高效开发基于Java的Web应用程序至关重要。通过合理利用这些内置...

    JSP 9大内置对象学习总结

    ### JSP 9大内置对象学习总结 #### 一、Request对象详解 **1.... 在Web开发中,我们经常需要处理...通过以上对JSP内置对象的学习总结,我们可以更深入地理解这些对象的功能和使用方法,从而更好地进行Web开发工作。

    Jsp内置对象session总结

    JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...

    JSP内置对象归纳与总结

    JSP内置对象归纳与总结 JSP提供了九个内置对象,分别是out对象、request对象、response对象、session对象、application对象、pageContext对象、exception对象、config对象和page对象。这些内置对象是由容器实现和...

    JSP内置对象实验报告.doc

    charset=UTF-8");...通过这些实验,你可以深入理解JSP内置对象的用途和功能,并学会如何在实际开发中有效利用它们来构建更复杂的Web应用程序。练习部分鼓励你尝试更多的方法和属性,以增强你的理解和实践能力。

    jsp九大内置对象是什么

    #### 二、JSP九大内置对象 1. **request**:代表客户端发送到服务器端的请求。它封装了客户端请求的所有信息,并提供了多种方法来获取这些信息。 - `getAttribute(String name)`:根据指定名称获取请求参数的值。 ...

    jsp九大对象总结

    下面是这九大内置对象的详细介绍: 1. **Request对象**(javax.servlet.http.HttpServletRequest):代表客户端的请求信息。它提供了诸如获取请求参数、头信息、Cookie等方法。例如,`request.getAttribute()`用于...

    jsp内置对象 jsp的几个内置的对象图解

    jsp内置对象 有关jsp的一些内置的对象的总结

    jsp内置对象ppt总结

    jsp基础的学习资料,适合初学者,ppt形式,可以很容易学会jsp jsp基础的学习资料,适合初学者

    JSP九大内置对象和四种属性范围解读

    **JSP九大内置对象** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将HTML代码与Java代码结合在一起,以实现动态网页的创建。在JSP中,有九个预定义的内置对象,它们提供了对服务器端功能的直接访问,...

    实例详解JSP内置对象--request对象

    实例详解JSP内置对象--request对象 request对象是JSP中的内置对象之一,它提供了访问HTTP请求信息的功能。在基于Web的开发中,request对象扮演着极其重要的角色。本文将通过实例详解request对象的使用和掌握。 一...

    JSP9大内置对象.pdf

    JSP内置对象是JSP框架的核心组件之一,它们大大简化了Web开发过程中对HTTP请求和响应的处理工作。了解并熟练掌握这些内置对象的方法对于提高开发效率至关重要。通过对这些内置对象的学习和应用,开发者可以更加高效...

Global site tag (gtag.js) - Google Analytics