一、HttpServletRequest

1.1、Request常用方法

1、获取客户机

  • getRequestURL方法返回客户端发出请求时的完整URL。
  • getRequestURI方法返回请求行中的资源名部分。
  • getQueryString 方法返回请求行中的参数部分。
  • getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
  • getRemoteAddr方法返回发出请求的客户机的IP地址。
  • getRemoteHost方法返回发出请求的客户机的完整主机名。
  • getRemotePort方法返回客户机所使用的网络端口号。
  • getLocalAddr方法返回WEB服务器的IP地址。
  • getLocalName方法返回WEB服务器的主机名。

运行结果如下:

2、获得客户机请求头

  • getHeader(string name)方法:String
  • getHeaders(String name)方法:Enumeration
  • getHeaderNames()方法

通过Request对象获取请求头信息

运行的结果如下:

3、获取客户机请求参数

  • getParameter(String)方法(常用)
  • getParameterValues(String name)方法(常用)
  • getParameterNames()方法(不常用)
  • getParameterMap()方法(编写框架时常用)

a) 表单数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>Html的Form表单元素</title>
</head><body><fieldset style="width:500px;"><legend>Html的Form表单元素</legend><!--form表单的action属性规定当提交表单时,向何处发送表单数据,method属性指明表单的提交方式,分为get和post,默认为get--><form action="${pageContext.request.contextPath}/servlet/RequestDemo3" method="post"><!--输入文本框,SIZE表示显示长度,maxlength表示最多输入长度-->编&nbsp;&nbsp;号(文本框):<input type="text" name="userid" value="NO." size="2" maxlength="2"><br><!--输入文本框,通过value指定其显示的默认值-->用户名(文本框):<input type="text" name="username" value="请输入用户名"><br><!--密码框,其中所有输入的内容都以密文的形式显示-->密&nbsp;&nbsp;码(密码框):<!--&nbsp;表示的是一个空格--><input type="password" name="userpass" value="请输入密码"><br><!--单选按钮,通过checked指定默认选中,名称必须一样,其中value为真正需要的内容-->性&nbsp;&nbsp;别(单选框):<input type="radio" name="sex" value="男" checked>男 <input type="radio" name="sex" value="女">女<br><!--下拉列表框,通过<option>元素指定下拉的选项-->部&nbsp;&nbsp;门(下拉框):<select name="dept"><option value="技术部">技术部</option><option value="销售部" SELECTED>销售部</option><option value="财务部">财务部</option></select><br><!--复选框,可以同时选择多个选项,名称必须一样,其中value为真正需要的内容-->兴&nbsp;&nbsp;趣(复选框): <input type="checkbox" name="inst" value="唱歌">唱歌 <input type="checkbox" name="inst" value="游泳">游泳 <input type="checkbox" name="inst" value="跳舞">跳舞 <input type="checkbox" name="inst" value="编程" checked>编程 <input type="checkbox" name="inst" value="上网">上网<br><!--大文本输入框,宽度为34列,高度为5行-->说&nbsp;&nbsp;明(文本域):<textarea name="note" cols="34" rows="5"></textarea><br><!--隐藏域,在页面上无法看到,专门用来传递参数或者保存参数--><input type="hidden" name="hiddenField" value="hiddenvalue"/><!--提交表单按钮,当点击提交后,所有填写的表单内容都会被传输到服务器端--><input type="submit" value="提交(提交按钮)"><!--重置表单按钮,当点击重置后,所有表单恢复原始显示内容--><input type="reset" value="重置(重置按钮)"></form></fieldset></body>
</html>

b) 在Form表单中填写数据,然后提交到RequestDemo03这个Servlet进行处理,填写的表单数据如下:

c) 在服务器端使用getParameter方法和getParameterValues方法接收表单参数,代码如下:

public class RequestDemo3 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String userid = request.getParameter("userid");String username = request.getParameter("username");String password = request.getParameter("userpass");String sex = request.getParameter("sex");String dept = request.getParameter("dept");// 获取选中的兴趣,因为可以选中多个值,所以获取到的值是一个字符串数组String[] insts = request.getParameterValues("inst");String note = request.getParameter("note");// 获取隐藏域的内容String hiddenField = request.getParameter("hiddenField");// 获取数组数据的技巧,可以避免insts数组为null时引发的空指针异常错误!String instStr="";for (int i = 0; insts != null && i < insts.length; i++) {if (i == insts.length-1) {instStr+=insts[i];}else {instStr+=insts[i]+",";}}// 输出表单数据String htmlStr = "<table>" +"<tr><td>填写的编号:</td><td>{0}</td></tr>" +"<tr><td>填写的用户名:</td><td>{1}</td></tr>" +"<tr><td>填写的密码:</td><td>{2}</td></tr>" +"<tr><td>选中的性别:</td><td>{3}</td></tr>" +"<tr><td>选中的部门:</td><td>{4}</td></tr>" +"<tr><td>选中的兴趣:</td><td>{5}</td></tr>" +"<tr><td>填写的说明:</td><td>{6}</td></tr>" +"<tr><td>隐藏域的内容:</td><td>{7}</td></tr>" + "</table>";htmlStr = MessageFormat.format(htmlStr, userid, username, password, sex, dept, instStr, note, hiddenField);response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");response.getWriter().write(htmlStr);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}

运行结果如下:

如果,在服务器端使用getParameterNames方法接收表单参数,代码如下:

很明显,inst处的参数没有接收全,可以在服务器端使用getParameterMap方法接收表单参数,代码如下:

转载于:https://www.cnblogs.com/pengjingya/p/5510998.html

05、HttpServletRequest相关推荐

  1. 【Kubernetes 企业项目实战】05、基于云原生分布式存储 Ceph 实现 K8s 数据持久化(下)

    目录 一.K8s 对接 ceph rbd 实现数据持久化 1.1 k8s 安装 ceph 1.2 创建 pod 挂载 ceph rbd 二.基于 ceph rbd 生成 pv 2.1 创建 ceph- ...

  2. 05、Python中转义字符与字符串

    05.Python中转义字符与字符串操作函数 基于PyCharm 参考Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析 1.转义字符 2.字符串 单引号字符串: word ...

  3. 04、05、06三年盘点:为了生命的意义--Surfer(新的一学期继续更新。。。。谢谢 ^_^)

    04.05.06三年盘点:为了生命的意义--Surfer 朋友说我Blog里没什么自己的东西,我说没时间这理由像搪塞,其实主要应该不太习惯在这里写什么,另一个原因是觉得没资格.其实我一直打算每天记日记 ...

  4. Servlet API 详解(HttpServlet、HttpServletRequest、HttpServletResponse)

    系列文章目录 Servlet 的运行原理_crazy_xieyi的博客-CSDN博客 如何创建一个Servlet项目(Maven)?_crazy_xieyi的博客-CSDN博客 Tomcat下载.安装 ...

  5. 05、WITNESS-INDISTINGUISHABILITY and SZK ARGUMENTS for NP——Alone Rosen【witness的不可区分性以及对于NP问题的SZK论证】

    05.WITNESS-INDISTINGUISHABILITY and SZK ARGUMENTS for NP--Alone Rosen[witness的不可区分性以及对于NP问题的SZK论证] 这 ...

  6. 【MAPBOX基础功能】05、底图切换 - mapbox切换高德、天地图、bingmap等底图

    前言 官网指引,生成accesstoken,下载相关依赖请翻阅[https://blog.csdn.net/weixin_44402694/article/details/125414381?spm= ...

  7. Day01-C#学习:05、转义符号及算术运算符

    转义符号 01.\n表示换行 Console.WriteLine("今天是个好日子\n适合睡觉");// 02.\"表示一个英文半角符号Console.WriteLine ...

  8. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】05、Shiro集成

    1.POM文件中加入Shiro和fastJSON依赖 <dependency><groupId>org.apache.shiro</groupId><arti ...

  9. 【servlet】HttpSession、HttpServletRequest实现数据共享、监听器、过滤器

    HttpSession接口(一) 如果两个Servlet来自于同一个网站.并且为同一个浏览器/用户提供服务, 此时借助于HttpSession对象进行数据共享 开发人员习惯于将HttpSession接 ...

最新文章

  1. VC manifest
  2. WISMO模块GPRS上网设置的过程
  3. VUE的本地应用-V- if
  4. PTA L1_002 打印沙漏(C语言)
  5. ArcGIS中生成蜂窝多边形算法解析
  6. dll文件的c++制作
  7. 设置TextView文字
  8. Assigning to Classes CodeForces - 1300B
  9. 一招搞定css页面布局
  10. winform B窗體調用A窗體的DATAGRIDVIEW刷新
  11. 疯狂ios讲义之实例:通过旋转手势旋转图片
  12. onpropertychange
  13. Anki显示音标问题
  14. typescript中this报错
  15. 单号自动识别查询 支持一键复制导出
  16. hdu--6045 Is Derek Lying
  17. Socks代理是什么意思?有什么用?
  18. 拒绝低效的知识管理,从选择一款好的知识库工具开始
  19. TSL2561 光照强度传感器应用笔记
  20. Python实现熵值法确定权重

热门文章

  1. Snapshot Volume 操作 - 每天5分钟玩转 OpenStack(58)
  2. Linux用户环境变量
  3. openSUSE 11.2 中文输入法 SCIM 安装
  4. CentOS查看CPU、内存、网络流量和磁盘 I/O
  5. 维护MMO项目的随想
  6. linux apt-get proxy
  7. 如何在XAF中显示自定义窗体和控件
  8. C#面向对象(一) 封装
  9. Qt 提取文件(exe, dll等)中的图标icon
  10. PowerPath/VE:EMC夯实虚拟环境的独门武器