使用JSP处理HTML表单
7.2.1 处理隐藏域标签
• 隐藏域标签语法如下: • <input type=―hidden‖ name=―…‖ value=―…‖>
7.2.2 处理TextArea
• 处理的标签语法如下: • <textArea name =―TextAreaName‖ col=―ColsNum‖ rows=―RowsNum‖></textarea> • 例sendTextArea.jsp用于输入数据文本 • TextArea.jsp用于处理和显示结果
• 4、Get传输的数据量小,这主要是因为 受URL长度限制;而Post可以传输大量的 数据,所以在上传文件只能使用Post。 5、Get限制Form表单的数据集的值必须 为ASCII字符;而Post支持整个ISO10646 字符集。 6、Get是Form的默认方法。
• 第一种 GET • 它将表单内容附加URL之后,中间用问号连接,然后 传送至指定的程序做处理。 • http://specifiedURL?Name1=Value&Name2=Value2 • 在hello user 实例中,使用的是GET进行数据传送,表 单数据传给hellouser.jsp页面的方式如下: • http://hellouser.jsp?username=liuyongpo • 因为hellouser.jsp页面接收到数据后重定向到了 response.jsp页面,所以地址栏看不到上述信息。 • 第二种 POST,这个方法是将表单内容作为一个数据体 而不是URL的一部分传送给服务器的。所以URL中看 不到表单的内容。
第7章 使用JSP处理HTML表单
• 7.1在JSP中创建与处理HTML表单 • 7.2 与Form相关的常用标签的处理方法 • 7.3 表单数据的类型转换
7.1在JSP中创建与处理HTML表单
• 首先,JSP引擎把存放在request对象中的数据 发到JSP页面指定的服务器端的组件 (JavaBeans组件, servlet,或者enterprise bean), 组件收到这些个数据以后,有可能再把这些数 据存到数据库或者其他的地方存放起来,同时, 返回一个response对象给JSP引擎。这时JSP引 擎和Web服务器再发送一个整理好的完整的 页 面给客户,也就是我们在浏览器上看到的结果。 客户和服务器间的通信协议可以用HTTP,当 然也可以用其他协议。
• 另外 • 用get方法传递中文有问题,用post没有问题。 pageEncoding这个只对post起作用。get方法提 交时,大家可以从地址栏里看到提交的参数, 这是因为get方法传递是作为报文头提交的,而 pageEncoding对报文头是没有作用的,所以仍 然按照 iso8859-1编码,才出现了乱码问题。而 post提交的是form表单的内容,pageEncoding指 定了它的编码,所以他会按照指定编码传递。
•
1、Get是用来从服务器上获得数据,而Post是用来向 服务器上传递数据。 2、Get将表单中数据的按照variable=value的形式,添 加到action所指向的URL后面,并且两者使用“?‖连接, 而各个变量之间使用“&‖连接;Post是将表单中的数 据放在form的数据体中,按照变量和值相对应的方式, 传递到action所指向URL。 3、Get是不安全的,因为在传输过程,数据被放在请 求的URL中,而如今现有的很多服务器、代理服务器 或者用户代理都会将请求URL记录到日志文件中,然 后放在某个地方,这样就可能会有一些隐私的信息被 第三方看到。另外,用户也可以在浏览器上直接看到 提交的数据,一些系统内部消息将会一同显示在用户 面前。Post的所有操作对用户来说都是不可见的。
7.1.4 使用JavaBean处理 表单数据
• HTML表单的数据传到JavaBean里需要两 个工作: • 第一个工作用<jsp:useBean>标签创建或 者定位到JavaBean, • 第二个工作在JavaBean里面用 <jsp:setProperty>设置属性值。
7.1.5 将处理结果返回给客户端
• 表单有以下三个重要的属性 • action属性:属性定义了当表单被提交时数据被送往 何处,如果为空,就提交给当前页面。 • method属性:指定传输方式,GET或者POST • enctype属性:指定将数据回发到服务器时浏览器使 用的编码类型。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件 上传;只有使用了multipart/form-data,才能完整的 传递文件数据在使用表单传送数据的时候,如果 form 加了enctype="multipart/form-data" 这个属性, 那么表单请求传到另一个jsp或servlet 里时是不能用 request.getParameter()来获取到各个表单元素的值的。 <form name="form1" action="test.jsp" method="po st" enctype="multipart/form-data"> 是上传二进制数据
7.2.3 处理Radio标签
• Radio标签的语法格式如下: • <input type=―radio标签
• Checkbox标签的语法如下: • <input type=―checkbox‖>
7.2.5 处理Select标签
• • • • Select标签的语法如下: <select name=―Name‖> <option value=―Value‖>选项</option > </select>
7.1.3 使用GET/POST方法 传递参数
• 在B/S应用程序中,前台与后台的数据交互, 都是通过HTML中Form表单完成的。Form提供 了两种数据传输的方式——get和post。虽然它 们都是数据的提交方式,但是在实际传输时确 有很大的不同,并且可能会对数据产生严重的 影响。虽然为了方便的得到变量值,Web容器 已经屏蔽了二者的一些差异,但是了解二者的 差异在以后的编程也会很有帮助的。 Form中的get和post方法,在数据传输过程中 分别对应了HTTP协议中的GET和POST方法。 二者主要区别如下:
图7.1 数据流在服务器和客户之间的传递
response Client response JSP Container& Web Server JSP File response
request
Component
request
request
7.1.1 一个动态交互的hello user实例
• 下面是一个简单的动态交互的hello user实例, 该实例共包含3个文件。 • 一个JavaBean(NameHandler.java)用来传递数据。 • 两个JSP文件(hellouser.jsp和reponse.jsp) hellouser.jsp用来让客户通过HTML表单向JSP 引擎输入数据; reponse.jsp用来在浏览器上返回结果。
7.2 与Form相关的常用 标签的处理方法
• FORM中常用的标签主要有以下几种类型: • 文本框(Text)、隐藏域(Hidden)、密码框 (Password)、单选框(Radio)、复选框 (Checkbox)、下拉选择框(Select)、文件上传框 (File)和文本区(TextArea)。 • 其中文本框、隐藏域、密码框、单选按钮、单选下拉 选择框文本区使用request内置对象的getParameter方法 获取标签内的数据,如果指定的标签名存在,但没有 值, getParameter 返回空字符串;如果指定的标签名不 存在,返回null。 • 复选框和多选下拉选择框使用request内置对象的 getParameterValues方法获取包含选中选项的数组。
JSP操纵HTML表单步骤
1、 写JSP原文件,创建一些HTML的表单并命名。 2、 在Java文件里写Bean,定义属性,GET或者SET 方法来配合已经被你指定好名字的表单。 3、 回到JSP原文件中,增加<jsp:useBean>标签来创 建一个或者调用一个现成的Bean。 4、 增加<jsp:setProperty>标签设置HTML表单中需要 SET方法的Bean的属性。 5、 增加<jsp:getProperty>标签设置HTML表单中需 要GET方法的Bean的属性。 6、 如果需要处理更多的用户数据,用request对象。
• 用户将数据传到JavaBean,一旦想重新得到数 据,并在JSP页面中显示出来,就要将处理结 果返回给客户端。要实现这一步,则需要 <jsp:getProperty>标签: • <jsp:getProperty name=―mybean‖ property=―usename‖/> • 另外,还可以使用表达式直接调用Bean中的方 法获得属性值: • <%=mybean.getUsername()%>
7.2.6 JSP处理与Form相关的常 用标签实例
• userInfo.html包含表单。
文本输入标签(Text) <input type="text" name="Name" size="15" maxlength="15"> 密码输入标签(Password) <input type="password" name="Password" size="15" maxlength="15"> 单选按钮输入标签(Radio) <input type="radio" name="Sex" value="Male" checked>男 <input type="radio" name="Sex" value="Female">女 复选框输入标签(Checkbox) <input type="checkbox" name="Habit" value="Read"> 看书 <input type="checkbox" name="Habit" value="Football"> 足球 <input type="checkbox" name="Habit" value="Travel"> 旅游 <input type="checkbox" name="Habit" value="Music"> 听音乐 <input type="checkbox" name="Habit" value="Tv"> 看电视