JSP内置对象
实验
实验名称:JSP内置对象
实验目的:
1、掌握怎样在JSP页面中使用内置对象request
2、掌握怎样使用response对象动态响应用户的请求
3、掌握怎样使用session对象存储和用户有关的数据
实验环境:Windows平台,tomcat7,jdk,Dreamweaver CS4
实验内容:
(1)编写两个JSP页面inputNumber.jsp和receiveNumber.jsp及一个Tag文件Computer.tag。receiveNumber.jsp使用内置对象接收inputNumber.jsp页面提交的数据,然后将计算任务交给Tag文件去完成。
(2)编写两个JSP页面inputRadius.jsp和drawCircle.jsp。inputRadius.jsp页面提交圆的半径给drawCircle.jsp页面,drawCircle.jsp页面使用response对象作出动态响应。 (3)使用session对象模拟购物车,编写两个JSP页面choiceBook.jsp和orderForm.jsp,用户在choiceBook.jsp页面通过超链接将自己要购买的图
信息传递给和orderForm.jsp页面,orderForm.jsp页面将用户购买的图书信息存储到session对象中,然后生成一个图书订单并显示给用户~
实验结果:
见附页
小结:
评定成绩: 批阅教师: 年 月 日
,
实验一
inputNumber.jsp页面的代码如下所示:
<%@ page contentType="text/html;charset=GB2312" %>
receiveNumber.jsp页面的代码如下所示:
<%@ page contentType="text/html;charset=GB2312" %> <%@ 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) {
%>
计算结果:<%=a%><%=operator%><%=b%>=<%=result%> <% }
%>
返回输入数据界面
Computer.jsp页面的代码如下所示:
<%@ tag pageEncoding="gb2312"%>
<%@ 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);
}
%>
实验结果如下所示:
,
实验二
inputRadius.jsp页面的代码如下所示:
<%@ page contentType="text/html;charset=GB2312" %>
drawCircle.jsp页面的代码如下所示:
<%@ page contentType="text/html;charset=GB2312" %> <%@ 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.*" %>
<% String R=request.getParameter("radius");
try
{ double number=Double.parseDouble(R);
if(number<=0||number>100) {
response.setContentType("text/plain;charset=GB2312");
out.println(number+"作为圆的半径不合理");
}
else if(number>0&&number<=100) {
response.setContentType("image/jpeg"); //改变MIME类型
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");
}
%>
实验结果如下所示:
,
,
实验三:
choiceBook,jsp页面代码如下所示:
<%@ page contentType="text/html;Charset=GB2312" %>
选择所购买的图书
orderForm.jsp页面的代码如下:
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="java.util.*" %> <%
String book=request.getParameter("bookMess");
if(book!=null){
StringTokenizer fenxi=new StringTokenizer(book,"@");
String bookName=fenxi.nextToken();
String bookISBN=fenxi.nextToken();
session.setAttribute(bookISBN,book);
}
%>
,
图书订单
<%
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,"@");
%> <%=fenxi.nextToken()%> |
<%=fenxi.nextToken()%> |
<%=fenxi.nextToken()%> |
<% }
}
%>
实验结果如下所示:
,