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. https://security.stackexchange.com/questions/68405/what-is-tmunblock-cgi-and-can-it-be-exploited-by-shellshock-linux-apache-w

    hndUnblock.cgi   Line #1124 : 187.38.233.45 - - [15/Jan/2018:21:36:45 +0800] "GET /hndUnblock.c ...

  2. Robot Framework 怎样写好Test Case

    1.介绍 这是一个关于如何用Robot Framework写好Test Case的高层次的指导准则 怎样实际的与系统进行交互不在此文档范围内 最重要的准则是使测试用例尽可能的让熟悉此领域的人觉得简单易 ...

  3. 123 c#调用oracle存储过程返回数据集 --通过oracle存储过程返回数据集

    c#调用oracle存储过程返回数据集 2008-12-20 10:59:57|  分类: net|字号 订阅   CREATE OR REPLACE PACKAGE pkg_tableTypeIS  ...

  4. 洛谷P3690 LCT模板

    题目:https://www.luogu.org/problemnew/show/P3690 自己竟然从没有钻研过LCT上的连通性问题! 于是被最后一个点卡了,似乎因为 find 函数只能找出连通性而 ...

  5. SQL 存储过程语句拼接愁人的时间类型

    http://www.cnblogs.com/yrup/p/4201329.html 解决方法: Select CONVERT(varchar(100), GETDATE(), 25): 2006-0 ...

  6. bzoj 1016: [JSOI2008]最小生成树计数【dfs+克鲁斯卡尔】

    有一个性质就是组成最小生成树总边权值的若干边权总是相等的 这意味着按边权排序后在权值相同的一段区间内的边能被选入最小生成树的条数是固定的 所以先随便求一个最小生成树,把每段的入选边数记录下来 然后对于 ...

  7. web自动化测试—selenium游览器多窗口操作

    # coding=utf-8'''web游览器多窗口操作: 获取当前窗口句柄 current_window_handle 获取所有窗口句柄 window_handles 切换窗口 switch_to_ ...

  8. Syntax error on token ";", , expected 错误

    eclipse错误提示如图: 错误代码如图: 一开始百思不得其解,后来终于发现问题的原因所在,java中变量的声明可以不在方法中,但语句只能出现在方法中,可以再声明变量的时候就赋初值,但如果要单独赋值 ...

  9. 乐搏讲自动化测试-Python发展背景(1)

    相信小伙伴们都知道,随着软件测试行业的发展和进步自动化测试已经成为必然.在竞争日益激烈的市场环境中也是你升职加薪的利器. 所以,小编决定从今天起!将要系统.连续.高质量的持续更新「整套自动化测试」文章 ...

  10. yii int

    @echo off rem ------------------------------------------------------------- rem Yii command line ini ...