当前位置: 首页 > news >正文

request、response请求转发和重定向

Request&Response

request是请求对象,获取请求数据;response是响应对象,设置响应数据。

request获取请求数据

获取请求方式:request.getMethod();

获取访问路径:request.getContextPath();

获取URL(统一资源定位符):request.getRequestURL();

获取URI(统一资源标识符):request.getRequestURI();

获取请求参数:request.getQueryString()

获取请求头数据(key:value):request.getHeader();

浏览器在发送GET请求的时候是没有请求体的,所以需要把请求方式变更为POST,请求体中的数据格式如下:

获取字节输输入流:request.getInputStream(),如果前端发送的是文件数据

获取字符输入流:request.getReader(),如果前端发送的是纯文本数据

获取请求体内容的方式,只有post请求才有请求体

<form action="/request-demo/req1" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
//在此处获取请求体中的数据
//1. 获取字符输入流
BufferedReader br = req.getReader();
//2. 读取数据
String line = br.readLine();
System.out.println(line);
}
}

请求参数的获取:get请求:request.getQueryString()

                             post请求:request.getReader()

根据名称获取参数值(数组):request.getParameterValues()

根据名称获取参数值(单个):request.getParameter()

Request请求转发

请求转发是一种服务器内部的资源跳转方式。

请求转发的实现方式:req.getRequestDispatcher("/路径").forward(req,resp);

请求转发资源间共享数据,也就是request对象。

请求转发的特点:

  1. 浏览器地址栏路径不会发生变化;
  2. 只能转发当前服务器内部资源。
  3. 只发一次请求,可以在转发资源间共享request对象。
  4. 请求转发是服务器完成的。

将数据存储到request域:req.setAttributes("data","hello");

根据key获取值:req.getSttribute("data");

根据key删除键值对:req.removeAttribute("data");

Response

获取字符输出流:resp.getWriter().write()

获取字节输出流:resp.getOutputStream()

Response请求重定向

请求重定向也是一种资源跳转方式。

重定向的实现:resp.sendRedirect("/路径");

重定向的特点:

  1. 浏览器地址栏路径会发生变化
  2. 可以重定向到任意位置的资源,服务器内部、外部均可
  3. 重定向会发送两次请求,是两个不同的request对象,无法通过request对象进行数据共享。
  4. 重定向是浏览器完成的。

设置响应格式及编码:

  req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");

请求参数中文乱码问题

post请求中文乱码:将页面的编码格式设置为utf-8

request.setCharacterEncoding("utf-8");

get请求中文乱码:

URL编码:

String encode = URLEncoder.encode(username, "utf-8");
System.out.println(encode); //打印:%E5%BC%A0%E4%B8%89

URL解码:

String decode = URLDecoder.decode(encode, "ISO-8859-1");//打印:`å¼ ä¸ `
System.out.println(decode);

tomcat8之后,已将get请求乱码问题解决。

http://www.lryc.cn/news/210608.html

相关文章:

  • MySql学习路线
  • Vue实现首页导航和左侧菜单,介绍mock.js并实现登录注册间的跳转,实现左侧栏折叠效果,优化Main.vue组件,使用mock.js生成随机响应数据
  • 汇总下之RobotFramework自动化框架的系列文章
  • 0052【Edabit ★☆☆☆☆☆】Learn Lodash: _.drop, Drop the First Elements of an Array
  • 从无人机到实景三维海洋系统
  • 第二章前端开发ES6基础
  • 使用Python将PDF转为图片
  • JAVA 同城服务货运搬家小程序系统开发时应注意哪些?
  • uniapp开发小程序 小米手机真机bottom:0无效 底部间隙 设备安全区域处理办法
  • 四十、【进阶】索引失效情况2
  • 敏感词过滤--golang
  • NVIDIA cuda安装时全部失败
  • APScheduler-调度器AsyncIOScheduler
  • 二十三种设计模式全面解析-原型模式(Prototype Pattern)详解:创造对象的奇妙之道
  • el-input 给icon图标绑定点击事件
  • 计算机网络——物理层
  • 常用排序算法
  • MGRE环境下的OSPF
  • 【计算机毕设】微信小程序案例-学生签到系统
  • 【数据分析】上市公司半年报数据分析
  • 【C++初阶】类和对象——操作符重载const成员函数取地址重载日期类的实现
  • JAVA中的垃圾回收器(2)
  • mac 安装homebrew ,golang
  • 李沐——论文阅读——VIT(VIsionTransformer)
  • uniapp表单验证
  • Crawler4j实例爬取爱奇艺热播剧案例
  • uniapp项目APP端安卓ios权限检测教程
  • java多进程间(父进程与子进程)通信
  • 【从0到1设计一个网关】整合Nacos-服务注册与服务订阅的实现
  • 【uniapp】短信验证码输入框