在前面学习Servlet中,Servlet接口中的service方法就存在Response和Request两个参数
Request对象中存放的就是浏览器中发送的HTTP请求数据,HTTP请求消息的数据是由web服务器进行解析,解析完成之后就会将数据进行封装存放到Request对象中。服务器(目前是Servlet)处理完用户的请求之后,服务器就会讲处理结果响应给浏览器,Response对象中就存在HTTP响应数据。
Request:获取请求数据
Response:设置响应数据
- //
- // Source code recreated from a .class file by IntelliJ IDEA
- // (powered by FernFlower decompiler)
- //
-
- package javax.servlet.http;
-
- import java.io.IOException;
- import java.security.Principal;
- import java.util.Collection;
- import java.util.Enumeration;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
-
- public interface HttpServletRequest extends ServletRequest {
- String BASIC_AUTH = "BASIC";
- String FORM_AUTH = "FORM";
- String CLIENT_CERT_AUTH = "CLIENT_CERT";
- String DIGEST_AUTH = "DIGEST";
-
- String getAuthType();
-
- Cookie[] getCookies();
-
- long getDateHeader(String var1);
-
- String getHeader(String var1);
-
- Enumeration
getHeaders(String var1); -
- Enumeration
getHeaderNames(); -
- int getIntHeader(String var1);
-
- String getMethod();
-
- String getPathInfo();
-
- String getPathTranslated();
-
- String getContextPath();
-
- String getQueryString();
-
- String getRemoteUser();
-
- boolean isUserInRole(String var1);
-
- Principal getUserPrincipal();
-
- String getRequestedSessionId();
-
- String getRequestURI();
-
- StringBuffer getRequestURL();
-
- String getServletPath();
-
- HttpSession getSession(boolean var1);
-
- HttpSession getSession();
-
- String changeSessionId();
-
- boolean isRequestedSessionIdValid();
-
- boolean isRequestedSessionIdFromCookie();
-
- boolean isRequestedSessionIdFromURL();
-
- /** @deprecated */
- boolean isRequestedSessionIdFromUrl();
-
- boolean authenticate(HttpServletResponse var1) throws IOException, ServletException;
-
- void login(String var1, String var2) throws ServletException;
-
- void logout() throws ServletException;
-
- Collection
getParts() throws IOException, ServletException; -
- Part getPart(String var1) throws IOException, ServletException;
-
-
extends HttpUpgradeHandler> T upgrade(Class var1) throws IOException, ServletException; - }
方法具体如何使用,不做过多介绍,具体参照HttpServletRequest接口详解 (biancheng.net)
上述图片中,对于get和post方式对于请求参数获取所调用的方法不同,但是获取到参数之后,所进行的操作逻辑是一样的,可以将操作逻辑进行封装。Request提供一下获取参数的方法
getParameter(String name)
: 返回指定参数名的参数值。getParameterValues(String name)
: 返回一个参数名对应的所有参数值的数组。getParameterMap()
: 返回包含所有请求参数的Map对象,其中键为参数名,值为参数值的数组。request.getRequestDispatcher("转发的资源路径").forward(request, response);
response.sendRedirect("资源路径");
使用
中文乱码:原因通过Response获取的字字符输出流为ISO-8859-1
该流不需要关闭,随着响应的结束,response对象销毁,由服务器关闭。
如上述代码所示设置为utf-8即可
使用
通过使用Response对象获取字符输出流
ServletOutputStream servletOutputStream = response.getOutputStream();
写数据
servletOutputStream.write(字节数据);