HTTP协定基本的两个请求方式为GET与POST,GET请求方式为直接在请求的网址上发送请求的相关信息,例如:
GET请求方式由于是直接在网址上发送请求的相关信息,所以会在网址列上出现相关的请求信息,例如: http://localhost:8080/myjsp/login.jsp?user=justin
使用GET来发送请求会曝露一些请求的相关信息,使用GET的时机之一是用在可bookmark的网址信息上,然而对于大量的信息传送而言,会在网址列上出现一长串内容,而且GET请求有最长数据长度 255个字节的限制,所以对于需要保密的信息而言,例如使用者登入,或是对于大量信息传送而言,例如留言讯息,通常会采用POST来发送请求,POST请求主要是在HTTP协议之后,将数据附加在请求的后端,有些类似SMTP的邮件发送,例如:
在设计表单的时候,可以指定发送请求的方式为GET或POST,表单的标签设定一开始是这样的: <form name="info" method="GET" action="somepage.jsp">
<!-- 表单控制项 --> <input type="控制项类型"> </form> 其中method用来指定发送请求的方式为GET或POST,而action用来指定请求的目标,请求的目标可以是JSP、ASP、PHP、CGI程序等等,表单控制项将在以下介绍几个常用的。 首先是送出按钮submit与重清按钮reset,要将表单的内容发送出去,至少一定要使用submit按钮,按钮的value值可以设定按钮上的文字,例如: <form name="info" method="GET" action="somepage.jsp">
<!-- 送出与重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> 本文框text与密码输入框password的外观是差不多的,差别在于密码输入框会使用字节遮罩来隐藏输入的字节,设定的例子如下: <form name="info" method="GET" action="somepage.jsp">
<!-- 本文框与密码输入 --> Login ID: <input type="text" name="id"> Password: <input type="password" name="pwd"> <!-- 送出与重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> name属性即在JSP网页中可以用来取得请求参数的名称,另外还可以使用maxlength设定栏位最大输入字节,size可以设定框的大小,而value可以用来设定默认输入内容,可以设计一个JSP网页来测试这个表单的运作: <%
// id 即 text 中设定的name属性 String name = request.getParameter("id"); // pwd 即 password 中设定的 name 属性 String password = request.getParameter("pwd"); out.println("接收参数:" + name + ", " + password); %> 当然要记得,表单是必须在HTML网页中才能运作的,记得使用<html>标签: <html>
<body> <form name="login" method="GET" action="login.jsp"> <!-- 本文框与密码输入 --> Login ID: <input="text" name="id"> Password: <input="password" name="pwd"> <!-- 送出与重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> </body> </html> 输入内容并按下送出键之后,由于是使用GET方法,您可以在网址看到相关的信息: http://localhost:8080/myjsp/login.jsp?id=justin&pwd=1234
可以看到的多个参数同时发送时,使用&符号来联结。 单选钮radio与核取方块checkbox常用于提供固定的选项给使用者点选,它们都拥有checked属性表示选取,name属性表示按钮名称, value发送出去的值,即request.getParameterValues("name")所取得的值,例如: <html>
<body> <form name="info" method="POST" action="info.jsp"> <!-- 单选钮 --> <input type="radio" name="sex" value="male" checked>男 <input type="radio" name="sex" value="female">女<br> <!-- 核取方块 --> <input type="checkbox" name="skills" value="c++">C++<br> <input type="checkbox" name="skills" value="java"> Java<br> <input type="checkbox" name="skills" value="c#">C#<br> <!-- 送出与重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> </body> </html> 表单发送方式设定为POST,如此发送的信息就不会出现在网址列上;单选钮的name设定为相同的话,表示属于同一个群组,一次只能选择一个项目,而核取 方块的name设定,其值可以使用request.getParameters()取得,例如设计下面的程序来取得信息: <%
String sex = request.getParameter("sex"); String[] skills = request.getParameterValues("skills"); out.println("性别:" + sex); out.println("技能:"); for(int i = 0; i < skills.length; i++) { out.println(skills[i] + ", "); } %> 下拉式选单也是一个常用的输入类型,由于将选项以下拉式选单来表现,可以节省网页排版的空间,适用于大量选项可以选择的场合,一个例子如下: <form name="info" method="POST" action="info.jsp">
<!-- 下拉选单 --> <select name="salary" multiple> <option value="L1">20000以下</option> <option value="L2">20000 ~ 30000</option> <option value="L3">30000 ~ 40000</option> </select> <!-- 送出与重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> 取得下拉式选单设定值的方法,同样是使用getParameterValues(),另外下拉式选单也可以使用multiple设定为可复选,而 size 属性可以用于设定栏位的大小。 最后,输入类型中还有一个hidden类型,它不会在浏览器上显示任何组件,但可以设定name与value,主要是用来隐藏一些信息,在下一次发送请求时,一并将隐藏的信息发送给服务器。 |