JSP网络程序设计之request对象
HTTP通信协议是用户与服务器之间一种提交(请求)信息与响应信息(request/response)的通信协议。在JSP中,内置对象request封装了用户提交信息,那么该对象调用相应的方法可以获取封装信息,即使用该对象可以获取用户提交的信息。
内置对象request是实现了ServletRequest接口类的一个实例,可以在Tomcat服务器的webapps\tomcat-docs\servletapi中查找ServletRequest接口的方法。
一、获取用户提交的信息
request对象获取用户提交信息的最常用的方法是getParameter(Strings)。在下面的例4_ 1中,1. jsp通过表单向1_ computer. jsp提交三角形三边的长度,1_computer. jsp负责计算并显示三角形的面积。
example_1.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<body bgcolor=#ffccff>
<form action="example_1_computer.jsp" method=post>
<input type="text" name="sizeA" value=9 size=6 /> <input type="text"
name="sizeB" value=8 size=6 /> <input type="text" name="sizeC"
value=8 size=6 /> <input type="submit" name="submit" value="提交" />
</form>
</body>
</html>
example_1_computer.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<body bgcolor=#ffccff>
<p style="font-family: 黑体; font-size: 36; color: bule">
<%
String sideA = request.getParameter("sizeA");
String sideB = request.getParameter("sizeB");
String sideC = request.getParameter("sizeC");
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>三角形面积(保留两位小数):" + result);
} catch (NumberFormatException e) {
out.println("<br>请输入数字字符:");
}
%>
</body>
</html>
运行example_1.jsp文件
点击“提交”后的界面
二、request对象的常用方法
example_2.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<body bgcolor=#ffccff>
<p style="font-family: 宋体; font-size: 36; color: blue">
<%
request.setCharacterEncoding("utf-8");
String jsp = request.getServletPath();
jsp = jsp.substring(1);
String webDir = request.getContextPath();
webDir = webDir.substring(1);
String clientIP = request.getRemoteAddr();
int serverPort = request.getServerPort();
%>
用户请求的页面:<%=jsp%>
<br>Web服务目录的名字:<%=webDir%>
<br>用户的IP地址:<%=clientIP%>
<br>服务器的端口号:<%=serverPort%>
</p>
</body>
</html>
三、处理超链接
用户单击超链接标记的文字说明,可以访问超链接给出的链接页面。使用超链接还可以增加参数,以便向所链接的页面传递值。
example_3.jsp用超链接向example_3_receive.jsp传递商品的编号和价格。
example_3.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<body bgcolor=#ffccff>
<%
double price = 98.78;
%>
<p style="font-family: 宋体; font-size: 36;color=red">
商品编号 a1001,价格 8765 <a href="example_3_receive.jsp?id=a1001&price=8765">购买</a><br>
商品编号 a1002,价格<%=price%>
<a href="example_3_receive.jsp?id=a1002&price=<%=price%>">购买</a>
</p>
</body>
</html>
example_3_receive.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<head>
<body bgcolor=#ffccff>
<p style="font-family: 宋体; font-size: 36;color=red">
<%
String id = request.getParameter("id");
String price = request.getParameter("price");
%>
<br>商品价格:<%=id%><br> 商品价格:<%=price%>
</p>
</body>
</html>
点击第一个“购买”
点击第二个“购买”