JSP程序设计习题答案

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题一:
1.答:确保Tomcat服务器使用的是Java_home环境变量设置的JDK。
2.答:属于操作题,解答略。
3.答:Web服务目录的下的目录称为该Web服务目录下的相对Web服务目录。浏览器的地址栏中键入:http://IP:8080/Web目录名字/子目录名字/JSP页面。
4.答:修改Tomcat服务器安装目录中conf文件夹中的主配置文件:server.xml,只要没有其他应用程序正在占用80,就可以将端口号设置为80。
习题二
1.答:“<%!”和“%>”之间声明的变量在整个JSP页面内都有效,称为JSP页面的成员变量,成员变量的有效范围与标记符号<%!、%>所在的位置无关。所有用户共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。
“<%”和“%>”之间声明的变量称为局部变量,局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。运行在不同线程中的Java程序片的局部变量互不干扰,即一个用户改变Java程序片中的局部变量的值不会影响其他用户的Java程序片中的局部变量。当一个线程将Java程序片执行完毕,运行在该线程中的Java程序片的局部变量释放所占的内存。
2.答:两次。
3.答:第一个问题的答案是允许;第二个问题的答案是不允许。
4.答:第一个用户看到的sum的值是610,第二个用户看到的sum的值是1210
5.大写英文字母表
答:
<%@ page contentType="text/html;charset=GB2312" %>

<%
for(char c='A';c<='Z';c++)
{
out.print(" "+c);
}
%>

6.答:include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件,即JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。因此,插入文件后,必须保证新合并成的JSP页面符合JSP语法规则,即能够成为一个JSP页面文件。include动作标记告诉JSP页面动态加载一个文件,不把JSP页面中动作指令include所指定的文件与原JSP页面合并一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行时(Java文件的字节码文件被加载执行)才被处理。如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。
7.梯形
答:
main.jsp:
<%@ page contentType="text/html;charset=GB2312" %>









lader.jsp:
<%@ page contentType="text/html;charset=GB2312" %>


<%
String

strA=request.getParameter("a");
String strB=request.getParameter("b");
String strH=request.getParameter("h");
double a=Double.parseDouble(strA);
double b=Double.parseDouble(strB);
double h=Double.parseDouble(strH);
double area=(a+b)*h/2;
%>

梯形面积:<%=area%>


习题三
1.答:不可以
2.答:如果某个Web服务目录下的JSP页面准备调用一个Tag文件,那么必须在该Web服务目录下,建立目录:Web服务目录\WEB-INF\tags,其中,WEB-INF和tags都是固定的子目录名称,而tags下的子目录名字可由用户给定。一个Tag文件必须保存到tags目录或其下的子目录中。
3.答:body-content、language、import、pageEncoding 。
4.答:使用attribute指令可以动态地向该Tag文件传递对象的引用。
5.答:使用variable指令可以将Tag文件中的对象返回给调用该Tag文件的JSP页面。
6.圆的半径
答:
Lianxi6.jsp:
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>


以下是调用Tag文件的效果:



以下是调用Tag文件的效果:





Rect.tag:

这是一个Tag文件,负责计算矩形的面积。
<%@ attribute name="sideA" required="true" %>
<%@ attribute name="sideB" required="true" %>
<%!
public String getArea(double a,double b)
{ if(a>0&&b>0)
{
double area=a*b ;
return "
矩形的面积:"+area;
}
else
{ return("
"+a+","+b+"不能构成一个矩形,无法计算面积");
}
}
%>
<% out.println("
JSP页面传递过来的两条边:"+sideA+","+sideB);
double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
out.println(getArea(a,b));
%>
Circle.tag:

这是一个Tag文件,负责计算园的面积。
<%@ attribute name="radius" required="true" %>
<%!
public String getArea(double r)
{ if(r>0)
{
double area=Math.PI*r*r ;
return "
圆的面积:"+area;
}
else
{ return("
"+r+"不能构成一个圆,无法计算面积");
}
}
%>
<% out.println("
JSP页面传递过来的半径:"+radius);
double r=Double.parseDouble(radius);
out.println(getArea(r));
%>
7.6位小数
答:
one.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.text.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>



面积保留3位小数点:
<%
NumberFormat f=NumberFormat.getInstance();
f.setMaximumFractionDigits(3);
double result=

area.doubleValue();
String str=f.format(result);
out.println(str);
%>


two.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.text.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>



面积保留6位小数点:
<%
NumberFormat f=NumberFormat.getInstance();
f.setMaximumFractionDigits(6);
double result=area.doubleValue();
String str=f.format(result);
out.println(str);
%>


GetArea.tag:
<%@ attribute name="sideA" required="true" %>
<%@ attribute name="sideB" required="true" %>
<%@ attribute name="sideC" required="true" %>
<%@ variable name-given="area" variable-class="ng.Double" scope="AT_END" %>
<%
double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
if(a+b>c&&a+c>b&&c+b>a)
{ double p=(a+b+c)/2.0;
double result=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
jspContext.setAttribute("area",new Double(result));
}
else
{ jspContext.setAttribute("area",new Double(-1));
}
%>
8.参照图
答:
linxi8.jsp:
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="ok"%>












Biaoge.tag:
<%@ attribute name="color" %>
<%@ attribute name="name" %>
<%@ attribute name="phone" %>
<%@ attribute name="email" %>

<%=name%>
<%=phone%>
<%=email%>



习题四
1.答:(C)。
2.答:将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象。
3.显示字符串的长度
答:
inputString.jsp:
<%@ page contentType="text/html;charset=GB2312" %>








computer.jsp:
<%@ page contentType="text/html;charset=GB2312" %>

<% String textContent=request.getParameter("str");
byte b[]=textContent.getBytes("ISO-8859-1");
textContent=new String(b);
%>
字符串:<%=textContent%>的长度:<%=textContent.leng

th()%>

4.答:85
5.答:(1) 不相同。(2)相同。(3)可能消失。(4)一定消失。
6.26个小字母
答:
lianxi6.jsp:
<%@ page contentType="text/html;charset=GB2312" %>


<%
session.setAttribute("message","请您猜字母");
char a[]=new char[26];
int m=0;
for(char c='a';c<='z';c++)
{ a[m]=c;
m++;
}
int randomIndex=(int)(Math.random()*a.length);
char ch=a[randomIndex]; //获取一个英文字母
session.setAttribute("savedLetter",new Character(ch));
session.setAttribute("count",new Integer(0));
%>
访问或刷新该页面可以随机得到一个英文字母.

单击超链接去猜出这个字母:去猜字母


guess.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="guess"%>

<% String str=request.getParameter("clientGuessLetter");
if(str==null)
{ str="*";
}
if(str.length()==0)
{ str="*";
}
%>

当前猜测结果:<%=message%>
<% if(message.startsWith("您猜对了"))
{
%>
重新获得一个字母
<% }
else
{
%>
输入您的猜测:





<% }
%>



GuessLetter.jsp:
<%@ tag pageEncoding="GB2312" %>
<%@ attribute name="guessLetter" required="true" %>
<%@ variable name-given="message" scope="AT_END" %>
<% String mess="";
Character ch=(Character)session.getAttribute("savedLetter");
char realLetter=ch.charValue();
char c=(guessLetter.trim()).charAt(0);
if(c<='z'&&c>='a')
{
if(realLetter==c)
{
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
mess="您猜对了,这是第"+n+"次猜测";
}
else if(realLetter{
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
mess="您猜大了,这是第"+n+"次猜测";
}
else if(realLetter>c)
{
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
mess="您猜小了,这是第"+n+"次猜测";
}
}
else
{ mess="请输入a至z之间的英文字母。";
}
jspContext.setAttribute("message",mess);
%>
习题五
1.答:不能
2.答:调用public long length()方法。
3.答:A和D。
4. 答:RandomAccessFile类既不是输入流类InputStream类的子类,也不是输出

流类Outputstream类的子类。想对一个文件进行读写操作时,可以创建一个指向该文件的RandomAccessFile流,这样我们既可以从这个流中读取这个文件的数据,也可以通过这个流给这个文件写入数据。
5. Read.tag读取文件的内容
--答:
input.jsp:
<%@ page contentType="text/html;charset=GB2312" %>



输入目录:

输入文件名字:




read.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="file"%>


<%
String s1=request.getParameter("dirName");
String s2=request.getParameter("fileName");
if(s1.length()>0&&s2.length()>0)
{
%>

读取的文件内容:


<%
}
%>


Read.tag:
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.io.*" %>
<%@ attribute name="dirName" required="true" %>
<%@ attribute name="fileName" required="true" %>
<%@ variable name-given="content" scope="AT_END" %>
<%
StringBuffer str=new StringBuffer();
try{
File f=new File(dirName,fileName);
FileReader in=new FileReader(f);
BufferedReader bufferin=new BufferedReader(in);
String temp;
while((temp=bufferin.readLine())!=null)
{ str.append(temp);
}
bufferin.close();
in.close();
}
catch(IOException e)
{
str.append(""+e);
}
jspContext.setAttribute("content",new String(str));
%>
习题六
1.employee
答:
a.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>




在<%=biao%>表查询到记录:

<%=queryResult %>



GetRecord.tag:
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="dataBaseName" required="true" %>
<%@ attribute name="tableName" required="true" %>
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="queryResult" scope="AT_END" %>
<%
StringBuffer result;
result=new StringBuffer();
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(Exception e)
{
out.print(e);
}
Connection con;
Statement sql;
ResultSet rs;
try{ result.append("");
String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+dataBaseName;
String user="sa";
String password="sa";

con=DriverManager.getConnection(uri,user,password);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int 字段个数=0;
result.append("

");
while(rs1.next())
{ 字段个数++;
String clumnName=rs1.getString(4);
result.append("");
}
result.append("");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM "+tableName);
while(rs.next())
{ result.append("");
for(int k=1;k<=字段个数;k++)
{ result.append("");
}
result.append("");
}
result.append("
"+clumnName+"
"+rs.getString(k)+"
");
con.close();
}
catch(SQLException e)
{ result.append("请输入正确的用户名和密码");
}
jspContext.setAttribute("queryResult",new String(result));
jspContext.setAttribute("biao",tableName);
%>

2.记录
答:
b.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="add"%>



madeTime="2009-10-10" price="2678"/>
向<%=biao%>添加的记录是:

<%=newRecord %>



AddRecord.tag:
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="tableName" required="true"%>
<%@ attribute name="number" required="true" %>
<%@ attribute name="name" required="true" %>
<%@ attribute name="madeTime" required="true" %>
<%@ attribute name="price" required="true" %>
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="newRecord" scope="AT_END" %>
<%
float p=Float.parseFloat(price);
String condition=
"INSERT INTO product VALUES"+
"("+"'"+number+"','"+name+"','"+madeTime+"',"+p+")";
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(Exception e) {}
Connection con;
Statement sql;
ResultSet rs;
try{
String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
con=DriverManager.getConnection(uri,"sa","sa");
sql=con.createStatement();
sql.executeUpdate(condition);
con.close();
String str=("("+"'"+number+"','"+name+"','"+madeTime+"',"+p+")");
jspContext.setAttribute("newRecord",str);
}
catch(Exception e)
{
jspContext.setAttribute("newRecord",""+e);
}
jspContext.setAttribute("biao",tableName);
%>
3.更新条件
答:
c.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="reNew"%>


ze=2>
madeTime="2008-10-10" price="2379"/>
表<%=biao%>更新后的记录是:

<%=reNewRecord %>



RenewRecord.tag:
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="tableName" required="true"%>
<%@ attribute name="number" required="true" %>
<%@ attribute name="name" required="true" %>
<%@ attribute name="madeTime" required="true" %>
<%@ attribute name="price" required="true" %>
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="reNewRecord" scope="AT_END" %>
<%
float p=Float.parseFloat(price);
String condition1="UPDATE product SET name= '"+name+
"' WHERE number="+"'"+number+"'" ,
condition2="UPDATE product SET madeTime= '"+madeTime+
"' WHERE number="+"'"+number+"'",
condition3="UPDATE product SET price= "+price+
" WHERE number="+"'"+number+"'" ;

try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(Exception e) {}
Connection con;
Statement sql;
ResultSet rs;
try{
String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
con=DriverManager.getConnection(uri,"sa","sa");
sql=con.createStatement();
sql.executeUpdate(condition1);
sql.executeUpdate(condition2);
sql.executeUpdate(condition3);
con.close();
String str=("("+"'"+number+"','"+name+"','"+madeTime+"',"+p+")");
jspContext.setAttribute("reNewRecord",str);
}
catch(Exception e)
{
jspContext.setAttribute("reNewRecord",""+e);
}
jspContext.setAttribute("biao",tableName);
%>
4.删除条件
答:
d.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="del"%>




表<%=biao%>删除的记录的键字段的值是:

<%=deletedRecord %>



DelRecord.tag:
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="tableName" required="true"%>
<%@ attribute name="number" required="true" %>
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="deletedRecord" scope="AT_END" %>
<%
String condition="DELETE FROM product WHERE number = '"+number+"'";
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(Exception e) {}
Connection con;
Statement sql;
ResultSet rs;
try{
String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
con=DriverManager.getConnection(uri,"sa","sa");
sql=con.createStatement();
sql.executeUpdate(condition);
con.close();
jspContext.setAttribute("deleted

Record",number);
}
catch(Exception e)
{
jspContext.setAttribute("deletedRecord",""+e);
}
jspContext.setAttribute("biao",tableName);
%>
习题七
1.答:把创建bean的字节码5保存到 mymoon\WEB-INF\classes\blue\sky中。
2.答:不允许。
3. 答: C。
4. A
5.矩形的面积
a.jsp:
<%@ page contentType="text/html;charset=GB2312" %>



输入矩形的边A:

输入矩形的边B:




b.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Rect"%>






边A是:

边B是:

面积是:



Rect.java:
package tom.jiafei;
public class Rect
{
double sideA,sideB,area;
public void setSideA(double a)
{
sideA=a;
}
public double getSideA()
{
return sideA;
}
public void setSideB(double b)
{
sideB=b;
}
public double getSideB()
{
return sideB;
}
public double getArea()
{
if(sideA>=0&&sideA>=0)
area=sideA*sideB;
else
area=-1;
return area;
}
}
习题八
1.答:在服务器端。
2.答:首先调用init方法。
3.答:正确。
4.怎样配置web。xml文件?
答:要在web.xml中添加如下内容:

myservlet
star.flower.Dalian


myservlet
/lookyourServlet

5. 答:doGet和doPost方法。
6. 答:HttpServletResponse类的sendRedirect方法可以把用户重新定向到其他页面或servlet,但是不能将用户对当前JSP页面或servlet的请求和响应(HttpServletRequest对象和HttpServletResponse对象)传递给所重新定向JSP页面或servlet。RequestDispatcher对象使用forward方法可以把用户对当前JSP页面或servle的请求转发给另一个JSP页面或servlet,而且将用户对当前JSP页面或servlet的请求和响应(HttpServletRequest对象和HttpServletResponse对象)传递给所转发的JSP页面或servlet。也就是说,当前页面所要转发的目标页面或servlet对象可以使用request获取用户提交的数据。
7.答:HttpServletRequest对象request调用getSession方法获取用户的session对象
习题九
1.答:Javabean。
2. 答:Servlet。
3.答:JSP页面。
4.答:MVC结构可以使Web程序更具有对象化特性,也更

容易维护。
5.答:由servlet负责创建。
6.答:
(1) 模型
Equation.java:
package moon.yourbean;
public class Equation
{
double a,b,c;
String rootOne,rootTwo;
boolean squareEquation;
public void setA(double a)
{ this.a=a;
}
public double getA()
{ return a;
}
public void setB(double b)
{ this.b=b;
}
public double getB()
{ return b;
}
public void setC(double c)
{ this.c=c;
}
public double getC()
{ return c;
}
public void setRootOne(String root)
{ rootOne=root;
}
public String getRootOne()
{ return rootOne;
}
public void setRootTwo(String root)
{ rootTwo=root;
}
public String getRootTwo()
{ return rootTwo;
}
public void setIsSquareEquation(boolean b)
{ squareEquation=b;
}
public boolean getIsSquareEquation()
{ return squareEquation;
}
}
(2) 视图
input.jsp:
<%@ page contentType="text/html;Charset=GB2312" %>



输入一元二次方程的系数:

二次项系数a:
一次项系数b:
常数项c:



show.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="moon.yourbean.*"%>


一元二次方程的系数是:

二次项系数:
一次项系数:
常数项:

是一元二次方程吗?

方程的两个根是:,


(3) 控制器
HandleData.java:
package sun.yourservlet;
import moon.yourbean.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleData extends HttpServlet
{ public void init(ServletConfig config) throws ServletException
{super.init(config);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ Equation equ=new Equation(); //创建Javabean对象
request.setAttribute("equation",equ);// 将equ存储到HttpServletRequest对象中
double a=Double.parseDouble(request.getParameter("a"));
double b=Double.parseDouble(request.getParameter("b"));
double c=Double.parseDouble(request.getParameter("c"));
equ.setA(a); //将数据存储在equ中
equ.setB(b);

equ.setC(c);
if(a!=0)
equ.setIsSquareEquation(true);
else
equ.setIsSquareEquation(true);
double disk=b*b-4*a*c;
if(disk<0)
{ equ.setRootOne("无实根");
equ.setRootTwo("无实根");
}
else
{ double root1=(-b+Math.sqrt(disk))/(2*a),
root2=(-b-Math.sqrt(disk))/(2*a);
equ.setRootOne(""+root1);
equ.setRootTwo(""+root2);
}
RequestDispatcher dispatcher=request.getRequestDispatcher("show.jsp");
dispatcher.forward(request,response); //请求show.jsp显示equ中的数据
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}


相关文档
最新文档