您的位置:首页 > 产品设计 > UI/UE

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

2020-03-31 19:34 1156 查看

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. 请求转发地址栏不会改变,重定向地址栏会改变
  • 点赞
  • 收藏
  • 分享
  • 文章举报
程序胖 发布了26 篇原创文章 · 获赞 16 · 访问量 2352 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: