Request随笔

GET

/RequestDemo1

null

http://localhost/RequestDemo1

/RequestDemo1

HTTP/1.1

0:0:0:0:0:0:0:1

  1. 获取请求头数据

方法:(重点记住打*号即可)

//1.通过请求头的名称获取请求头的值(*)

String getHeader(String name)

//2.获取所有的请求头名称

Enumeration getHeaderNames()

代码:

@WebServlet(“/RequestDemo1”)

public class RequestDemo extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取请求头数据:user-agent

String agent = request.getHeader(“user-agent”);

if (agent.contains(“Chrome”)) {

System.out.println(“谷歌来了…”);

} else if (agent.contains(“Firefox”)) {

System.out.println(“火狐来了…”);

}

//获取请求头数据:referer

String referer = request.getHeader(“referer”);

if (referer.contains(“/xpp”)) {

System.out.println(“牛!!!”);

} else {

System.out.println(“欢迎去优酷!”);

}

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

}

  1. 获取请求体数据

请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数。

步骤:

  1. 获取流对象

  2. 在从流对象中拿数据

//1.获取字符输入流,只能操作字符数据

BufferedReader getReader()

//2.获取字节输入流,可以操作所有类型数据

ServletInputStream getInputStream()

@WebServlet(“/RequestDemo1”)

public class RequestDemo extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取请求消息体-请求参数

//1.获取字符流

BufferedReader br = request.getReader();

//2.读取数据

String line=null;

while((line=br.readLine())!=null){

System.out.println(line);

}

}

}

输出:

username=zhangsan&password=124

Title



  1. 其他功能

  2. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数。

//1. 根据参数名称获取参数值 username=zs&password=123

String getParameter(String name):

//2.根据参数名称获取参数值的数组 hobby=xx&hobby=game

String[] getParameterValues(String name)

//3.获取所有请求的参数名称

Enumeration getParameterNames()

//4.:获取所有参数的map集合

Map<String,String[]> getParameterMap()

样例:

@WebServlet(“/RequestDemo1”)

public class RequestDemo extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String username = request.getParameter(“username”);

System.out.println(username);

Enumeration parameterNames = request.getParameterNames();

while (parameterNames.hasMoreElements()) {

String name = parameterNames.nextElement();

String value = request.getParameter(name);

System.out.println(name + “------” + value);

}

System.out.println(“___________________”);

Map<String, String[]> parameterMap = request.getParameterMap();

parameterMap.forEach((a, b) -> System.out.println(a + “-------” + b[0]));

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding(“utf-8”);

this.doGet(request, response);

}

}

Title



在这里插入图片描述

输出:

小皮皮mzz

username------小皮皮mzz

password------232323


username-------小皮皮mzz

password-------232323

第二种方法演示:

Title



游戏

学习

在这里插入图片描述

@WebServlet(“/RequestDemo1”)

public class RequestDemo extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String[] hobbies = request.getParameterValues(“hobby”);

for (String hobby : hobbies) {

System.out.println(hobby);

}

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding(“utf-8”);

this.doGet(request, response);

}

}

输出:

game

study

中文乱码问题

  • get方式:tomcat 8 已经将get方式乱码问题解决了

  • post方式:会乱码

解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");

  1. 请求转发:一种在服务器内部的资源跳转方式。

步骤:

//1. 通过request对象获取请求转发器对象:

RequestDispatcher getRequestDispatcher(String path)

//2. 使用RequestDispatcher对象来进行转发:

forward(ServletRequest request, ServletResponse response)

特点:

  1. 浏览器地址栏路径不发生变化。

  2. 只能转发到当前服务器内部资源中。

  3. 转发是一次请求。

@WebServlet(“/RequestDemo2”)

public class RequestDemo2 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doPost(request, response);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值