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. tf.float32 implicity

    简介  |  TensorFlow https://tensorflow.google.cn/programmers_guide/low_level_intro 我们来构建一个简单的计算图.最基本的指 ...

  2. Application Warm-up Module IIS7.5 也有Warm Up功能,让ASP.NET 第一次Request不变慢

    Application Warm-up Module: 應用程式的暖機代理人 http://www.microsoft.com/taiwan/technet/iis/expand/Applicatio ...

  3. 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps

    [Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...

  4. python datatime日期和时间值模块

    datetime.time():是一个时间类,这个类接受4个参数,分别代表时,分,秒,毫秒.参数的默认值是为0 #!/usr/bin/env python #coding:utf8 import da ...

  5. JeePlus:Maven 安装配置

    ylbtech-JeePlus:Maven 安装配置 1.返回顶部 1. Maven 安装配置 1 Maven 由于Maven依赖Java运行环境,因此使用Maven之前需要配置Java的运行环境.下 ...

  6. 21. Ext中表格自适应高度

    转自:https://blog.csdn.net/happy492/article/details/6401099 1. 下面的代码中width和height的初始值为tab的开始大小,当浏览器窗口变 ...

  7. 17_activity任务栈和启动模式

    夜神安卓模拟器. 如果从第一个页面开启另外一个页面,只要不去调finish()方法咱们上一个页面它是不会退出的,它会留在底下.留在底下的话它设计了这样一个模式就是为了维护一个比较好的用户体验,你的仪器 ...

  8. unable to unroll loop 报错

    unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations) 原本代码 f ...

  9. 10.11NOIP模拟题(3)

    /* 可以看出,对于一段区间[L,R]如果统计了答案 若a[L]<a[R],那么当右端点往左移时答案不会更优,a[R]>a[L]同理 所以两个指针分别从头尾往中间扫那边小移哪边即可. */ ...

  10. 设计模式 | 组合模式(composite)

    定义: 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 结构:(书中图,侵删) 一个Component接口:定义统一的方法 若干树枝(Com ...