request对象

本章目标
掌握request对象的主要作用
掌握request对象的核心操作方法
可以使用request进行传输乱码的解决
可以使用request进行服务器角色验证

 

request内置对象
request内置对象是使用最多的一个对象了,其主要作用是用来接收客户端发送而来的请求信息,例如:请求的参数、发送的头信息等都属于客户端发来的信息,request是javax.servlet.http.HttpServletRequest接口的实例化对象,表示此对象主要是应用在HTTP协议上
对应接口:public interface HttpServletRequest extends ServletRequest

 

request内置对象的常用操作

 

乱码解决
由于浏览器默认的编码是UTF-8编码,而中文的GBK和UTF-8的编码是不一样的,所以在进行表单提交时造成了乱码。
解决方法:setCharacterEncoding()

 

 

加入编码设置

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head><title>加入编码设置</title></head>
<body>
<% 
  request.setCharacterEncoding("utf-8") ;  // 设置统一编码
%>
</body>
</html>

 

编写提交表单

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>编写提交表单</title>
</head>
<body>
	<form action="demoPost.jsp" method="post">
		请输入信息:<input type="text" name="info" >
		<input type="submit" value="提交">
	</form>
</body>
</html>

效果图:

接收表单内容

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>接收表单内容</title>
</head>
<body>
	<%--//接收表单提交的参数
		String content=request.getParameter("info");
	 --%>
	 <%
	 	request.setCharacterEncoding("utf-8");//设置统一编码
	 	String content=request.getParameter("info");//接收表单提交的参数
	  %>
	 <h3><%=content %></h3>
</body>
</html>

效果图:

接收请求参数
equest内置对象中的getParameter()方法可以接收一个表单的文本框中输入的内容,如果有一组参数(同名参数)传递的话,则就必须使用getParameterValues()方法进行接收。

 

定义表单,传递多种参数

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>定义表单,传递多种参数</title>
</head>
<body>
	<form action="demo2Post.jsp" method="post">
		姓名:<input type="text" name="uname"><br />
		兴趣:
		<input type="checkbox" name="inst" value="唱歌">唱歌
		<input type="checkbox" name="inst" value="跳舞">跳舞
		<input type="checkbox" name="inst" value="游戏">游戏
		<input type="checkbox" name="inst" value="看书">看书
		<input type="checkbox" name="inst" value="游泳">游泳
		<input type="hidden" name="id" value="3"><!-- 定义隐藏域 -->
		<br />
		<input type="submit" value="提交">
		<input type="reset" value="重置">
	</form>
</body>
</html>

效果图:

 

定义表单,传递多种参数

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>定义表单,传递多种参数</title>
</head>
<body>
	<form action="demo2Post.jsp" method="post">
		姓名:<input type="text" name="uname"><br />
		兴趣:
		<input type="checkbox" name="inst" value="唱歌">唱歌
		<input type="checkbox" name="inst" value="跳舞">跳舞
		<input type="checkbox" name="inst" value="游戏">游戏
		<input type="checkbox" name="inst" value="看书">看书
		<input type="checkbox" name="inst" value="游泳">游泳
		<input type="hidden" name="id" value="3"><!-- 定义隐藏域 -->
		<br />
		<input type="submit" value="提交">
		<input type="reset" value="重置">
	</form>
</body>
</html>

 效果图:

URL地址重写
在WEB的开发中,所有的参数不一定非要由表单传递过来,也可以使用地址重写的方式进行传递,地址重写的格式如下:
动态页面地址?参数名称1=参数内容1&参数名称2=参数2&…

 

接收地址重写参数

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>接收地址重写参数</title>
</head>
<body>
 <%
  request.setCharacterEncoding("utf-8");//设置统一编码
  String param1=request.getParameter("name");//接收参数
  String param2=request.getParameter("password");//接收参数
  %>
  <h3>姓名:<%=param1 %></h3>
  <h3>密码:<%=param2 %></h3>
</body>
</html>
<%-- 在地址栏上写这个链接:
http://localhost:8080/Six/request/demo3.jsp?name=chaoyi&password=123456 --%>

效果图:

 

定义表单显示多种类型

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>定义表单显示多种类型</title>
</head>
<body>
<form action="demo4Post.jsp" method="post">
	姓名:<input type="text" name="uname"><br />
	性别:
		<input type="radio" name="sex" value="男" checked="checked">男
		<input type="radio" name="sex" value="女" >女<br />
	城市:
		<select name="city">
			<option value="北京">北京</option>
			<option value="天津">天津</option>
			<option value="洛阳">洛阳</option>
		</select><br />
	兴趣:
		<input type="checkbox" name="**inst" value="唱歌">唱歌
		<input type="checkbox" name="**inst" value="跳舞">跳舞
		<input type="checkbox" name="**inst" value="游戏">游戏
		<input type="checkbox" name="**inst" value="看书">看书
		<input type="checkbox" name="**inst" value="游泳">游泳<br />
	自我介绍:<textarea rows="3" cols="30" name="note"></textarea><br />
		<input type="hidden" name="uid" value="1">
		<input type="submit" value="提交">
		<input type="reset" value="重置">
</form>
</body>
</html>

 效果图:

 

接收全部请求参数的名称及对应的内容

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>接收全部请求参数的名称及对应的内容</title>
</head>
<body>
<%
	request.setCharacterEncoding("utf-8");//设置统一编码
%>
<center>
<table border="1">
	<tr>
		<td>参数名称</td>
		<td>参数内容</td>
	</tr>
<%
	Enumeration enu=request.getParameterNames();
	while(enu.hasMoreElements()){
		String paramName=(String)enu.nextElement();
%>
	<tr>
		<td><%=paramName %></td>
		<td>
<%
		if(paramName.startsWith("**")){
			String paramValue[]=request.getParameterValues(paramName);
			for(int x=0; x<paramValue.length; x++){
%>
			<%=paramValue[x] %>、
<%
			}
		}else{
			String paramValue=request.getParameter(paramName);
%>
			<%=paramValue %>
<%
		}
 %>		
		</td>	
	</tr>
<%
	}
 %>		
</table>
</center>
</body>
</html>

 效果图:

接收全部请求参数的名称
在request内置对象中还有一个灵活的方法就是getParameterNames(),本方法可以返回所有请求参数的名称,但是此方法返回值的类型是Enumeration,所以需要使用hasMoreElements()方法判断是否有内容以及使用nextElement()方法取出内容。

 

显示全部的头信息
JAVA的WEB开发使用的是HTTP协议,主要的操作就是基于请求和回应,但是在请求和回应的同时也会包含一些其他的信息(例如:客户端的IP、Cookie、语言等),那么这些信息就称为头信息。
要想取得头信息的名称可以直接通过request内置对象的getHeaderNames(),而要想取出每一个头信息的内容,则需要使用getHeader()方法。

 

取出头信息的名称及内容

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%><!-- 导入java.util包 -->
<html>
<head>
<title>取出头信息的名称及内容</title>
</head>
<body>
<%
	Enumeration enu=request.getHeaderNames();
	while(enu.hasMoreElements()){
		String headerName=(String)enu.nextElement();
		String headerValue=request.getHeader(headerName);
%>
		<h5><%=headerName %>--><%=headerValue %></h5>
<% 
	}
 %>
</body>
</html>

 效果图:

 

其他操作

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
<title>request的其他操作</title>
</head>
<body>
	<%
		String method = request.getMethod(); // 取得提交方式
		String ip = request.getRemoteAddr(); // 取得客户端的IP地址
		String path = request.getServletPath(); // 取得访问路径
		String contextPath = request.getContextPath(); // 取得上下文资源名称
	%>
	<h3>请求方式:<%=method%></h3>
	<h3>IP地址:<%=ip%></h3>
	<h3>访问路径:<%=path%></h3>
	<h3>上下文名称:<%=contextPath%></h3>
</body>
</html>

 效果图:

 

小结
request对象的主要功能是用于接收用户发来的请求信息
接收参数的方法:getParameter()、getParameterValues()、getParameterNames()
取得客户端IP地址可以使用getRemoteAddr()
取得上下文名称可以使用getContextPath()
头信息是指附加在请求上一起发送到服务器上的内容。
  

 
  

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值