一、内置对象概述
有些对象不用声明即可在jsp页面的java程序片和表达式中使用,这就是jsp 的内置对象。Jsp的常用的内置对象有request,response,session,aplication和out。Response和request对象是jsp内置对象中比较重要的两个,这两个对象提供了对服务器和浏览器通信方法的控制。
http协议规定了信息在internet上的传输方法,特别规定了浏览器和服务器的交互方法。从网站获取页面时,浏览器在网站上打开了一个对网络服务器的连接,并发出请求。服务器收到请求后回应,所以http协议被称作“请求和响应”协议。浏览器请求有某种结构,http请求包括一个请求行、头域和可能的信息体。最普通的请求类型是对页面的一个简单请求。如下例,
Get/hello.html HTTP/1.1
Host:www.sina.com.cn
这是对网站www.sina.com.cn上页面hello.html的HTTP请求例子。首行是请求行,规定了请求的方法,请求的资源及使用的HTTP协议的版本。上例中,请求的方法是get方法,此方法获取特定的资源。上例中get方法,用来获取名为hello.html的网页。其他请求方法包括post,head,delete,trace及put方法等。
此例的第二行是头(header)。Host头给出了网站上hello.html文件的Internet地址。此例中,主机是www.sina.com.cn.
二、request对象
http通信协议是用户与服务器之间一种提交(请求)信息与响应信息(request/response)的通信协议。在jsp中,内置对象request封装了用户提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。
内置对象request是实现了ServletRequest接口类的一个实例,可以在tomcat目录找到。
用户常用html的form表单请求访问服务器的某个jsp网页(或servlet),并提交必要信息给所请求的jsp页面,表单的一般格式是:
<form action = “tom.jsp” method = “post”>
<input type = “text” name = “boy” value = “ok” / >
<input type = “submit” name = “submit” value = “提交”>
</form>
Action是form表单的属性,其属性值给出表单请求访问的jsp页面或servlet。form表单中的method属性取值get或post。Get方法和post方法的主要区别是:用get方法提交的数据,会在提交过程中显示在浏览器的地址栏中,而post方法,则不会显示在浏览器的地址栏中。上例的意思是使用post 方法向请求访问的tom.jsp页面提交信息,提交信息的手段是text.
例子1:
获取用户提交的信息。
Request对象获取用户提交信息的最常用方法是getParameter(String s).在下例中。Example4_1.jsp通过表单向example4_1_computer.jsp提交三角形三边的长度,example4_1_computer.jsp负责计算并显示三角形的面积。
example4_1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body bgcolor="pink">
<form action = "example4_1_computer.jsp" method = get>
<input type="text" name = "sideA" value = 9 size = 6/>
<input type="text" name = "sideB" value = 8 size = 6/>
<input type="text" name = "sideC" value = 8 size = 6/>
<input type="submit" name = "submit" value = “提交” />
</form>
</body>
</html>
example4_1_computer.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body bgcolor="blue">
<p style = "font-family:黑体;font-size: 36px;color: red">
<% String sideA = request.getParameter("sideA");
String sideB = request.getParameter("sideB");
String sideC = request.getParameter("sideC");
try{ double a = Double.parseDouble(sideA);
double b = Double.parseDouble(sideB);
double c = Double.parseDouble(sideC);
double p = (a+b+c)/2,area = 0;
area = Math.sqrt( p * (p - a) * (p - b) * (p - c));
String result = String.format("%.2f",area);
out.println("<BR三边:" + sideA + "," + sideB + "," + sideC);
out.println("<BR>三角形面积(保留2位小数):" + result);
}
catch(NumberFormatException ee){
out.println("<BR>请输入数字字符");
}
%>
</p>
</body>
</html>
表单提交页面
计算结果页面