1.Request对象:
在Servlet中用来处理客户端请求需要用doGet或doPost方法的request对象


2.get和post请求区别:

  • get请求
  1. get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连
  2. get方式明文传递,数据量小,不安全
  3. 效率高,浏览器默认请求方式为GET请求
  4. 对应的Servlet的方法是doGet
  • post请求
  1. post方法是把提交的数据放在HTTP包的Body中
  2. 密文传递数据,数据量大,安全
  3. 效率相对没有GET高
  4. 对应的Servlet的方法是doPost

3.Request主要方法:


4.Request乱码:

  • 乱码原因
  1. 产生乱码是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个统一的编码,之后就按照此编码进行数据的传输和接收
  • get乱码解决办法
  1. 在Tomcat7及以下版本,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。
  2. 解决办法∶在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。
  3. Tomcat8的版本中get方式不会出现乱码了,因为服务器对url的编码格式可以进行自动转换。
  • post乱码解决办法
  1. 由于客户端是以UTF-8字符编码将表单数据传输到服务器端的,因此服务器也需要设置以UTF-8字符编码进行接收。
  2. 解决方案:使用从ServletRequest接口继承而来的setCharacterEncoding(charset)方法进行统一的编码设置。

5.示例代码1:

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.io.PrintWriter;@WebServlet(value = "/rs")
public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取用户请求发送数据String username=req.getParameter("username");String password=req.getParameter("password");System.out.println("提价的数据:"+username+"\t"+password);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.对request设置统一编码(解决乱码)req.setCharacterEncoding("utf-8");//2.获取用户请求发送数据String username=req.getParameter("username");String password=req.getParameter("password");//3.响应数据给客户端//--1.解决乱码问题    方式一
//        resp.setCharacterEncoding("utf-8"); //设置服务器端的编码格式
//        resp.setHeader("Content-Type","text/html;charset=utf-8");   //设置响应头(设置浏览器以utf-8解析)//--2.接解决乱码问题   方式二//一定在获得字符输出流之前获得resp.setContentType("text/html;charset=utf-8");PrintWriter printWriter=resp.getWriter();printWriter.println("注册成功!!!");}
}

5.示例代码2:

@WebServlet(value = "/login")
public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决两中请求方式乱码问题req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=UTF-8");//1.收参String username=req.getParameter("username");String password=req.getParameter("password");//2.调用业务逻辑层AdminService adminService=new AdminServiceImpl();Admin admin=adminService.login(username,password);//3.处理结果}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

Request 详解相关推荐

  1. HTTP中request详解

    1)获取常用信息 >获取客户端的IP System.out.println("IP:"+request.getRemoteAddr()); //IP:0:0:0:0:0:0: ...

  2. javaweb_笔记2(Servlet源码分析;request详解;请求域;转发和重定向;WebServlet注解;jsp基础语法,JavaBean。)

    1.HttpServlet源码分析 HttpServlet类是专门为HTTP协议准备的.比GenericServlet更加适合HTTP协议下的开发. HttpServlet在哪个包下? jakarta ...

  3. JSP页面元素,内置对象及request详解

    JSP的页面元素: a. 脚本Scriptlet 1.<% 局部变量,Java语句 %> 2.<%! 全局变量,定义方法 %> 3.<%= 输出表达式 %> 一般而 ...

  4. Jmeter书中不会教你的(68)——jdbc request详解

    上一节中已经成功了测通了jdbc请求,简单的从数据库中查询出数据.今天讲下jdbc request中各个参数的意义及用法. 一.Query Type:查询类型,对于测试来说默认选择就可以Select ...

  5. HTTP请求(Request)详解

    # HTTP请求(Request) ''' 当用户通过浏览器访问某个网站时, 浏览器会向网站服务器发送请求,这个请求就叫做HTTP请求. 请求包含的内容主要有: 请求方法(Request Method ...

  6. Jmeter之HTTP请求详解

    一. HTTP request详解 客户端发送的HTTP请求到Web服务器时,请求消息主要包含: 请求行 请求头 请求体(请求报文/请求参数) 1.1 请求行 请求行用于说明请求类型,以及要访问的资源 ...

  7. 详解Java四大作用域

    文章目录 四大作用域 **1.pageContext** 1.1定义: 2.request(详解) 2.1定义 2.2 request域对象的使用 2.3生命周期 2.4 获取请求头数据 3.sess ...

  8. IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上)...

    IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上) 在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的 ...

  9. IIS负载均衡-Application Request Route详解第一篇: ARR介绍

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍   说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Appli ...

最新文章

  1. Android 中使用MediaRecorder进行录像详解(视频录制)
  2. [LCT动态树] [NOI2014]魔法森林,[ZJOI2018]历史
  3. 素数和 mooc 翁恺
  4. 手动指定 main 函数作为入口libvcruntimed.lib
  5. Qt Creator 2.8.1,qt4.8.5 需要含gcc4.4 的mingw
  6. 模型算法_回归模型算法研究——ARMA模型
  7. JVM 图形化监控工具
  8. socat使用指南:3:5种常见的使用方法
  9. 高等数学张宇18讲 第十八讲 第二型曲线曲面积分
  10. ad7705c语言程序,TM7705低成本16位高精度ADC方案 附技术手册和C语言代码
  11. RTL8153B RTL8153 千兆以太网 有~现 ~货
  12. [noip2011]铺地毯(carpet)解题报告
  13. 通行宝深交所上市:市值84亿 腾讯云与上汽是股东
  14. Win7安装typhon使用心得
  15. Tableau权限设置方法
  16. AutoCAD如何创建图层?开关图层、冻结图层、锁定图层怎么运用?
  17. 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具
  18. leetcode刷题之旅(5) Longest Palindromic Substring
  19. Android检测模拟器
  20. 十个鲜为人知的Linux命令-【4】

热门文章

  1. MOD13Q1数据最大合成NDVI数据
  2. html5制作交互式课件,网易科技频道--Hot Potatoes 教你如何制作交互式Web课件的新工具...
  3. 【转载】一个软件测试工程师的学习体验 (受用)
  4. 计算机外文参考文献2018,2018年英文参考文献格式-推荐word版 (5页)
  5. 常用软件下载地址汇总
  6. 重定向和CSFB返回场景优先ENDC选网介绍
  7. html5之太阳地球月球,使用html5画出地球月球和太阳之间的环绕关系
  8. 如何用在自己的网页中嵌入腾讯视频网页播放器播放一些文件
  9. u盘安装红旗linux操作系统,制作红旗8的系统安装u盘的方法
  10. 【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)...