Request和Response
1、Servlet视图
先了解下框架
2、request对象
2.1、request的继承结构
虽然我们一直简称为Request,但实际上代表请求的接口为ServletRequest,其中定义了http请求相关的方法。
ServletRequest有一个子类HttpServletRequest,在ServletRequest的基础上增加了很多和http协议相关的方法。
既然Request代表HTTP,那么Http请求相关的请求行请求头实体内容等信息都可以通过这个对象获得。
2.2、request获取客户机信息
getRequestURL方法 – 返回客户端发出请求完整URL
getRequestURI方法 – 返回请求行中的资源名部分
getQueryString方法 – 返回请求行中的参数部分
getRemoteAddr方法 – 返回发出请求的客户机的IP地址
getMethod方法 – 返回客户机的请求方式
getContextPath方法 – 获得当前web应用的虚拟目录名称
2.3、Request获取请求头信息
getHeader(name)方法 — String
getHeaders(String name)方法 — Enumeration
getHeaderNames方法 — Enumeration
getIntHeader(name)方法 — int
getDateHeader(name)方法 — long(日期对应毫秒)
2.4、Request获取请求参数和乱码解决
2.4.1、获取请求参数
getParameter(String name) – String 通过name获得值
getParameterValues(String name) – String[] 通过name获得多值 如: 爱好
getParameterNames() – Enumeration 获得所有请求参数的name
getParameterMap() – Map<String,String[ ]> key :name value: 多值
public class MyServlet03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.getParameter(String name) -- String 通过name获得值
String uname = req.getParameter("name");
String uage = req.getParameter("age");
System.out.println(uname+"~"+uage);
//2.getParameterValues(String name) -- String[] 通过name获得多值 如: 爱好
String[] likes = req.getParameterValues("like");
System.out.println(likes);
//3.getParameterNames() -- Enumeration<String> 获得所有请求参数的name
Enumeration<String> names = req.getParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
String value = req.getParameter(name);
System.out.println(name+"~"+value);
}
//4.getParameterMap() -- Map<String,String[ ]> key :name value: 多值
Map<String,String[]> map = req.getParameterMap();
System.out.println(map);
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>request获取请求参数</