Servlet API


Servlet是实现javax.servlet.Servlet接口的对象。大多数Servlet通过从GenericServlet或HttpServlet类进行扩展来实现。Servlet API包含于两个包中,即javax.servlet和javax.servlet.http。

javax.servlet

接口

ServletConfig

定义了在Servlet初始化的过程中由Servlet容器传递给Servlet的配置信息对象

ServletContext

定义Servlet使用的方法以获取其容器的信息

ServletRequest

定义一个对象封装客户向Servlet的请求信息

ServletResponse

定义一个对象辅助Servlet将请求的响应信息发送给客户端

Servlet

定义所有Servlet必须实现的方法

ServletInputStream

定义名为readLine()的方法,从客户端 读取二进制数据

ServletOutputStream

向客户端发送二进制数据

GenericServlet

抽象类,定义一个通用的、独立于底层协议的Servlet

 javax.servlet.http

接口

HttpSession

用于标识客户端并存储有关客户端的信息

HttpSessionAttributeListener

这个侦听接口用于获取会话的属性列表的改变的通知

HttpServletRequest

扩展ServletRequest接口,为HTTP Servlet提供HTTP请求信息

HttpServletResponse

扩展ServletResponse接口,提供HTTP特定的发送响应的功能

HttpServlet

扩展了GenericServlet的抽象类,用于扩展创建Http Servlet

Cookie

创建一个Cookie,用于存储Servlet发送给客户端的信息

HttpServletRequest获得参数名和参数值的方法

getParameter(String key)

返回一个字符串,获得name和key一样的表单控件的数据,如果有重复的name,则返回第一个的值。

getParameterValues(String key)

返回一个字符串数组,获得name和key一样的表单控件的数据,但相同name的控件会有多个,如同名的多个checkbox等。

getParameterMap()

返回一个包含所有参数的Map,为key-String[]模式,即,key是表单控件的name,同时,为了防止有重复name的控件存在,每个name对应的值是一个字符串数组。

getParameterNames()

返回一个枚举类型值,返回所有表单中所有表看控件的name。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="GB2312">
  5. <title>测试接收数据</title>
  6. </head>
  7. <body>
  8. <form action="GetParam" method="get">
  9. 发送的内容:<br><br>
  10. 框A:<input type="text" name="text">
  11. 框B:<input type="text" name="text">
  12. <br><br>
  13. <input name="checkbox" type="checkbox" value="a">
  14. 选项一
  15. <br>
  16. <input name="checkbox" type="checkbox" value="b">
  17. 选项二
  18. <br><br>
  19. <select name="select">
  20. <option value="1">1</option>
  21. <option value="2">2</option>
  22. </select>
  23. <br><br>
  24. <input type="submit" value="传送">
  25. </form>
  26. </body>
  27. </html>
  1. package com.ahabest.param;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.util.Enumeration;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. public class GetParamServlet extends HttpServlet {
  12. private static final long serialVersionUID = 1L;
  13. @Override
  14. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  15. resp.setContentType("text/html;charset=gb2312");
  16. PrintWriter out = resp.getWriter();
  17. out.println("<html>");
  18. out.println("<head>");
  19. out.println("<title>asss</title>");
  20. out.println("</head>");
  21. out.println("<body>");
  22. req.setCharacterEncoding("gb2312");
  23. String value = null;
  24. value = req.getParameter("text");
  25. out.println(value);
  26. out.println("<br>");
  27. value = req.getParameter("checkbox");
  28. out.println(value);
  29. out.println("<br>");
  30. value = req.getParameter("select");
  31. out.println(value);
  32. out.println("=====================================<br>");
  33. // 通过getParameterValues()获得的参数
  34. out.println("getParameterValues()获得的参数<br>");
  35. // 获得name="txt"的表单控件的值
  36. String[] paramValue = null;
  37. paramValue = req.getParameterValues("text");
  38. if (null != paramValue) {
  39. out.print("输入框内输入的值:");
  40. for (int i = 0; i < paramValue.length; i++) {
  41. out.print(paramValue[i]);
  42. out.print("&nbsp;&nbsp;");
  43. }
  44. }
  45. out.println("<br>");
  46. // 获得name="chk"的表单控件的值
  47. paramValue = req.getParameterValues("checkbox");
  48. if (null != paramValue) {
  49. out.print("多选框选中的值:");
  50. for (int i = 0; i < paramValue.length; i++) {
  51. out.print(paramValue[i]);
  52. out.print("&nbsp;&nbsp;");
  53. }
  54. }
  55. out.println("<br>");
  56. // 获得name="sel"的表单控件的值
  57. paramValue = req.getParameterValues("select");
  58. if (null != paramValue) {
  59. out.print("下拉框选中的值:");
  60. for (int i = 0; i < paramValue.length; i++) {
  61. out.print(paramValue[i]);
  62. out.print("&nbsp;&nbsp;");
  63. }
  64. }
  65. out.println("<br>");
  66. out.println("=====================================<br>");
  67. // 通过getParameterMap()获得的参数
  68. out.println("getParameterMap()获得的参数<br>");
  69. // 获得参数的Map
  70. Map paramMap = req.getParameterMap();
  71. Object o = null;
  72. String[] val = null;
  73. // 循环Map的key
  74. for (Iterator it = paramMap.keySet()
  75. .iterator(); it.hasNext();) {
  76. o = it.next();
  77. out.print(o);
  78. out.print(":");
  79. // 获得key对应的value
  80. val = (String[]) paramMap.get(o);
  81. if (null != val) {
  82. for (int j = 0; j < val.length; j++) {
  83. out.print(val[j]);
  84. out.print("&nbsp;&nbsp;");
  85. }
  86. }
  87. }
  88. out.println("<br>");
  89. out.println("=====================================<br>");
  90. // 通过getParameterNames()获得参数的名称
  91. out.println("getParameterNames()获得参数的名称<br>");
  92. // 获得参数名称枚举
  93. Enumeration en = req.getParameterNames();
  94. for (;en.hasMoreElements();) {
  95. o = en.nextElement();
  96. out.print(o);
  97. out.print("&nbsp;&nbsp;");
  98. }
  99. out.println("<br>");
  100. out.println("=====================================<br>");
  101. out.println("</body>");
  102. out.println("</html>");
  103. }
  104. }
  1. <?xml version="1.0" encoding="gb2312"?>
  2. <web-app>
  3. <welcome-file-list>
  4. <welcome-file>sendparam.html</welcome-file>
  5. </welcome-file-list>
  6. <servlet>
  7. <servlet-name>GetParamServlet</servlet-name>
  8. <servlet-class>com.ahabest.param.GetParamServlet</servlet-class>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>GetParamServlet</servlet-name>
  12. <url-pattern>/GetParam</url-pattern>
  13. </servlet-mapping>
  14. </web-app>

03Servlet API的更多相关文章

  1. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  2. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  3. 几个有趣的WEB设备API(二)

    浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...

  4. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  5. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  6. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  7. javascript的api设计原则

    前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...

  8. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  9. 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...

随机推荐

  1. VBS 操作Word

    VBS 操作Word   1.新建Word文档 '使用Add方法 Dim ObjWD,ObjDOC Set ObjWD=CreateObject("Word.application" ...

  2. ArcGIS中生成蜂窝多边形算法解析

    近来有不少同学.都有问我关于蜂窝多边形的问题.也就是正六边形,也就是以下这个东东: 一般的问答模式例如以下: 亲们问:ArcGIS里面那个工具能够做这个东东? 虾神答:额,没有原生的工具. 亲们问:那 ...

  3. Weex 和 React Native 的比较看这里

    写在前面 目前主流的应用大体分成三类:Native App, Web App, Hybrid App. Native App 特点: 性能好 完美的用户体验 开发成本高,无法跨平台 升级困难 (审核) ...

  4. 6 WPF控件

    WPF控件分类: 内容控件 标题内容控件 文本控件 列表控件 基于范围的控件 日期控件 控件类 控件是与用户交互的元素.控件可以获得焦点,能接受键盘或鼠标的输入. 所有控件的基类是System.Win ...

  5. JS如何遍历一个文件夹下的所有文件与目录(转)

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. 提交图片base64格式问题

    提交图片base64格式给后台,一定把data:image/png;base64,去掉,不然提交后后台返回的图片URL打开是一个破坏的图片.使用split("base64,")[1 ...

  7. 可视图linux--ubuntu的安装以及tool的安装

    1.下载ubuntu:http://cn.ubuntu.com/download/ 右键然后选择复制链接地址,然后将这个地址粘贴到迅雷,下载速度会比浏览器下载快. 2.创建虚拟机,安装ubuntu-- ...

  8. 【WIP_S2】递归

    创建: 2018/01/14    递归  定义  自己召唤自己  通用形式  if (基本情况A的处理) {     ...     return 值A  } else if (基本情况B的处理) ...

  9. bzoj 2442: [Usaco2011 Open]修剪草坪【单调栈】

    设f[i]为i不选的最小损失,转移是f[i]=f[j]+e[i[(i-j-1<=k) 因为f是单调不降的,所以f[j]显然越靠右越好因为i-j-1<=k的限制,所以单调栈需要弹栈 #inc ...

  10. 洛谷P3400 仓鼠窝(单调栈)

    P3400 仓鼠窝 题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子 ...