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。

<!DOCTYPE html>
<html>
<head>
<meta charset="GB2312">
<title>测试接收数据</title>
</head>
<body>
<form action="GetParam" method="get">
发送的内容:<br><br>
框A:<input type="text" name="text">
框B:<input type="text" name="text">
<br><br>
<input name="checkbox" type="checkbox" value="a">
选项一
<br>
<input name="checkbox" type="checkbox" value="b">
选项二
<br><br>
<select name="select">
<option value="1">1</option>
<option value="2">2</option>
</select>
<br><br>
<input type="submit" value="传送">
</form>
</body>
</html>
package com.ahabest.param;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GetParamServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=gb2312");
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>asss</title>");
        out.println("</head>");
        out.println("<body>");
        req.setCharacterEncoding("gb2312");
        String value = null;
        value = req.getParameter("text");
        out.println(value);
        out.println("<br>");
        value = req.getParameter("checkbox");
        out.println(value);
        out.println("<br>");
        value = req.getParameter("select");
        out.println(value);
        out.println("=====================================<br>");
        // 通过getParameterValues()获得的参数
        out.println("getParameterValues()获得的参数<br>");
        // 获得name="txt"的表单控件的值
        String[] paramValue = null;
        paramValue = req.getParameterValues("text");
        if (null != paramValue) {
            out.print("输入框内输入的值:");
            for (int i = 0; i < paramValue.length; i++) {
                out.print(paramValue[i]);
                out.print("&nbsp;&nbsp;");
            }
        }
        out.println("<br>");
        // 获得name="chk"的表单控件的值
        paramValue = req.getParameterValues("checkbox");
        if (null != paramValue) {
            out.print("多选框选中的值:");
            for (int i = 0; i < paramValue.length; i++) {
                out.print(paramValue[i]);
                out.print("&nbsp;&nbsp;");
            }
        }
        out.println("<br>");
        // 获得name="sel"的表单控件的值
        paramValue = req.getParameterValues("select");
        if (null != paramValue) {
            out.print("下拉框选中的值:");
            for (int i = 0; i < paramValue.length; i++) {
                out.print(paramValue[i]);
                out.print("&nbsp;&nbsp;");
            }
        }
        out.println("<br>");
        out.println("=====================================<br>");
        // 通过getParameterMap()获得的参数
        out.println("getParameterMap()获得的参数<br>");
        // 获得参数的Map
        Map paramMap = req.getParameterMap();
        Object o = null;
        String[] val = null;
        // 循环Map的key
        for (Iterator it = paramMap.keySet()
.iterator(); it.hasNext();) {
            o = it.next();
            out.print(o);
            out.print(":");
            // 获得key对应的value
            val = (String[]) paramMap.get(o);
            if (null != val) {
                for (int j = 0; j < val.length; j++) {
                    out.print(val[j]);
                    out.print("&nbsp;&nbsp;");
                }
            }
        }
        out.println("<br>");
        out.println("=====================================<br>");
        // 通过getParameterNames()获得参数的名称
        out.println("getParameterNames()获得参数的名称<br>");
        // 获得参数名称枚举
        Enumeration en = req.getParameterNames();
        for (;en.hasMoreElements();) {
            o = en.nextElement();
            out.print(o);
            out.print("&nbsp;&nbsp;");
        }
        out.println("<br>");
        out.println("=====================================<br>");
        out.println("</body>");
        out.println("</html>");
    }
}
<?xml version="1.0" encoding="gb2312"?>
<web-app>
    <welcome-file-list>
        <welcome-file>sendparam.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>GetParamServlet</servlet-name>
        <servlet-class>com.ahabest.param.GetParamServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetParamServlet</servlet-name>
        <url-pattern>/GetParam</url-pattern>
    </servlet-mapping>
</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. 【Android】Android输入子系统【转】

    本文转载自:https://www.cnblogs.com/lcw/p/3506110.html Linux输入子系统回顾 1:为什么要回顾linux输入子系统?这个问题后面自然就知道了 1.linu ...

  2. 【CEOI2002】【Poj 1038】Bugs Integrated, Inc.

    http://poj.org/problem?id=1038 发一下中文题面(今天考试直接被改了): 生记茶餐厅由于受杀人事件的影响,生意日渐冷清,不得不暂时歇业.四喜赋闲在家,整天抱着零食看电视,在 ...

  3. 训练深度学习网络时候,出现Nan是什么原因,怎么才能避免?——我自己是因为data有nan的坏数据,clear下解决

    from:https://www.zhihu.com/question/49346370   Harick     梯度爆炸了吧. 我的解决办法一般以下几条:1.数据归一化(减均值,除方差,或者加入n ...

  4. mac ox终端显示 bogon的问题

    mac终端显示如果正常应该是电脑名称(偏好设置-共享)的,但是细心的我们会发现,当电脑换了网络环境之后,可能就会出现终端上显示为主机名为:bogon,一查bogon这个单词是虚拟.虚伪的意思.     ...

  5. Java 反射 —— 运行时的类型信息

    1. 反射机制的由来 RTTI 机制可以告知某个对象的确切类型,但有一个前提,该类型在编译时必须已知(编译器在编译时打开和检查 .class 文件以获取类型信息).似乎是个很宽松的限制,但假如你获取了 ...

  6. 30. extjs getEl方法 怎么用

    转自:https://blog.csdn.net/evilcry2012/article/details/50586861 2014-10-27 11:57 提问者采纳   getEl = compo ...

  7. 什么是javascript闭包?

    在我们开发中,也经常使用到闭包,但当有人问什么是闭包,就会可能说不上来.那就谈谈一些基本的: 一.理解闭包的概念, 简单说当function里嵌套function时,内部的function可以访问外部 ...

  8. 引水入城 2010年NOIP全国联赛提高组(bfs+贪心)

    1066 引水入城 2010年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在一个遥远 ...

  9. 给独立搭建的博客启用https的过程

    申请SSL证书 我自己独立搭建的博客部署在阿里云服务器上,因此我就先搜索阿里云启用https的方法,网上有比较详细的讲解,在此提供一个参考网址: https://blog.csdn.net/csluc ...

  10. 实数类型c++

    数据类型 定义标识符 数值范围 占字节数 有效位数 单精度浮点数 float -3.4E+38-3.4E+38 4(32位) 6-7位 双精度浮点数 double -1.7E+308-1.7E+308 ...