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: 实验