HttpServlet基础知识复习(二)HttpServletRequest (请求)
2020-03-31 19:34
1156 查看
HttpServletRequest 请求
- 请求行
常用代码:
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();//返回请求行中的参数部分。
- 请求消息头
重要的相关方法:
- 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)); }
- 请求正文(*)
- 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”);
请求转发和重定向的区别
- 请求转发不能跳转到其他应用,重定向可以跳转到其他应用
- 请求转发是request由服务器执行,重定向是response由客户端执行
- 请求转发客户端只发送一次请求,重定向客户端发送两次请求
- 请求转发可以传递数据,重定向不能传递数据
- 请求转发地址栏不会改变,重定向地址栏会改变
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Javaweb Servlet基础学习记录(5)—重定向与请求转发(请求转发与重定向对HttpServletRequest对象属性的存取)
- HttpServletRequest基础知识
- Java基础之HttpServletRequest请求
- HttpServletRequest对象请求转发和HttpServletResponse对象请求重定向之间的区别
- C#利用HttpWebRequest后台请求,出现:基础连接已经关闭: 接收时发生错误;【解决方法之一】
- JavaWeb基础--HttpServletRequest
- Java Web基础知识之Servlet(2):深入Servlet——HttpServlet
- JAVA基础累积之HttpServletRequest
- Servlet复习(一):基础知识
- 在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getPa
- 记录_HttpServletRequestWrapper(前台请求过滤的用法)
- JavaWeb基础--HttpServletRequest
- XMLHttpRequest基础知识
- 处理HttpServletRequest 请求参数与参数转换为实体类
- Struts2 HttpServletRequest获取请求参数的过程
- HTTP Servlet基础 复习2
- javaEE Servlet+HttpServletRequest+HttpServletRespone+请求转发和重定向的区别+项目重整
- web开发的基础知识:http请求
- Web HttpServletRequest的getRequestURL方法获取不到https协议请求问题
- 获取HttpServletRequest请求Body中的内容