一 请求对象
1 HttpServletRequest
HttpServletRequest 是一个接口,该接口的实现类对象称为请求对象,请求对象封装了所有的请求信息(请求行,请求头,请求体(请求参数))。
HttpServletRequest 接口包含了大量的方法。由 Tomcat 去实现这个对象,并且在 servlet 启动的时候调用service() 将请求对象传递进来了,在 service 方法中可直接使用。
2 请求常用方法
① request 与请求行相关方法
request 与请求行相关方法 | 说明 |
---|---|
String getMethod() | 获得请求方式 GET 或 POST |
String getRequestURI() | Uniform Resource Identifier统一资源标识符,代表一个资源名字 |
StringBuffergetRequestURL() | Uniform Resource Locator 统一资源定位符,代表一个可以访问地址 |
String getProtocol() | 获得协议和版本 |
String getContextPath() | 获得上下文路径(项目名path) |
② request 与请求头相关方法
request 与请求头相关方法 | 说明 |
---|---|
String getHeader(String headName) | 得到指定的请求头的值参数:键的名字 返回:相应请求头的值 |
③ request与请求参数相关方法
request与请求参数相关方法 | 说明 |
---|---|
String getParameter(String name) | 通过参数名得到一项参数值 |
String[] getParameterValues(String name) | 根据参数名得到一组同名的值复选框,下拉列表多选 |
Enumeration getParameterNames() | 获得所有的参数名 |
Map getParameterMap() | 得到表单所有的参数键和值,封装成Map对象 |
④ Enumeration接口中方法
Enumeration接口中方法 | 说明 |
---|---|
boolean hasMoreElements() | 如果还有其它元素,返回true |
E nextElement() | 返回下一个元素 |
3 获取请求行与头
@WebServlet("/play")
public class Play extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取请求行System.out.println(req.getMethod()); //方法System.out.println(req.getRequestURI()); //统一资源标识符System.out.println(req.getRequestURL()); //统一资源定位符System.out.println(req.getProtocol()); //协议和版本System.out.println(req.getContextPath());//当前项目地址// 获取请求头值System.out.println(req.getHeader("user-agent"));}
}
4 获取请求参数
① 创建页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>TJ</title>
</head>
<body>
<h3>用户注册</h3>
<form action="/play" method="post">name:<input type="text" name="name"><br/>sex:<input type="radio" name="sex" value="man" checked="checked"/>man<input type="radio" name="sex" value="woman"/>woman <br/>city:<select name="city"><option value="牙克石">牙克石</option><option value="大雁">大雁</option><option value="根河">根河</option></select><br/>hobby:<input type="checkbox" name="hobby" value="run"/>run<input type="checkbox" name="hobby" value="swim"/>swim<input type="checkbox" name="hobby" value="work"/>work<br/><input type="submit" value="submit"/>
</form>
</body>
</html>
② 获取页面中的数据
@WebServlet("/play")
public class Play extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 设置请求参数编码 放在获取请求参数之前req.setCharacterEncoding("utf-8");// 根据参数名获得参数值System.out.println("name:" + req.getParameter("name"));// 得到一个字符串数组String[] hobbies = req.getParameterValues("hobby");// 得到多个参数System.out.println("hobby:" + Arrays.toString(hobbies));// 得到所有参数的名字Enumeration<String> parameterNames = req.getParameterNames();while (parameterNames.hasMoreElements()) {// 得到其中一个名字String name = parameterNames.nextElement();System.out.println("param:" + name + ",value:" +req.getParameter(name));}// 得到所有的键和值Map<String, String[]> map = req.getParameterMap();map.forEach((k,v) -> System.out.println("key:" + k + ",value:" +Arrays.toString(v)));}
}
二 响应对象
1 HttpServletResponse
HttpServletResponse 是一个接口,该接口的实现类对象称为响应对象,用于响应数据(响应行,响应头,响应体)给浏览器。HttpServletResponse 接口包含了大量的方法。由 Tomcat 去实现这个对象,并且在 servlet 启动的时候调用 service() 将请求对象和响应对象传递进来了。于 service 方法中可直接使用。
2 响应常用方法
响应体相关的方法 | 功能描述 |
---|---|
OutputStream getOutputStream() | 服务器端返回的是二进制数据(图片)使用此方法 |
PrintWriter getWriter() | 服务器端返回的是字符的文本数据,使用此方法 |
3 进行响应
@WebServlet("/play")
public class Play extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置响应编码resp.setContentType("text/html;charset=utf-8");//响应字符信息到客户端PrintWriter writer = resp.getWriter();//writer.write("请求完成,响应数据返回!.......");//可以将html标签作为字符串响应到页面String s = "<p><a href=\"http://www.baidu.com\" style=\"color: red;background-color: aqua\">百度一下</a></p>";writer.write(s);}
}
解决中文乱码的方法 | 说明 |
---|---|
response.setCharacterEncoding(“字符集”) | 用于设置响应体的字符集,设置打印流使用的码表 |
void setContentType(String type) | 1. 告诉浏览器返回内容类型,2. 设置打印流编码,必须在获取流之前设置,否则无效 |