zoukankan      html  css  js  c++  java
  • Sevlet处理HTML表单

    表单<form>用于搜集不同类型的用户输入。可以轻松地将一个HTML表单从一个Servlet发送到浏览器,当用户提交表单时,在表单元素中输入的值就会被当做请求参数发送到服务器。

    request.getParameter(name) 中的name指的是表单中元素的name属性的值

    HTML输入域(文本域、隐藏域、密码域)或者文本区的值,会被当做字符串发送到服务器,空的输入域或者文本区会发送空字符串。因此,有输入域名称的,ServletRequest.getParameter(String name)绝对不会返回null

    包含多个值的<select>元素,使用ServeltRequest.getParameterValues(name)捕获选中的值,返回一个字符串数组

    复选框<input type="checkbox" />,选中的复选框会发送字符串“on”到服务器,未选中的复选框不向服务器发送任何东西,此时ServletRequest.getParameter(name)返回null

    单选框<input type="radio" />,将被选中按钮的值(即value属性的值)发送到服务器,若没有选中任何按钮,将没有内容发送到服务器,此时Servletrequest.getParameter(name)返回null

    如果同一个表单包含多个输入同名的元素(即name属性的值相同),那么所有值都会被提交,并且必须利用Servlet.getParameterValues(name)来捕获它们并返回一个字符串数组。若使用Servler.getParameter(name)将只会返回最后一个值。

    package app01b;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Enumeration;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class FormServlet
     */
    
    @WebServlet(name = "FormServlet", urlPatterns = {"/form"})
    public class FormServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        private static final String TITLE = "Order Form";
        
        public FormServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.println("<html>");
            writer.println("<head>");
            writer.println("<title>" + TITLE + "</title>");
            writer.println("</head>");
            writer.println("<body>");
            writer.println("<h1>" + TITLE + "</h1>");
            writer.println("<form method='post'>");
            writer.println("<table>");
            writer.println("<tr>");
            writer.println("<td>Name:</td>");
            writer.println("<td><input type='text' name='name' /></td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Address:</td>");
            writer.println("<td><textarea name='address' cols='40' rows='5'></textarea></td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Country:</td>");
            writer.println("<td>");
            writer.println("<select name='country'>");
            writer.println("<option>United States</option>");
            writer.println("<option>Canada</option>");
            writer.println("</select>");
            writer.println("</td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Delivery Method:</td>");
            writer.println("<td>");
            writer.println("<input type='radio' name='deliveryMethod' value='First Class' />First Class");  // 将被选中按钮的值(即value属性的值)发送到服务器,若没有选中任何按钮,将没有内容发送到服务器,此时Servletrequest.getParameter(name)返回null
            writer.println("<input type='radio' name='deliveryMethod' value='Second Class' />Second Class");
            writer.println("</td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Shipping Instructions:</td>");
            writer.println("<td><textarea name='instructions' cols='40' rows='5'></textarea></td>");  // 如果同一个表单包含多个输入同名的元素(即name属性的值相同),那么所有值都会被提交,并且必须利用Servlet.getParameterValues(name)来捕获它们并返回一个字符串数组。
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>&nbsp;</td>");
            writer.println("<td><textarea name = 'instructions' cols='40' rows='5'></textarea></td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Please send me the leatest product catalog:</td>");
            writer.println("<td><input type='checkbox' name='catalogRequest' /></td>");  // 若选中,发送字符串“on”到服务器;若未选中,不向服务器发送任何东西,此时ServletRequest.getParameter(name)返回null
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>&nbsp;</td>");
            writer.println("<td><input type='reset' /><input type='submit' /></td>");
            writer.println("</tr>");
            writer.println("</table>");
            writer.println("</form>");
            writer.println("</body>");
            writer.println("</html>");
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.println("<html>");
            writer.println("<head>");
            writer.println("<title>" + TITLE + "</title>");
            writer.println("</head>");
            writer.println("<body>");
            writer.println("<h1>" + TITLE + "</h1>");
            writer.println("<table>");
            writer.println("<tr>");
            writer.println("<td>Name:</td>");
            writer.println("<td>" + request.getParameter("name") + "</td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Address:</td>");
            writer.println("<td>" + request.getParameter("address") + "</td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Country:</td>");
            writer.println("<td>" + request.getParameter("country") + "</td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Shipping Instructions:</td>");
            writer.println("<td>");
            String[] instructions = request.getParameterValues("instruction");
            if(instructions != null) {
                for(String instruction : instructions) {
                    writer.println(instruction + "<br />");
                }
            }
            writer.println("</td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Delivery Method:</td>");
            writer.println("<td>" + request.getParameter("deliveryMethod") + "</td>");
            writer.println("</tr>");
            writer.println("<tr>");
            writer.println("<td>Catalog Request:</td>");
            writer.println("<td>");
            if(request.getParameter("catalogRequest") == null) {
                writer.println("No");
            }else {
                writer.println("Yes");
            }
            writer.println("</td>");
            writer.println("</tr>");
            writer.println("</table>");
            writer.println("<div style='border:1px solid #ddd; margin-top:40px; font-size:90%'>");
            writer.println("Debug Info<br />");
            Enumeration<String> parameters = request.getParameterNames();
            while(parameters.hasMoreElements()) {
                String parameterName = parameters.nextElement();
                writer.println(parameterName + ": ");
                String[] parameterValues = request.getParameterValues(parameterName);
                for(String parameterValue : parameterValues) {
                    writer.println(parameterValue + "<br />");
                }
            }
            writer.println("</div>");
            writer.println("</body>");
            writer.println("</html>");
        }
    }

    Servlet中写的html代码(doGet()方法中的)。通过浏览器查看

    Servlet中写的html代码(doPost()方法中的)

  • 相关阅读:
    4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动
    3.操作系统简单介绍 操作系统发展历史 批处理分时系统 操作系统是什么 操作系统对文件的抽象 进程 虚拟内存是什么 操作系统作用 操作系统功能
    2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微处理 计算机
    1.计算机发展阶段 计算机发展历史 机械式计算机 机电式计算机 电子计算机 逻辑电路与计算机 二极管 电子管 晶体管 硅 门电路 计算机 电磁学计算机二进制
    如何解决svn清理失败 不能更新 cleanup失败 cleanup乱码 更新乱码 svn更新提示清理 清理乱码不能清理 svn故障修复SVN cleanup 陷入死循环 svn cleanup时遇到错误怎么办
    eclipse svn插件卸载 重新安装 Subclipse卸载安装 The project was not built since its build path is incomplete This client is too old to work with the working copy at
    java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次
    windows资源管理器多标签打开 windows文件夹多标签浏览 浏览器tab页面一样浏览文件夹 clover win8 win10 报错 无响应问题怎么解决 clover卡死 clover怎么换皮肤
    批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
    不能ssh连接ubuntu linux 服务器 secureCRT不能ssh连接服务器 不能远程ssh连接虚拟机的ubuntu linux
  • 原文地址:https://www.cnblogs.com/0820LL/p/9813949.html
Copyright © 2011-2022 走看看