HttpServletRequest类的说明和使用+解决Post中的中文乱码问题

HttpServletRequest类作用

每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中,然后传递到servlet方法(doGet和doPost)中给我们使用。也就是说,每次(一次)请求一个项目只会有一个Request对象供此次的响应使用,但是如果再次请求的话就会再次创建一个Request对象供这次的响应使用,也就是说,每次的请求都会有一个属于项目自己的Request对象域。我们可以通过HttpServletRequest对象,获取到所有的请求信息。在这里插入图片描述我们可以看到,这里有HttpServletRequest类创建的对象

HttpServletRequest类的常用方法

getRequestURI() 		获取请求的资源路径
getRequestURL() 		获取请求的统一资源定位符(绝对路径)
getRemoteHost() 		获取客户端的IP地址
getHeader() 			获取请求头
getParameter() 			获取请求的参数
getParameterValues() 	获取请求的参数(多个值的时候使用)
getMethod()  			获取请求的方式Get或Post
setAttribute(key,value);设置域数据
getAttribute(key); 		获取域数据
getRequestDispatcher()	获取请求转发对象

getRequestURI()+getRequestURL()

注意
一个结尾是I一个结尾是L
我们这里先创建一个类,然后继承HttpServlet来实现servlet程序,然后我们按shift+Alt+0选择第三个,然后选择重写doGet方法,然后如下
在这里插入图片描述可以看到,我们就这么简单的实现了我们这两个方法

getRemoteHost()

在这里插入图片描述如果使用localhost或者172.0.0.1访问的话返回值都是127.0.0.1,如果用的是真是IP则返回真实IP

getHeader()

获取请求头信息我们需要传入参数,参数即为请求头信息里面的值名,值名即为下图红笔选圈着的那些东西,当然这里只是一个例子,这里圈着的并不是所有的值名在这里插入图片描述
下图我们查看User-Agent的值
在这里插入图片描述

getMethod()

如下图在这里插入图片描述

getParameter()

语法:
HttpServletRequest对象.getParameter("参数名")
参数名就是HTML标签中的name属性

我们先写一个类用于接收数据:
在这里插入图片描述然后配置一下他的地址
在这里插入图片描述我们这里设置他的访问地址为/hello2

然后我们这里写一个表单,用于发送数据:
在这里插入图片描述注意我们的action的设置,后面两个是/项目名/访问地址
然后我们重启一下我们的程序,注意我们这里一定要重启,如果只是重新加载可能有些东西会加载不上去
在这里插入图片描述然后我们点击提交在这里插入图片描述让我们就可以接收到参数信息了

getParameterValues()

当我们要获取多个同参数名的参数值,我们再用getParameter()只能获取到第一个参数的值,所以我们可以用getParameterValues(),这个返回的是一个数组
看,我们可以定义一个数组接收这个数据,然后用Arrays.asList(数组名)来返回数组中的值,然后输出
在这里插入图片描述在这里插入图片描述
这一疙瘩是代码如果接受参数值的不是中文,那么用在doGet和doPost请求里面都是没问题的,但是如果有中文那么用在Post中可能会出现问题
如下:

解决Post中的中文乱码问题

我们可以用HttpServletRequest对象的setCharacterEncoding()方法,来设置一下请求体的字符集,一般都设置为UTF-8
在这里插入图片描述非常简单的就解决了我们Post乱码问题

注意很重要一点,这个玩意一定要放在请求参数的前面才能生效,不然可能会失效,可能还会乱码
比如,如果我们在我们设置字符集的方法前面进行获取密码参数
在这里插入图片描述可以看到如果我们在获取参数之后才设置字符集的话,会导致所有设置的字符集失效


到!此!结!束!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值