HttpServletRequest
来源:互联网 发布:云计算和传统的区别 编辑:程序博客网 时间:2024/06/08 12:08
HttpServletRequest对象用来操作Http请求中的请求部分(请求消息行,请求消息头,请求正文),下面是常用的方法
1、请求行
①getMethod();获得请求方式(Get,Post)
②***getRequestURL();获得客户端请求的完整的URL
③***getRequestURI();获得请求行中的资源名部分
④***getContextPath();获得应用的目录
⑤getQueryString();获得请求消息行中的参数部分
2、请求消息头
①getHeader(String header);根据头名得到对应的信息值
②getHeaderNames();得到所有头名
③getHeaders(String header);更具头名得到所有相同头名对应的信息值
下面对请求行和请求消息头这些方法进行测试的Servlet:
package Test_HttpServletRequest;import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Test_HttpServletRequest extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //请求消息行部分 System.out.println(req.getMethod());//得到请求方式 System.out.println(req.getRequestURL());//得到客户端请求的完整URL System.out.println(req.getRequestURI());//得到请求行中的资源名部分 System.out.println(req.getContextPath());//得到应用的虚拟目录 Servlet System.out.println(req.getQueryString());//得到请求消息行中的参数部分 //请求消息头部分 String header = req.getHeader("User-Agent");//得到客户端的信息 System.out.println(header); Enumeration<String> names = req.getHeaderNames();//得到所有请求消息头中的name while(names.hasMoreElements()){//得到每一个name对应的值 String name = names.nextElement(); System.out.println(name+":"+req.getHeader(name)); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); }}
Servlet对应的xml配置:
<servlet> <servlet-name>request</servlet-name> <servlet-class>Test_HttpServletRequest.Test_HttpServletRequest</servlet-class></servlet><servlet-mapping> <servlet-name>request</servlet-name> <url-pattern>/request</url-pattern></servlet-mapping>
3、请求正文
常用如下方法来获取从form标签(表单)中提交的数据:
①***getParameter(String name) 根据表单中的name值获取value属性值
②***getPaeameterValues(String name) 根据name值获取复选框中value的值,该方法返回一个字符串数组
③getParameterNames() 获取表单中所有name值
④***getParameterMap 得到表单提交的所有值
⑤getInputStream 以字节流的方式得到所有表单数据
下面是一个例子,用来获取表单数据:
Servlet代码:
package Test_HttpServletRequest;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 获取表单数据 * @author wushijia * */public class getForm extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8");//告诉服务器使用什么编码,HTML文档用的是什么编码,里面的值就传什么编码 //获取表单数据 String username = req.getParameter("username");//用户名 String pwd = req.getParameter("pwd");//密码 String sex = req.getParameter("sex");//性别 String[] hobby = req.getParameterValues("hobby");//爱好 String city = req.getParameter("city");//所在地 System.out.println(username); System.out.println(pwd); System.out.println(sex); for (int i = 0;hobby != null && i < hobby.length; i++) { System.out.print(hobby[i]+" "); } System.out.println(); System.out.println(city); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}
html文档:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> <form action="/Servlet/form" method="post"><!-- 提交到指定位置的servlet中 --> 用户名:<input type="text" name="username"><br/> 密码:<input type="password" name="pwd"><br/> 性别:<input type="radio" name="sex" value="男">男 <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 value="cq">重庆</option> <option value="bj">北京</option> </select> <br> <input type="submit" value="提交"> </form></body></html>
3、操作非表单数据
想要向request对象中添加非表单数据(即不是从表单里提交的数据),使用setAttribute(String name,Object obj)即可,如果想要获取添加的数据,使用getAttribute(String name)即可
4、请求转发和请求重定向的区别
我们都知道,请求转发是利用request对象中的getRequestDispatcher()和forward()方法来完成的,而请求重定向是用response对象中的sendRedirect()方法来完成的,下面说说他们的区别。
请求转发:①请求转发后,浏览器地址栏的地址不会改变
②客户端始终只请求一次
③请求转发只能跳转到当前应用下的Servlet,不能跳转到其他应用
④请求转发能够传递数据
⑤转发由服务器执行
请求重定向:①不能传递数据
②客户端发送两次请求
③请求重定向能够跳转到其他应用
④浏览器的地址栏的地址会发生改变
⑤重定向由客户端执行
阅读全文
0 0
- HttpServletRequest
- Httpservletrequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- httpservletrequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- HttpServletRequest
- 从request对象中获取请求json格式的参数
- 阿里Canal部署安装小白教程
- ListView滚动监听
- 系统学习深度学习(三十)--BiLSTM
- make 2>&1 | tee log.txt 命令解析
- HttpServletRequest
- 获取所有库的大小
- 队列的实现
- if else与switch区别
- dd大牛的《背包九讲》
- 2017百度之星Astar资格赛 1001度度熊保护村庄
- ARM指令adr adrl ldr mov简单科普
- 关于数据类型的判断不使用typeof的精确定位
- 如何使用ArcMap将.mxd文件发布成.sd文件