1、传递的请求参数如何获取

  

          GET方式: 参数放在URI后面

POST方式: 参数放在实体内容中

    核心的API:

request.getParameter("参数名");  根据参数名获取参数值(注意,只能获取一个值的参数)

request.getParameterValue("参数名“);根据参数名获取参数值(可以获取多个值的参数)

request.getParameterNames();   获取所有参数名称列表

2、请求参数的编码问题

     修改post方式的参数编码

      request.setCharacterEncoding("utf-8");

      修改get方式的参数编码

      手动解码:String name =new String(name.getBytes(iso-8859-1"),"utf-8");

 相关代码实例

1、index.html

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>

  <body>
    <form action="/HttpTest/HttpTest" method="get">
        用户名:<input type="text" name="name"></br>
        密  码  :<input type="text" name="password"></br>
        性  别  :
        <input type="radio" name="sex" value="男"/>男
        <input type="radio" name="sex" value="女"/>女<br/>
        籍  贯 :<select name="jiguan">
            <option value="广东">广东</option>
            <option value="湖北">湖北</option>
            <option value="湖南">湖南</option>
        </select><br/>
        爱  好 :
        <input type="checkbox" name="habit" value="篮球"/>篮球
        <input type="checkbox" name="habit" value="足球"/>足球
        <input type="checkbox" name="habit" value="棒球"/>棒球<br/>
        <textarea rows="5" cols="10" name="info"></textarea><br/>
        <input type="hidden" name="id" value="001">
        <input type="submit" value="提交">
    </form>
    </hr>
    </br>
    </br>
    <form action="/HttpTest/HttpTest" method="POST">
        用户名:<input type="text" name="name"></br>
        密  码  :<input type="text" name="password"></br>
        性  别  :
        <input type="radio" name="sex" value="男"/>男
        <input type="radio" name="sex" value="女"/>女<br/>
        籍  贯 :<select name="jiguan">
            <option value="广东">广东</option>
            <option value="湖北">湖北</option>
            <option value="湖南">湖南</option>
        </select><br/>
        爱  好 :
        <input type="checkbox" name="habit" value="篮球"/>篮球
        <input type="checkbox" name="habit" value="足球"/>足球
        <input type="checkbox" name="habit" value="棒球"/>棒球<br/>
        <textarea rows="5" cols="10" name="info"></textarea><br/>
        <input type="hidden" name="id" value="001">
        <input type="submit" value="提交">
    </form>
  </body>
</html>

2、Servlet代码

package com.gqx.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HttpTest extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /**
         * 设置查询参数编码
         * 该方法只能对请求实体内容的数据编码起作用。post提交的数据在试题内容中,所以该方法对post有效
         * get方法是将参数昂在uri的后面,所以对get方式无效,所以要对get重新编码
         */
        request.setCharacterEncoding("utf-8");
        Enumeration<String> names=request.getParameterNames();
        while (names.hasMoreElements()) {

            String string = (String) names.nextElement();
            if (string.equals("habit")) {
                String[] habit=request.getParameterValues("habit");
                System.out.print(string+":");
                for (String string1 : habit) {
                    if (request.getMethod().equals("GET")) {
                        //手动重新编码(iso-8859-1字符串——>utf-8字符串)
                        string1=new String(string1.getBytes("iso-8859-1"),"utf-8");
                    }
                    System.out.print(string1+" ");
                }
                System.out.println();
            }else {

                String value=request.getParameter(string);
                if (request.getMethod().equals("GET")) {
                    //手动重新编码(iso-8859-1字符串——>utf-8字符串)
                    value=new String(value.getBytes("iso-8859-1"),"utf-8");
                }
                System.out.println(string+":"+value);
            }
        }
    }
    //接收post方式的请求
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

运行截图

随机推荐

  1. python 面向对象 class 老男孩选课系统

    要求:1. 创建北京.上海 2 所学校 class2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含,周期,价格,通过学校创建课 ...

  2. maya2105 - windows8 - numpy/scipy

    To compile numpy, create a site.cfg file in numpy's source directory with the following or similar c ...

  3. C#中指针使用总结

    C#为了类型安全,默认并不支持指针.但是也并不是说C#不支持指针,我们可以使用unsafe关键词,开启不安全代码(unsafe code)开发模式.在不安全模式下,我们可以直接操作内存,这样就可以使用 ...

  4. C语言-06复杂数据类型-02字符串

    #include <stdio.h> int main() { //char name[] = {'i', 't', 'c', 'H', 's', 't', '\0'}; char nam ...

  5. Docker入门

    -----------------------------------------Docker入门教程(一)介绍Docker入门教程(二)命令Docker入门教程(三)DockerFileDocker ...

  6. 基于 libpcap库的sniffer程序

    基于 libpcap库的sniffer程序 Libpcap库是WireSharek和Tcpdump抓包程序的基础,利用libcap我们自己也可以实现自己的抓包程序,在网络上实时抓包分析,或者利用处理的 ...

  7. UML类图的6中关系

    引用自: http://blog.csdn.net/tianhai110/article/details/6339565 UML类图分为如下四种关系: 1.  泛化 (Generalization)  ...

  8. Desert King

    poj2728:http://poj.org/problem?id=2728 题意:给你n的点,每一个点会有一个坐标(x,y),然后还有一个z值,现在上你求一棵生成树,是的这棵生成树的所有边的费用/所 ...

  9. ANDROID_MARS学习笔记_S04_006_用获取access_token,access_token_secrect

    一.代码流程 1.MainActivity会开启PrepareRequestTokenActivity 2.PrepareRequestTokenActivity会根据配置文件的CONSUMER_KE ...

  10. 解读30个提高Web程序执行效率的好经验

    其实微博是个好东西,关注一些技术博主之后,你不用再逛好多论坛了,因为一些很好的文章微博会告诉你,最近看到酷勤网推荐的一篇文章<30个提高Web程序执行效率的好经验>,文章写得不错,提到一些 ...