HttpServlet基础知识复习(二)HttpServletRequest (请求)

HttpServletRequest 请求

  1. 请求行
    常用代码:
		request.getMethod();//获得请求方式
		request.getRequestURL();//返回客户端发出请求时的完整URL。(StringBuffer,return a StringBuffer object containingthe reconstructed URL)
		request.getRequestURI();//返回请求行中的资源名部分。(String,return a String containingthe part of the URL from theprotocol name up to the query string)
		request.getContextPath();//当前应用的虚拟目录 
		request.getQueryString();//返回请求行中的参数部分。
  1. 请求消息头
    重要的相关方法:
  • 2.1 String getHeader(String name) 根据头名称得到头信息值
//获得请求头信息
String h = request.getHeader("User-Agent");
System.out.println(h);

//如果想清楚的知道是哪个浏览器
if(h.toLowerCase().contains("msie")){//将消息转为小写,然后里面包含mise就判定为IE浏览器
	System.out.println("IE浏览器");
}else if(h.toLowerCase().contains("firefox")){
	System.out.println("你使用的是火狐浏览器");
}else if(h.toLowerCase().contains("chrome")){
	System.out.println("你使用的是谷歌浏览器");
}else{
	System.out.println("你使用的是其它浏览器");
}
  • 2.2 Enumeration getHeaderNames() 得到所有头信息name
//获取所有头消息的名字
Enumeration names = request.getHeaderNames();
while(names.hasMoreElements()){
	String name = (String)names.nextElement();//强转成String类型
	System.out.println(name + ":" + request.getHeader(name));
}
  • 2.3 Enumeration getHeaders(String name) 根据头名称得到相同名称头信息值
//获得相关name的消息头
Enumeration headers = request.getHeaders("accept-language");
while(headers.hasMoreElements()){
	String e = (String) headers.nextElement();
	System.out.println(e+":"+request.getHeader(e));
}
  1. 请求正文(*)
  • 3.1 与获取表单数据相关的方法
  • < input type=“text” name=“username” />
  • getParameter(name) 根据表单中name属性的名,获取value属性的值方法
  • getParameterValues(String name)专业为复选框取取提供的方法
  • getParameterNames() 得到表单提交的所有name的方法
  • getParameterMap 到表单提交的所有值的方法 //做框架用,非常实用
  • getInputStream 以字节流的方式得到所有表单数据

例子:
html文件:

<!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="/day09_request/demo1" method="get">
		用户名:<input type="text" name="userName"/><br/>
		密码:<input type="password" name="pwd"/><br/>
		性别:<input type="radio" name="sex" value="男" checked="checked"/><input type="radio" name="sex" value="女"/><br/>
		爱好 :
			<input type="checkbox" name="hobby" value="篮球"/>篮球
			<input type="checkbox" name="hobby" value="唱歌"/>唱歌
			<input type="checkbox" name="hobby" value="编码"/>编码
			<br/>
		所在城市:
		<select name="city">
			<option>------请选择------</option>
			<option value="bj">北京</option>
			<option value="sh">上海</option>
			<option value="gz">广州</option>
		</select>
		<br/>
		
		<input type="submit" value="注册"/>
	</form>
</body>
</html>

getParameter(name) 根据表单中name属性的名,获取value属性的值方法
getParameterValues(String name)专业为复选框取取提供的方法
例子演示:

告诉服务器客户端什么编码,只能处理post请求方式
request.setCharacterEncoding("UTF-8");

//根据表单中name属性的名,获取value属性的值方法
String username = request.getParameter("userName");
System.out.println(username);
String pwd = request.getParameter("pwd");
System.out.println(pwd);
String sex = request.getParameter("sex");
System.out.println(sex);
String hobby[] = request.getParameterValues("hobby");
for (String string : hobby) {
	System.out.println(string);
}
String city = request.getParameter("city");
System.out.println(city);

getParameterNames() 得到表单提交的所有name的方法
例子演示:

//告诉服务器客户端什么编码,只能处理post请求方式
request.setCharacterEncoding("UTF-8");
//getParameterNames() 得到表单提交的所有name的方法 
Enumeration names = request.getParameterNames();
		while(names.hasMoreElements()){
			String name = (String)names.nextElement();
			String[] values = request.getParameterValues(name);
			for (String string : values) {
				System.out.println(name + "\t" + string);
			}
		}
  • 3.2 与操作非表单数据相关的方法(request也是一个域对象)
    void setAttribute(String name, Object value);//将非表单的数据添加到request的域中
    Object getAttribute(String name);//从request对象中获取s的值
    Void removeAttribute(String name);//将request对象中的移除数据

  • 3.3 与请求转发相关的方法
    //得到请求转发或请求包含的协助对象
    RequestDispatcher getRequestDispatcher(String path)
    forward(ServletRequest request, ServletResponse response) //转发的方法
    include(ServletRequest request, ServletResponse response) //请求包含

  • 3.4 与请求编码相关的方法:
    //解决post方式编码
    request.setCharacterEncoding(“UTF-8”); //告诉服务器客户端什么编码,只能处理post请求方式
    //解决get方式编码
    String name = new String(name.getBytes(“iso-8859-1”),”UTF-8”);

请求转发和重定向的区别

  1. 请求转发不能跳转到其他应用,重定向可以跳转到其他应用
  2. 请求转发是request由服务器执行,重定向是response由客户端执行
  3. 请求转发客户端只发送一次请求,重定向客户端发送两次请求
  4. 请求转发可以传递数据,重定向不能传递数据
  5. 请求转发地址栏不会改变,重定向地址栏会改变
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值