JSP入门——request对象

201 阅读3分钟

「这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战

前言

大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要介绍JSP脚本中的9个内置对象中的request对象。

1. request对象

request是HttpServletRequest的实例,request对象封装着一次用户请求,包含所有的请求参数。

1.1 request对象的作用

知道了request对象所做的事情,那它的作用也就呼之欲出了。

  1. request对象用来获取用户的请求参数
  2. request对象用来操作request范围(本次请求范围)的属性
  3. 代替forword和include动作指令

1.1.1 获取请求头/请求参数

我们知道浏览器发送请求时会带有请求头和请求参数给服务器,而服务器端的JSP和Servlet就会解析请求头和请求参数。

而JSP和Servlet就是通过request对象来获取请求。

以下是一些常用方法:

获取请求头:

方法描述
String getHeader(String name)获取指定请求头的值。
int getIntHeader(String name)获取指定请求头的值,并将其转换为整数。
Enumeration getHeaderNames()获取所有请求头的名
Enumeration getHeaders(String naem)获取指定请求头的多个值

获取请求参数:

方法描述
String getParameter(String paramName)获取指定请求参数的值(客户端传递给服务器的参数,常常是表单元素,使用此方法的白表单元素要有name属性)
String[] getParameterValues获取指定参数的所有值
Map getParameterMap()获取所有请求参数名和请求参数的值,返回一个Map对象
Enumeration getParameterNames()获取所有请求参数名

我们一般把请求分为两种:get请求和post请求。

简单来说,get请求就是在浏览器直接输入地址,然后按下回车发送的请求。使用get请求带有的参数在地址栏内可以被看见,所以我们一般不在表单中使用get请求,因为这是不安全的。而post请求的请求参数被封装在HTML HEADER中,所以我们常使用post请求来提交表单,这样可以隐藏重要信息,比较安全。

使用get请求携带参数的格式:

http://wwwbaidu.com?参数1=值&参数2=值&参数3=值

以“?”开始后面是参数,以键值对为一组,参数名=参数值。

使用post请求格式

<form method="post" action="index.jsp">
  
</form>

把method设为post,action的值即为表单元素提交到哪里去。

在post请求中如果参数为中文,则应该先使用setCharacterEncoding(“utf-8”)来设置编码字符集,否则可能会出现乱码。

在get请求中携带中文参数解析比较麻烦,大多不会出现这种情况,如果出现,可以使用java.net.URLDecoder类和java.net.URLEncoder类来解决。

1.1.2 操作Request范围内的属性

操作Request范围内的属性需要使用以下方法:

方法描述
setAttribute(String attName ,Object attValue)将attName设置为request范围的属性,且属性值为attValue
Object getAttribute(String attrName)获取attrName属性

1.1.3 代替forward和include动作指令

代替forward和include动作指令需要借助于getRequestDispatcher(String path)方法(path路径必须以斜线开头)。该方法会返回一个RequestDispatcher对象。

而RequestDispatcher对象又包含有forward和include方法。

具体使用如下:

<%--将本页面转发到1.jsp页面--%>
request.getRequestDispatcher("/1.jsp").forward(request,response);
<%--1.jsp页面嵌入到本页面中--%>
request.getRequestDispatcher("/1.jsp").include(request,response);

小结

以上就是JSP脚本中的9个内置对象中的request对象的一些介绍,希望能对读者有所帮助,如有不正之处,欢迎留言指正。