JSP
网页应用程序开发
网页应用程序开发
实验目的:掌握JSP对象对象的使用方法
1 request对象
运用request对象通过JSP页面和Tag文件实现四则运算
创建输入页面inputNumber.jsp,添加表单,在表单中添加文本域numberOne(宽度为6),选择框operator(列表值为+、-、*、/),文本域numberTwo(宽度为6)以及提交按钮,设置表单动作为receiveNumber.jsp:
创建获取用户提交信息页面receiveNumber.jsp,在页顶添加代码引入标记库:
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer" %>
在页面中添加代码,获取提交信息并作为参数传给自定义标记,输出运算结果:
<%
String a = request.getParameter("numberOne");
String b = request.getParameter("numberTwo");
String operator = request.getParameter("operator");
if (a == null || b == null) {
a = "";
b = "";
}
if (a.length() > 0 && b.length() > 0) {
%>
<computer:Computer numberA="<%= a %>" numberB="<%= b %>" operator="<%= operator %>" />
<p>计算结果:<%= a %><%= operator %><%= b %>=<%= result %>
<%
}
%>
</p>
<p><a href="inputNumber.jsp">返回输入数据界面</a></p>
在/WEB-INF/tags下创建自定义标记Computer.tag,添加代码获取参数进行四则运算:
<%@ tag pageEncoding="utf-8" %>
<%@ attribute name="numberA" required="true" %>
<%@ attribute name="numberB" required="true" %>
<%@ attribute name="operator" required="true" %>
<%@ variable name-given="result" scope="AT_END" %>
<%
try {
double a=Double.parseDouble(numberA);
double b=Double.parseDouble(numberB);
double r=0;
if (operator.equals("+")) {
r=a+b;
}
else if (operator.equals("-")) {
r=a-b;
}
else if(operator.equals("*")) {
r=a*b;
}
else if(operator.equals("/")) {
r=a/b;
}
jspContext.setAttribute("result",String.valueOf(r));
}
catch(Exception e) {
jspContext.setAttribute("result","发生异常:"+e);
}
%>
完成后在浏览器中运行inputNumber.jsp,输入数值,选择运算符,点击提交按钮即进入显示运算结果页面:
2 response对象
运用response对象绘制半径为1~100像素的圆形
创建输入圆的半径页面inputRadius.jsp,添加表单,在表单中添加文本域radius(宽度为6)以及提交按钮,设置表单动作为drawCircle.jsp:
创建绘制圆形页面drawCircle.jsp,在页顶添加代码引入所需类包:
<%@ page import="java.awt.*" %> <%@ page import="java.io.*" %> <%@ page import="java.awt.image.*" %> <%@ page import="java.awt.geom.*" %> <%@ page import="com.sun.image.codec.jpeg.*" %>
在页面中添加代码根据获取的半径参数创建圆形并以JPEG格式输出到页面中:
<%
String r = request.getParameter("radius");
try {
double number = Double.parseDouble(r);
if (number <=0 || number > 100) {
//改变MIME类型
response.setContentType("text/html;charset=utf-8");
out.println(number + "作为圆的半径不合理或超出绘制范围(1-100)。");
}
else if (number > 0 && number <= 100) {
response.setContentType("image/jpeg");
int width = 100, height = 100;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
Graphics2D g_2d = (Graphics2D)g;
Ellipse2D circle = new Ellipse2D.Double(0, 0, number, number);
g_2d.setColor(Color.blue);
g_2d.fill(circle);
g.dispose();
//获取指向用户端的输出流
OutputStream outClient = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outClient);
encoder.encode(image);
}
}
catch (Exception e) {
response.sendRedirect("inputRadius.jsp");
}
%>
完成后在浏览器中运行inputRadius.jsp,输入半径点击提交按钮即进入显示图形页面:
3 session对象
运用session对象存储用户数据模拟网店的购物车功能
创建选择图书页面choiceBook.jsp,以在链接中附带参数的方式提交所选图书信息:
<h3>选择要购买的图书</h3> <p> <a href="orderForm.jsp?bookMess=Java面向对象程序设计@ISBN:9876@价格:34元">Java面向对象程序设计(34元)</a> <br /> <a href="orderForm.jsp?bookMess=JSP程序设计@ISBN:4567@价格:29.5元">JSP程序设计(29.5元)</a> <br /> <a href="orderForm.jsp?bookMess=XML程序设计@ISBN:2356@价格:29元">XML程序设计(29元)</a> </p>
创建显示订单页面orderForm.jsp,在页顶添加代码,引入所需类包,根据用户提交的参数将用户选择的图书信息保存为会话对象:
<%@ page import="java.util.*" %>
<%
String book = request.getParameter("bookMess");
byte b[] = book.getBytes("iso-8859-1");
book = new String(b, "utf-8");
if (book != null) {
StringTokenizer fenxi = new StringTokenizer(book, "@");
String bookName = fenxi.nextToken();
String bookISBN = fenxi.nextToken();
session.setAttribute(bookISBN, book);
}
%>
在页面中添加代码,以表格形式输出会话对象中保存的图书信息:
<h3>图书订单</h3>
<table border="1">
<%
Enumeration keys = session.getAttributeNames();
while (keys.hasMoreElements()) {
String key = (String)keys.nextElement();
book = (String)session.getAttribute(key);
if (book != null) {
StringTokenizer fenxi = new StringTokenizer(book, "@");
%>
<tr>
<td><%= fenxi.nextToken() %></td>
<td><%= fenxi.nextToken() %></td>
<td><%= fenxi.nextToken() %></td>
</tr>
<%
}
}
%>
</table>
完成后在浏览器中运行choiceBook.jsp,点击图书链接即可将其放入购物车:
博主 in 教程 02:48下午 10月 05, 2012
Tags: 实验