request对象是将客户端浏览器数据提交给服务器端JSP页面的唯一数据通道,通过该通道JSP页面能够获取浏览器信息、form表单信息、URL参数信息等。
1.from表单向JSP文件传递数据
form表单是浏览器向服务器传递数据的一种基本机制,包含两种方式:GET方式和POST方式。GET方式向服务器传递数据按照下面的格式进行:
URI?var1=value1&var2=value2
URI表示接收数据的服务器端程序,可以是一个JSP文件,也可以是其他CGI文件。符号“?”是文件路径和具体数据间的分隔符,该分隔符后面是传递给URI的特定变量信息。不同变量使用“&”隔开,每个部分对应一个变量的名字和变量值,等号前面是变量名字;等号后面是变量值。例如下面程序向ex01.jsp传递两个参数name和pwd,name的值是zhangsan,pwd的值是123。
ex01.jsp?name=zhangsan&pwd=123
使用form表单也能向服务器端发送数据信息,上面信息如果使用form表单传递则对应程序如下。
首先创建一个ex01.html,该html的代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form向JSP传递数据</title>
</head>
<body>
<form method="get" action="ex01.jsp">
name:<input type="text" name="name"><br>
pwd:<input type="text" name="pwd"><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
然后我们创建一个ex01.jsp页面来接收数据。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String who=request.getParameter("name");
String pwd=request.getParameter("pwd");
%>
<h1>hi <%=who%></h1>
<h1>hi <%=pwd%></h1>
</body>
</html>
启动该应用,在浏览器地址栏中输入:http://localhost:8080/s001/ex01.html
在表单中输入数据
然后点击“submit”按钮,可以看到界面展示如下图所示
可以看到点击“submit”按钮后表单就向服务器提交数据,提交后会在地址栏上生成GET请求字符串。
但是通过GET方式向服务器发送数据,数据量不会超过4K;而且GET方式以明码方式将传递的信息显示在地址栏上,因而不利于数据保密,例如密码信息等,则不适合采用这种方式传递。
对于同样的信息,则要采用POST方式提交。POST方式在提交信息时没有数据量上的限制,而且也不会被明码显示在浏览器地址栏上。
以下程序演示POST方式下,form表单的属性设置方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form向JSP传递数据</title>
</head>
<body>
<form method="post" action="ex01.jsp">
name:<input type="text" name="name"><br>
pwd:<input type="text" name="pwd"><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
JSP界面不需要做改变,html中form表单的设置差别就在method属性上,这里被设置成post,该属性决定了form表单数据提交方式。修改完上述属性后,重新启动该应用,然后在浏览器地址栏中输入URL:http://localhost:8080/s001/ex01.html
输入表单信息后,点击提交按钮
2.JSP接收form数据
JSP文件从request对象中提取表单数据有两个问题需要解决:一个是从request中读取表单的方式;另一个是对读取出的数据进行编码方案转变。