Resquest获取请求数据
request 获取请求体数据
-
request对象和response对象的原理
- request和response对象是由服务器创建的。我们来使用它们
- request对象是来获取请求消息,response对象是来设置响应消息
-
request对象继承体系结构:
request功能:
获取请求消息数据
获取请求行数据
GET /day14/demo1?name=zhangsan HTTP/1.1
方法:
获取请求方式 : String getMethod()
(*)获取虚拟目录: String getContextPath()
获取Servlet路径: String getServletPath()
获取get方式请求参数: String getQueryString()
(*)获取请求URI:/day14/demo1
String getRequestURI(): /day14/demo1
StringBuffer getRequestURL() :http://localhost/day14/demo1
URL:统一资源定位符 : http://localhost/day14/demo1 中华人民共和国
URI:统一资源标识符 : /day14/demo1 共和国
获取协议及版本: String getProtocol()
获取客户机的IP地址: String getRemoteAddr()
获取请求头数据
方法:
String getHeader(String name):通过请求头的名称获取请求头的值
Enumeration getHeaderNames():获取所有的请求头名称
获取请求体数据:
请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
步骤:
获取流对象
BufferedReader getReader():获取字符输入流,只能操作字符数据
ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
再从流对象中拿数据
其他功能:
通用功能: 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数
1. String getParameter(String name): 根据参数名称获取参数值 username=zs&password=123
2. String[] getParameterValues(String name): 根据参数名称获取参数值的数组 hobby=xx&hobby=game
3. Enumeration getParameterNames(): 获取所有请求的参数名称
4. Map<String,String[]> getParameterMap(): 获取所有参数的map集合
**步骤1:在web目录下新建一个regist.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注册页面</title> </head> <body> <form action="/day13/requestDemo5" method="post"> <input type="text" placeholder="请输入用户名" name="username" > <br> <input type="text" placeholder="请输入密码" name="password"><br> <label><input name="Fruit" type="checkbox" value="appale" />苹果 </label> <label><input name="Fruit" type="checkbox" value="peach" />桃子 </label> <label><input name="Fruit" type="checkbox" value="" />香蕉 </label> <br> <input type="submit" value="注册"> </form> </body> </html>
**步骤2:在src目录下新建一个servlet,命名为: RequestDemo5
package itcast.request; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Map; import java.util.Set; @WebServlet("/requestDemo5") public class requestDemo5 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置流的编码 request.setCharacterEncoding("utf-8"); // String username = request.getParameter("username"); // System.out.println("post"); // System.out.println(username); //获取所有参数的map集合 Map<String, String[]> parameterMap = request.getParameterMap(); Set<String> keyset = parameterMap.keySet(); for (String name : keyset) { //快捷键iter //获取键和值 String[] values = parameterMap.get(name); System.out.println(name); for (String value : values) { System.out.println(value); } System.out.println("-------------"); } System.out.println("由于regist文件中没有对香蕉的value属性赋值,所有此处Fruit没有输出banana"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!