zoukankan      html  css  js  c++  java
  • 1.3(学习笔记)Servlet获取表单数据

     一、Servlet获取表单数据

      表单提交数据经由Servlet处理,返回一个处理结果显示在页面上,

      那么如何获取表单提交的参数进出相应的处理呢?

      主要用到以下方法:
      String  getParameter("paramName")

      以字符串形式返回请求参数对应的值,如果参数不存在返回null。

      此处的参数名是指表达中提交属性控件的name属性。

      例如:

        

      在这个表单中username后面是一个输入框,paramName就是name=“username”中的“name”,

      使用getParameter("username")获取的值就是输入到输入框中的内容。

      

      String[]  getParameterValues("paramName")

      返回包含给定请求参数所有值的字符串数组,如果参数不存在返回null,

      如果参数只有一个值,则数组长度为1.

      例如:

      

      爱好是一个多选项,这里设置的是复选框(CheckBox),而这个复选框的name是相同的,

      也就是说一个参数名可能对应多个值,这时就需要采用getParameterVlaues("like"),来获取

      所有被选中的复选框对应的value。

      Enumeration request.getParameterNames();

      返回此请求中所有的参数名称。如果没有参数返回空枚举。

      例如:

      

      使用getParameterNames()就可以获取当前请求中所有参数的名称(username、pwd、sex、like)

      获取了参数名称,后续就可以通过参数名获取对应的值。

      

    二、例子

      

    <!DOCTYPE html>
    <!-- http://localhost:8080/TestServlet/Test.html -->
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <!--表单提交调用servlet  -->
        <!-- http://localhost:8080/TestServlet/TestServlet.html -->
        <form name = f1 action = "/TestServlet/TestServlet.html" method = "post">
            username:<input type = "text" name = "username"></input><br>
            pwd:<input type = "password" name = "pwd"></input><br>
            性别:<input type = "radio" name = "sex" value = "0"><input type = "radio" name = "sex" value = "1"><br>
            爱好:<input type = "checkbox" name = "like" value = "1">篮球
                <input type = "checkbox" name = "like" value = "2">足球<br>
            <input type = "submit" value = "提交">
        </form>
        
    </body>
    </html>
    import java.io.IOException;
    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 TestServlet extends HttpServlet{
    //    private PrintStream out = System.out;
        private String initParam = null;
        private String contextParam = null;
        
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //获取输入的用户名。
            //String username = getParameter("username");
            PrintWriter out = resp.getWriter();
            //获取所有参数名
            Enumeration names = req.getParameterNames();
            //打印html头部代码
            printHtmlPage(out,true);
            //绘制html表格显示获取参数
            out.println("<table border = 2>");
            //遍历包含所有参数名的枚举对象
            while(names.hasMoreElements()) {//判断是否有更多元素
                String name = (String)names.nextElement();//获取当前枚举参数。
                //根据当前参数名获取对应值
                String[] values = req.getParameterValues(name);
                //输出参数名
                out.println("<tr>");
                out.print("<td>");
                out.print(name);
                out.print("</td>
    ");
                //输出参数名所对应的值
                for(int i = 0; i < values.length; i++) {
                    out.print("<td>");
                    out.print(values[i]);
                    out.print("</td>
    ");
                }
                out.println("</tr>");
            }
            out.println("</table>");
            //打印html尾部代码
            printHtmlPage(out,false);
        }
        
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doGet(req, resp);
        }
        
        //打印HTML页面,head为True打印HTML头部代码,为false打印尾部HTML代码
        private void printHtmlPage(PrintWriter out, boolean head) {
            if(head) {
                out.println("<!DOCTYPE html>
    " + 
                        "<!-- http://localhost:8080/TestServlet/Test.html -->
    " + 
                        "<html>
    " + 
                        "<head>
    " + 
                        "<meta charset="UTF-8">
    " + 
                        "<title>Insert title here</title>
    " + 
                        "</head>
    " + 
                        "<body>");
            }else {
                out.println("</body>
    " + 
                        "</html>");
            }
        }
    }

          

     在Servlet中对获取的值(0,1,2等)结合参数名称进行处理

     可以还原出选项所代表的中文信息。

  • 相关阅读:
    洛谷P2737 [USACO4.1]麦香牛块Beef McNuggets(DP,裴蜀定理)
    洛谷P4924 魔法少女小Scarlet
    洛谷P3912 素数个数
    洛谷P4016 负载平衡问题(费用流)
    洛谷P2736 [USACO3.4]“破锣摇滚”乐队 Raucous Rockers
    母函数(生成函数)
    洛谷P4086 [USACO17DEC]My Cow Ate My Homework S
    洛谷P5097 [USACO04OPEN]Cave Cows 2(ST表)
    洛谷P2713 罗马游戏(左偏树)
    洛谷P1260 工程规划
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/10292241.html
Copyright © 2011-2022 走看看