0x01 前言
在JSP中最重要的就是请求与响应了
Java将其封装为HttpServletRequest与HttpServletResponse对象
在JSP里面可以很方便的操作这两个对象,例如使用doGet()或doPost()这些方法,里面有两个参数
分别表示request(HttpServletRequest)和 response(HttpServletResponse)
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法就可以获取到客户端请求的所有信息
HttpServletResponse对象用于响应客户端的请求,通过这个对象提供的方法就可以处理服务端对客户端请求响应
0x02 HttpServletRequest常用方法
| 方法 | 说明 |
|---|---|
| getParameterNames() | 获取所有的参数名 |
| getParameter(String name) | 通过参数名获取对应的值,如果有重复的名,则返回第一个的值 |
| getParameterValues(String name) | 通过参数名获取指定参数的所有值,返回为String数组 |
| getMethod() | 获取请求发送的方式,例如:GET/POST |
| getQueryString() | 获取请求的URL地址中附带的参数 |
| getRequestURL() | 获取请求的资源 |
| getRequestURL().toString() | 获取请求的URL地址 |
| getRemoteAddr() | 获取客户端的IP地址 |
| getRemoteHost() | 获取客户端的名字 |
| getRemotePort() | 获取客户端使用的网络端口号 |
| getRemoteUser() | 获取发出请求的客户机的完整主机名 |
| getLocalAddr() | 获取WEB服务器的IP地址 |
| getLocalName() | 获取WEB服务器的主机名 |
| getRequestURI() | 获取发出请求字符串的客户端地址 |
| setAttribute(String name,Object) | 将数据作为request对象的一个属性存放到request对象中 |
| getAttributeNames() | 获取request对象的所有属性名 返回为Enumeration |
| getAttribute(String name) | 获取request对象的name属性的值 |
| removeAttribute(String name) | 移除request对象的name属性 |
| getCookies() | 获取客户端的所有Cookie对象 返回为Cookie数组 |
| getSession() | 获取Session会话对象 |
| getHeaderNames() | 获取所有request Header的属性名 返回为Enumeration |
| getHeader(String name) | 获取指定名字的request Header的所有值 |
| getHeaders(String name) | 获取指定名字的request Header的所有值 返回为Enumeration |
| getContentLength() | 获取请求的Body的长度 |
| getCharacterEncoding() | 获取请求中的字符编码方式 |
0x03 HttpServletResponse常用方法
| 方法 | 说明 |
|---|---|
| setContentType(String var1) | 设置当前响应的MIME类型 |
| setCharacterEncoding(String var1) | 设置当前响应的字符编码 |
| getWriter() | 获取响应打印流对象 |
| getOutputStream() | 获取响应流对象 |
| addCookie(Cookie var1) | 添加指定的Cookie加入到当前响应中 注:遇到同名,依然会进行新增操作 |
| addHeader(String name, String value) | 添加指定的名称与值到响应的header头信息中 注:遇到同名,依然会进行新增操作 |
| setHeader(String var1, String var2) | 设置指定的名称与值到响应的header头信息中 注:遇到同名,会进行修改操作 |
| sendError(int var1, String var2) | 使用指定状态码与内容发送一个错误到客户端 |
| sendRedirect(String var1) | 请求重定向 例如:responst.sendRedirect(“index.jsp”); 例如:responst.sendRedirect(“http://baidu.com“); |
| setStatus(int var1) | 设置状态码,例如:302重定向 304控制缓存 |
| addDateHeader(String var1, long var2) | 添加HTTP响应头中的日期,加入对应名称的日期头信息 注:遇到同名,依然会进行新增操作 |
| setDateHeader(String var1, long var2) | 设置HTTP响应头中的日期,加入对应名称的日期头信息 注:遇到同名,依然会进行新增操作 |
0x04 小例子
写一个如何使用这个HttpServletRequest与HttpServletResponse对象,方法的例子
# 目录结构├── src│ └── main│ └── webapp│ └── com│ └── Servlet│ ├── ...│ └── TestServlet2.java│ └── WEB-INF│ └── web.xml│ └── index.jsp
package com.Servlet;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/TestServlet2")public class TestServlet2 extends HttpServlet {public TestServlet2() {super();}/*** @param request* @param response* @throws IOException*/@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {String id = request.getParameter("id");response.getWriter().write("id: " + id);}}// 接着打开运行:http://127.0.0.1:8081/mavenJspTest_war/TestServlet2?id=1// 返回结果// id: 1// request.getParameter 获取请求参数的值// response.getWriter().write 输出内容到响应中
0x05 小结
大概知道HttpServletRequest与HttpServletResponse对象,哪一些方法是常用的即可
心里面有个底子,以后要进行代码审计了,就可以快速知道那些东西是前端可控的
