HttpServletRequest接口
程序员文章站
2024-02-04 13:58:10
...
1.介绍:
1)HttpServletRequest接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
2)HttpServletRequest接口实现类由Http服务器负责提供
3)HttpServletRequest接口负责在doGet/doPost方法运行时读取Http请求协议包中信息
4)开发人员习惯于将HttpServletRequest接口修饰的对象称为【请求对象】
2.作用:
1)可以读取Http请求协议包中【请求行】信息
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.通过请求对象,读取【请求行】中【url】信息
String url = request.getRequestURL().toString();
//2.通过请求对象,读取【请求行】中【method】信息
String method = request.getMethod();
//3.通过请求对象,读取【请求行】中uri信息
/*
* URI:资源文件精准定位地址,在请求行并没有URI这个属性。
* 实际上URL中截取一个字符串,这个字符串格式"/网站名/资源文件名"
* URI用于让Http服务器对被访问的资源文件进行定位
*/
String uri = request.getRequestURI();// substring
System.out.println("URL "+url);
System.out.println("method "+method);
System.out.println("URI "+uri);
}
2)可以读取保存在Http请求协议包中【请求头】或则【请求体】中请求参数信息
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.通过请求对象获得【请求头】中【所有请求参数名】
Enumeration paramNames =request.getParameterNames(); //将所有请求参数名称保存到一个枚举对象进行返回
while(paramNames.hasMoreElements()){
String paramName = (String)paramNames.nextElement();
//2.通过请求对象读取指定的请求参数的值
String value = request.getParameter(paramName);
System.out.println("请求参数名 "+paramName+" 请求参数值 "+value);
}
}
3)可以代替浏览器向Http服务器申请资源文件调用
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通知请求对象,使用utf-8字符集对请求体二进制内容进行一次重写解码
request.setCharacterEncoding("utf-8");
//通过请求对象,读取【请求体】参数信息
String value = request.getParameter("userName");
System.out.println("从请求体得到参数值 "+value);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过请求对象,读取【请求头】参数信息
String userName = request.getParameter("userName");
System.out.println("从请求头得到参数值 "+userName);
}