一、JSP内置对象
感觉以后用不太到,就粗略地了解一下,内置对象主要有:
1.request对象:用户在页面提交的信息,在提交的那一刻封装成request对象的成员变量。通过request的成员函数getParameter( )去接收。(看下面的例子)
2.response对象
3.session对象:记录客户端之前的连接信息
4.application对象(尽量不用)
二、JSP程序示例
给出一个例子,页面是这样的
这个页面的功能由一个HTML文件和一个jsp文件组成,HTML文件如下,而跳转到的ex3.jsp文件稍后会贴出。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
#container{
margin-top: 50px;
margin-left: auto;
margin-right: auto;
width: 1500px;
text-align: center;
}
</style>
<title>homework_3</title>
</head>
<body >
<div id="container">
<!-- ---------------------第1个表单------------------------- -->
<form action="ex3.jsp" method="get" name="form" >
<fieldset >
<legend>三角形</legend>
<label>请输入第一条边边长(单位:米):
<input type="text" name="sideA" />
</label><br />
<label>
请输入第二条边边长(单位:米):
<input type="text" name="sideB" />
</label><br />
<label>
请输入第三条边边长(单位:米):
<input type="text" name="sideC" />
</label><br /><br />
<input type="submit" value="计算三角形周长" name="submit"/>   
<input type="submit" value="计算三角形面积" name="submit"/>
</fieldset>
</form><br><br>
<!-- ------------------------第2个表单----------------------- -->
<form action="ex3.jsp" method="get" name="form" >
<fieldset>
<legend>圆形</legend>
<label>请输入圆形的半径(单位:米):
<input type="text" name="r" />
</label><br /><br/>
<input type="submit" value="计算圆形周长" name="submit"/>   
<input type="submit" value="计算圆形面积" name="submit"/>
</fieldset>
</form><br><br>
<!----------------------------第3个表单---------------------- -->
<form action="ex3.jsp" method="get" name="form">
<fieldset>
<legend>长方形</legend>
<label>请输入长方形的长(单位:米):
<input type="text" name="length" />
</label><br/>
<label>请输入长方形的宽(单位:米):
<input type="text" name="width" />
</label><br/><br/>
<input type="submit" value="计算长方形周长" name="submit"/>   
<input type="submit" value="计算长方形面积" name="submit"/>
</fieldset>
</form>
</div>
</body>
</html>
ex3.jsp文件如下。写的比较简单,除了利用jsp内置对象外,就是纯纯的Java代码。先看实现的效果吧(注意要开Tomcat)。
(1)输入了三角形的三个边以后,点击“计算三角形面积”
(2)跳转到jsp页面,返回给客户端结果
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title> 计算结果</title>
<style type="text/css">
body{
text-align: center;
}
</style>
</head>
<body >
<%
class Triangle{
public double sideA;
public double sideB;
public double sideC;
public double area;
public double length;
public double getLength(){
return sideA+sideB+sideC;
}
public double getArea(){
double tem;
tem=(sideA+sideB+sideC)/2;
return Math.sqrt(tem*(tem-sideA)*(tem-sideB)*(tem-sideC));
}
}
class Circle{
public double r;
public void setR(double rr){
r=rr;
}
public double getLength(){
return 2*3.14*r;
}
public double getArea(){
return 3.14*r*r;
}
}
class Rectangle{
public double length;
public double width;
public double getLength(){
return 2*(length+width);
}
public double getArea(){
return length*width;
}
}
%>
<%
String submit=request.getParameter("submit");
//byte b[]=submit.getBytes("ISO-8859-1");
//submit=new String(b);
%>
<%
if("计算三角形周长".equals(submit)||"计算三角形面积".equals(submit)){
Triangle tri=new Triangle();
String sideA=request.getParameter("sideA");
String sideB=request.getParameter("sideB");
String sideC=request.getParameter("sideC");
//从前一个页面接收字符串
if(sideA==null)
{ sideA=""; }
if(sideB==null)
{ sideB=""; }
if(sideC==null)
{ sideC=""; }
//防止接收到null
try{ tri.sideA=Double.parseDouble(sideA);
tri.sideB=Double.parseDouble(sideB);
tri.sideC=Double.parseDouble(sideC);
if(tri.sideA>=0 && tri.sideB>=0 && tri.sideC>=0)
{ if("计算三角形周长".equals(submit)){
out.print("sideA:"+tri.sideA+"米"+"<BR>");
out.print("sideB:"+tri.sideB+"米"+"<BR>");
out.print("sideC:"+tri.sideC+"米"+"<BR>");
out.print("<BR>"+"三角形的周长为"+ tri.getLength()+"米");
}
else if("计算三角形面积".equals(submit)){
out.print("sideA:"+tri.sideA+"米"+"<BR>");
out.print("sideB:"+tri.sideB+"米"+"<BR>");
out.print("sideC:"+tri.sideC+"米"+"<BR>");
out.print("<BR>"+"三角形的面积为"+tri.getArea()+"平方米");
}
}
else
{ out.print("<BR>"+"请输入正数"); }
}
catch(NumberFormatException e)
{ out.print("<BR>"+"请输入数字字符"); }
}
%>
<%
if("计算圆形周长".equals(submit)||"计算圆形面积".equals(submit)){
//如果点击了第2个表单的按钮
Circle circle=new Circle();
String r=request.getParameter("r");
if(r==null)
{r="";}
try{
circle.r=Double.parseDouble(r);
if(circle.r>=0)
{ if("计算圆形周长".equals(submit)){
out.print("圆形的半径:"+circle.r+"<BR>");
out.print("<BR>"+"圆形的周长为"+circle.getLength()+"米");
}
else{
out.print("圆形的半径:"+circle.r+"<BR>");
out.print("<BR>"+"圆形的面积为"+circle.getArea()+"平方米");
}
}
else
{ out.print("<BR>"+"请输入正数"); }
}
catch(NumberFormatException e)
{out.print("<BR>"+"请输入数字字符");}
}
%>
<%
if("计算长方形周长".equals(submit)||"计算长方形面积".equals(submit)){
//如果点击了第3个表单的按钮
Rectangle rec=new Rectangle();
String length=request.getParameter("length");
String width=request.getParameter("width");
if(length==null)
{length="";}
if(width==null)
{width="";}
try{
rec.length=Double.parseDouble(length);
rec.width=Double.parseDouble(width);
if(rec.length>=0 && rec.width>=0)
{ if("计算长方形周长".equals(submit)){
out.print("<BR>"+"长方形的周长为"+rec.getLength()+"米");
}
else{
out.print("<BR>"+"长方形的面积为"+rec.getArea()+"平方米");
}
}
else
{ out.print("<BR>"+"请输入正数"); }
}
catch(NumberFormatException e)
{out.print("<BR>"+"请输入数字字符");}
}
%>
</body>
</html>