深圳网站设计小程序,做t恤的网站,太原市建设银行网站,制作网页的电脑软件HttpServletRequest是什么#xff1f;
HttpServletRequest是一个接口#xff0c;其父接口是ServletRequest#xff1b;HttpServletRequest是Tomcat将请求报文转换封装而来的对象#xff0c;在Tomcat调用service方法时传入#xff1b;HttpServletRequest代表客户端发来的请…HttpServletRequest是什么
HttpServletRequest是一个接口其父接口是ServletRequestHttpServletRequest是Tomcat将请求报文转换封装而来的对象在Tomcat调用service方法时传入HttpServletRequest代表客户端发来的请求请求中的所有信息都可以通过该对象获得 如何使用HttpServletRequest
获取请求行信息相关方法
这些方法用于获取客户端发送请求时的信息包括 URL、协议、方法、端口等。
API功能解释StringBuffer getRequestURL()获取客户端请求的完整 URL。String getRequestURI()获取客户端请求的项目目录的具体资源。int getServerPort()获取客户端发送请求时使用的服务器端口。int getLocalPort()获取应用程序所在容器的端口。int getRemotePort()获取客户端程序所使用的端口。String getScheme()获取请求的协议如 HTTP、HTTPS。String getProtocol()获取请求使用的协议及版本号如 HTTP/1.1。String getMethod()获取请求的 HTTP 方法如 GET、POST。
获取请求头信息相关方法
这些方法用于处理请求头信息包括获取特定请求头或所有请求头的名称。
API功能解释String getHeader(String headerName)根据头名称获取请求头的值。Enumeration getHeaderNames()获取所有的请求头名称。String getContentType()获取 Content-Type 请求头。 package Servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.util.Enumeration;WebServlet(/servlet04)
public class servlet4_1 extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 行情求相关 get/post uri http/1.1System.out.println(req.getMethod()); // 获取请求方式System.out.println(req.getScheme()); // 获取请求协议System.out.println(req.getProtocol()); //获取请求协议及其版本System.out.println(req.getRequestURI());// 获取请求的uri 项目内的资源路径System.out.println(req.getRequestURL());// 获取请求的url 项目内的资源的完成的路径System.out.println(req.getLocalPort());//本应用容器的端口号8080System.out.println(req.getServerPort()); // 客户端发请求时使用的端口号System.out.println(req.getRemotePort());// 客户端软件的端口号System.out.println(--------------------头请求-------------------------);// 根据名字单独获取请求头String accept req.getHeader(Accept);System.out.println(Accept : accept );// 获取本次请求中所有的请求头的名字System.out.println(--------------------所有请求头----------------------);EnumerationString headNames req.getHeaderNames();while(headNames.hasMoreElements()){String hname headNames.nextElement();System.out.println(hname : req.getHeader(hname));}}
}控制台输出 浏览器的报文内容 获取请求参数相关API
在 Servlet 中获取请求参数是指从客户端发送的 HTTP 请求中提取传递的参数。这些参数通常通过 URL、表单提交 或 查询字符串 发送常见的获取请求参数的方法有以下几种
GET 请求中的查询参数 通过 URL 传递的参数例如http://example.com?nameJohnage25。参数 name 和 age 就是 URL 中的查询参数。
POST 请求中的表单数据 通过 HTML 表单的提交来传递数据。表单数据以键值对的形式提交服务器可以接收这些参数。
API功能解释String getParameter(String parameterName)根据请求参数名获取请求单个参数值。String[] getParameterValues(String parameterName)根据请求参数名获取请求多个参数值数组。Enumeration getParameterNames()获取所有请求参数名。MapString, String[] getParameterMap()获取所有请求参数的键值对集合。BufferedReader getReader() throws IOException获取读取请求体的字符输入流。JSON串ServletInputStream getInputStream() throws IOException获取读取请求体的字节输入流。读文件int getContentLength()获取请求体长度的字节数。
package Servlet;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;WebServlet (/servlet05)
public class servlet4_2 extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取键值对形式的参数// 获取请求中的参数String username req.getParameter(username);System.out.println(username);String password req.getParameter(usePsw);System.out.println(password);// 根据参数名获取多个参数值String[] hobbies req.getParameterValues(hobby);System.out.println(Arrays.toString(hobbies));// 获取所有的参数名EnumerationString pnames req.getParameterNames();while(pnames.hasMoreElements()){String pname pnames.nextElement();String[] values req.getParameterValues(pname);if(values.length 1){System.out.println(Arrays.toString(values));}else System.out.println(pname values[0]);}System.out.println(----------------Map--------------------);// 返回所有参数的map集合 key 参数名 value 参数值MapString,String[] parameterMap req.getParameterMap();SetMap.EntryString,String[] entries parameterMap.entrySet();for (Map.EntryString,String[] entry : entries){String pname entry.getKey();String[] value entry.getValue();if(value.length 1){System.out.println(pname Arrays.toString(value));} else System.out.println(pname value[0]);}}}.System.out.println(Arrays.toString(hobbies))
Arrays.toString(hobbies) 将数组 hobbies 转换为字符串表示形式如 [reading, swimming, coding]方便输出查看。System.out.println 会将转换后的字符串打印到控制台便于开发者检查获取到的参数值
HTML代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
# 可以改成post方法Java代码同样可以处理
form actionservlet05 methodgetinput typetext nameusername brinput typepassword nameusePsw br爱好input typecheckbox namehobby value1 篮球input typecheckbox namehobby value2 足球input typecheckbox namehobby value3 排球input typecheckbox namehobby value4 铅球input typesubmit
/form
/body
/html
Get请求和post请求的区别
数据传递方式
GET 请求 数据通过 URL 查询字符串 传递放在 URL 的末尾。例如GET /search?queryjava HTTP/1.1其中 queryjava 是查询参数。查询字符串长度受浏览器和服务器的限制通常在 2000 个字符左右。POST 请求 数据通过 请求体body 传递而不是 URL。这使得 POST 请求适合传输较大或复杂的数据。例如POST /submit HTTP/1.1数据放在请求体中如表单数据或 JSON 数据。
其他常用API
API功能解释String getServletPath()获取请求的 Servlet 的映射路径。就是WebServlet (/servlet05)中的 /servlet05ServletContext getServletContext()获取 ServletContext 对象用于与 Servlet 环境交互。Cookie[] getCookies()获取请求中所有的 Cookie。HttpSession getSession()获取 HttpSession 对象处理会话信息。void setCharacterEncoding(String encoding)设置请求体字符编码。
HttpServletRequest怎么用
1. 设置响应行相关
API功能解释void setStatus(int code)设置响应状态码
setStatus(int code)用于设置 HTTP 响应的状态码如 200成功、404未找到、500服务器内部错误等。
2. 设置响应头相关
API功能解释void setHeader(String headerName, String headerValue)设置或修改响应头键值对。void setContentType(String contentType)设置 Content-Type 响应头以及字符集设置 MIME 类型。
setHeader(String headerName, String headerValue)用于设置或修改 HTTP 响应头信息。例如设置 Content-Type、Cache-Control 等。setContentType(String contentType)用于设置 Content-Type 响应头指定返回内容的类型如 text/html、application/json 等。
3. 设置响应体相关
API功能解释PrintWriter getWriter() throws IOException获取响应输出体放入信息的字符输出流通常用于文本。ServletOutputStream getOutputStream() throws IOException获取响应输出体放入信息的字节输出流通常用于二进制数据。void setContentLength(int length)设置响应体的字节长度其实质是在设置 Content-Length 响应头。
getWriter()用于获取 PrintWriter 对象可以通过它向客户端发送字符数据如 HTML、JSON、纯文本等。getOutputStream()用于获取 ServletOutputStream 对象通常用于发送二进制数据如图片、PDF 等。setContentLength(int length)设置响应体的字节长度用于告诉客户端响应内容的大小
package Servlet;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;WebServlet(/servlet06)
public class servlet4_3 extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 设置响应行相关的API
// resp.setStatus(404); // 故意响应404resp.setStatus(200);// 设置响应头相关的API
// resp.setHeader(aaa,valuea);
// resp.setHeader(Content-Type,text/html);
// resp.setHeader(Content-Length,1234);String info h1helloh1;resp.setContentType(text/html);resp.setContentLength(info.length());// 设置响应体内容的API// 获得一个响应体中输入文本字符输出流PrintWriter writer resp.getWriter();writer.write(info);}
}