文章目录
Request(请求)&Response(响应)
测试案例
测试类
ServletDemo14.java
package com.taotao.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@SuppressWarnings({"all"})
public class ServletDemo14 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//使用reguest对象 获取请求数据
String name = req.getParameter("name"); //url?name=zhangsan
//使用response对象 设置响应数据
resp.setHeader("content-type","text/html;charset=utf-8");
resp.getWriter().write("<h1>" + name + ",欢迎你!</h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post...");
}
}
运行测试
Request继承体系
继承体系图
Request获取请求数据
- 请求数据分为3部分:
请求行
- String getMethod():获取请求方式
- String getContextPath():获取虚拟目录(项目访问路径)
- StringBuffer getRequesURL():获取URL(统一资源定位符)
- String getRequestURI():获取URL(统一资源标识符)
- String getQueryString():获取请求参数(GET方式)
方法案例演示
package com.taotao.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@SuppressWarnings({"all"})
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//- String getMethod():获取请求方式
String method = req.getMethod();
System.out.println(method); //GET
//- String getContextPath():获取虚拟目录(项目访问路径)
String contextPath = req.getContextPath();
System.out.println(contextPath); // tomcat_demo02
//- StringBuffer getRequesURL():获取URL(统一资源定位符)
StringBuffer requestURL = req.getRequestURL();
System.out.println(requestURL.toString()); //http://localhost:8080/tomcat_demo02/req1
//- String getRequestURI():获取URL(统一资源标识符)
String requestURI = req.getRequestURI();
System.out.println(requestURI); ///tomcat_demo02/req1
//- String getQueryString():获取请求参数(GET方式)
String queryString = req.getQueryString();
System.out.println(queryString); //问号后面的参数
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
运行展示
请求头
- String getHeader(String name):根据请求头名称获取值
案例测试
请求体
- ServletInputStream getInputStream():获取字节输入流
- BufferedReader getReader():获取字符输入流
案例测试
写一个测试网页
doPost()方法
运行测试
Request获取请求参数
从用户输入获取请求参数,返回给服务器端
测试类RequestDemo2
package com.taotao.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@SuppressWarnings({"all"})
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get...");
//1.获取所有参数的Map集合
Map<String, String[]> map = req.getParameterMap();
for (String key:map.keySet()){
System.out.println(key + ":");
//获取值
String[] values = map.get(key);
for (String value: values) {
System.out.print(value + " ");
}
System.out.println();
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//我们调用doGet方法,使用相同的逻辑
this.doGet(req, resp);
}
}
表单网页链接
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--通过post方式提交-->
<form action="/tomcat_demo02/req2" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>
</body>
</html>
运行测试
点提交后
getParameterValues()方法
package com.taotao.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@SuppressWarnings({"all"})
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get...");
//1.获取所有参数的Map集合
Map<String, String[]> map = req.getParameterMap();
for (String key:map.keySet()){
System.out.println(key + ":");
//获取值
String[] values = map.get(key);
for (String value: values) {
System.out.print(value + " ");
}
System.out.println();
}
//2.根据key获取参数值,数组
String[] hobbies = req.getParameterValues("hobby");
for (String hobby: hobbies){
System.out.println(hobby);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//我们调用doGet方法,使用相同的逻辑
this.doGet(req, resp);
}
}
测试运行
getParameter()方法
System.out.println("------------------");
//3.根据key 获取单个参数值
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username);
System.out.println(password);
运行测试
表单html请求方式改为Post测试
直接方法调用测试
在doPost()方法中调用doGet()
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//我们调用doGet方法,使用相同的逻辑
this.doGet(req, resp);
}
测试结果
get与post结果相同,不再演示
版权声明:本文为qq_39123467原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。