当前位置:文档之家› JSP课后参考答案

JSP课后参考答案

习题1 JSP 简介1. 安装Tomcat5.5所在的计算机需要事先安装JDK吗?答:需要。

2. 运行startup.bat启动Tomcat服务器的好处是什么?答:能够确保Tomcat服务器使用的是JA V A_HOME环境变量设置的JDK.3. Boy.jsp和boy.jsp是否是相同的JSP文件名字不是4. 请在D:\下建立一个名字为water的目录,并将该目录设置成一个Web服务目录,然后编写一个简单的JSP页面保存到该目录中,让用户使用权虚拟目录fish来访问该JSP页面?答:设置方法:①建立D:\ water目录;②修改server.xml文件,在</host>上一行添加:<Context path="/fish" docBase="D:\ water" debug="0" reloadable="true"/>③使用http://localhost:8080/ fish /example1_1.jsp访问example1_1.jsp页面.5. 假设Dalian是一个Web服务目录,其虚拟目录为moon, A.jsp保存在Dalian的子目录sea中。

那么在Tomcat服务器(端口号8080)所在计算机的浏览器键入下列哪种方式是访问A.jsp的正确方式?A.http://127.0.0.1:8080/A.jsp B. http://127.0.0.1:8080/Dalian/A.jspC. http://127.0.0.1:8080/moon/A.jspD. http://127.0.0.1:8080/moon/sea/A.jsp答:D6. 如果想修改的端口号,应当哪个文件?能否将端口号修改为80?答:修改Tomcat服务器的conf目录下的主配置文件server.xml可以更改端口号.若Tomcat服务器上没有其他占有80端口号的程序,可以将其修改为8080,否则不能。

习题2 JSP页面1."<%!"和"%>"之间声明的变量与"<%"和"%>"声明的变量有何不同?答:"<%!"和"%>"声明的变量为类的成员变量,其所占的内存直到Tomcat服务器关闭才释放."<%"和"%>"为类方法中声明的局部变量,仅在JSP页面后继的程序片及表达式中有效.2. 如果有2个用户访问一个JSP页面,该页面中的Java程序片将被执行几次?答:当有一个用户访问JSP页面,JAVA程序片就被访问一次.3. 假设有2个不同用户访问下列JSP页面test.jsp,请问第一个和第二个访问test.jsp页面的用户看到的页面效果有何不同?test.jsp<%@ page contentType="text/html;Charset=GB2312" %><html><body><%!String str=new String("你好");synchronized void f(String s){ str=str+s; }%><%String s="abcd";f(s);%><%=str%></body></html>答: 第一个客户看到结果是你好abcd第二个客户看到结果是你好abcdabcd4.<%@ page contentType="text/html;Charset=GB2312" %> <html><body><%int i,j;for(i=2;i<=100;i++){for(j=2;j<i;j++){if (i%j==0){ break;}}if(j==i){%><%=i%>&nbsp;&nbsp;<%}}%></body></html>结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 975.a.jsp<%@ page contentType="text/html;charset=GB2312" %><html><body><form action="b.jsp" method="post" name="form"><p>请输入一个字符串:<br/><input type="text" name="mes"/><br/><input type="submit" name="submit" value="提交"/></form></body></html>b.jsp<%@ page contentType="text/html;charset=GB2312" %><html><body><%String str=request.getParameter("mes");out.print(str+"<br/>");out.print("其长度为:"+str.length());%></body></html>6.inputNumber.jsp<%@ page contentType="text/html;charset=GB2312" %><html><body><form action="getNumber.jsp" method="post" name="form"><p>请输入一个数字:<br/><input type="text" name="number"/><br/><input type="submit" name="submit" value="提交"/></form></body></html>getNumber.jsp<%@ page contentType="text/html;charset=GB2312" %><html><body><%int number=Integer.parseInt(request.getParameter("number"));out.print(number+"的平方为:"+number*number+"<br/>");out.print(number+"的立方为:"+number*number*number+"<br/>");%></body></html>习题3 JSP标记1.只能1个2.可以3.include指令标记:是把被包含的文件的内容放于包含文件中,组成一个文件后编译运行.include动作标记: 是把被包含的文件的运行结果放于包含文件运行产生的结果中,这2个文件各自编译运行.4.param动作标记经常作为include、forward动作标记的字标记,作用是向动态加载的页面传值5.服务目录下建立WEB-INF\tags,将Tag文件存放在“服务目录下WEB-INF\tag s”下或其子目录下6.用浏览器不可以直接访问Tag文件,可以通过jsp页面访问7.(1)JSP页面用<taglib>指令标记将其引入标记库:<%@ taglib tagdir="/WEB-INF/tags" prefix="***" %>(2)JSP页面使用Tag标记调用Tag文件:<***:tag文件名/>8.8.jsp<%@ page contentType="text/html;Charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="area" %> <html><body><h3>以下是调用Rect.tag文件的效果:</h3><area:Rect width="6" height="4"/><h3>以下是调用Circle.tag文件的效果:</h3><area:Circle radius="10"/></body></html>Rect.tag<%@ attribute name="width" required="true" %> <%@ attribute name="height" required="true" %> <html><body><p>该Tag文件计算长方形的面积.<%!public String getArea(double a,double b){double area;area=a*b;return "<br/>面积:"+area;}%><%out.println("JSP页面传递过来的长、宽分别为:"+width+" "+height);double a=Double.parseDouble(width);double b=Double.parseDouble(height);out.println(getArea(a,b));%></body></html>Circle.tag<%@ attribute name="radius" required="true" %><html><body><p>该Tag文件计算园的面积.<%!public String getArea(double a){double area;area=a*a*3.141593;return "<br/>面积:"+area;}%><%out.println("JSP页面传递过来的半径为:"+radius);double a=Double.parseDouble(radius);out.println(getArea(a));%></body></html>结果:以下是调用Rect.tag文件的效果:该Tag文件计算长方形的面积. JSP页面传递过来的长、宽分别为:6 4面积:24.0以下是调用Circle.tag文件的效果:该Tag文件计算园的面积. JSP页面传递过来的半径为:10面积:314.1593习题4 JSP 内置对象1.假设JSP使用的表单中有如下的GUI(复选框)<input type="checkbox" name="item" value="bird">鸟<input type="checkbox" name="item" value="apple">苹果<input type="checkbox" name="item" value="cat">猫<input type="checkbox" name="item" value="">月亮该表单所请求的JSP可以使用内置对象request对象获取该表单提交的数据,那么,下列哪些是request获取该表单提交值的正确语句?A. String a=request.getParameter("item");B. String b=request.getParameter("checkbox");C. String c[]=request.getParameterValues("item");D. String d[]=request.getParameterValues("checkbox");答: C.2. 如果表单提交的信息中有汉字,接收该信息的页面应做怎样的处理?答:处理方法有2种:第1种:<%@ page contentType="text/html;Charset=GB2312" %>指令中的Charset首字母”C”大写.第2种:重新编码<% String str1=request.getParameter("number");byte c[]=str1.getBytes("ISO-8859-1");str1=new String(c);%>4. reponse调用sendRedirect(URL: url)方法的作用是什么?答:从一个页面跳转到sendRedirect(URL: url)中url指定的页面,并且这种跳转是客户端跳转.6. 一个用户在不同Web服务目录中的session对象相同吗?答:不相同.7. 一个用户在同一Web服务目录中的session对象相同吗?答:相同.8. 如果用户长时间不关闭浏览器,用户的session对象可能消失吗?答:可能消失.9. 用户关闭浏览器后,用户的session对象一定消失吗? 答:一定消失.习题5 JSP与Javabean1. 假设Web服务目录Dalian中的JSP页面要使用一个bean,该bean 的包名为blue.sky.请说明,应当怎样保存bean的字节码文件?答:(1)在当前Web服务目录下建立如下目录结构:Web服务目录\WEB-INF\classes(2)根据类的包名,在目录classes下建立相应的子目录,将获得的字节码文件保存在子目录下2. tom.jiafei.Circle是创建bean的类,下列哪个标记是正确创建session周期bean的标记?答:<jsp:useBean id="circll" class="tom.jiafei.Circle" scope="page"/><jsp:useBean id="circll" class="tom.jiafei.Circle" scope="request"/><jsp:useBean id="circll" class="tom.jiafei.Circle" scope="session"/><jsp:useBean id="circll" class="tom.jiafei.Circle" scope="application"/> 答: C.3. 假设创建bean的类有一个int型的属性number,下列哪个方法是设置该属性值的正确方法?A. public void setNumber(int n)B. void setNumber(int n){number=n; {number=n;} }C. public void SetNumber(int n)D. void Setnumber(int n){number=n; {number=n;} }答: A.4.input_1.jsp<%@ page contentType="text/html;Charset=GB2312" %><%@ page import="tom.*" %><html><body><form action="" method="post">请输入圆的半径(数字字符):<input type="text" name="radius"/><input type="submit" value="计算周长、面积" /></form><jsp:useBean id="circle" class="tom.Circle" scope="page" /><jsp:setProperty name="circle" property="radius" param="radius"/><br/>圆的周长:<jsp:getProperty name="circle" property="perimeter"/><br/>圆的面积:<jsp:getProperty name="circle" property="area"/> </body></html>Circle.javapackage tom;public class Circle{double radius,perimeter,area;public Circle(){radius=0;}public void setRadius(double r){radius=r;}public double getRadius(){return radius;}public double getPerimeter(){perimeter=2*3.141593*radius;return perimeter;}public double getArea(){area=3.141593*radius*radius;return area;}}结果:请输入圆的半径(数字字符):圆的周长:0.0圆的面积:0.0输入“10”提交请输入圆的半径(数字字符):圆的周长:62.83186圆的面积:314.15935.a.jsp<%@ page contentType="text/html;Charset=GB2312" %> <html><body><form action="b.jsp" method="post">长:<input type="text" name="length" />宽:<input type="text" name="width" /><input type="submit" value="计算面积:" /></form></body></html>b.jsp<%@ page contentType="text/html;Charset=GB2312" %> <%@ page import="tom.*" %><html><body><jsp:useBean id="countArea" class="tom.Rectangle" scope="page" /><jsp:setProperty name="countArea" property="length" param="length" /><jsp:setProperty name="countArea" property="width" param="width" />面积:<jsp:getProperty name="countArea" property="area" /></body></html>Rectangle.javapackage tom;public class Rectangle{double length,width,area;public Rectangle(){length=0;width=0;}public void setLength(double l){length=l;}public double getLength(){return length;}public void setWidth(double w){width=w;}public double getWidth(){return width;}public double getArea(){area=length*width;return area;}}结果:击计算面积面积:2000.06.getNumber.jsp<%@ page contentType="text/html;Charset=GB2312" %><%@ page import="java.util.*" %><%@ page import="tom.GuessNumber" %><html><body><%int n=(int)(Math.random()*100)+1;%><jsp:useBean id="guess" class="tom.GuessNumber" scope="session" /><jsp:setProperty name="guess" property="answer" value="<%=n%>" /><% session.setAtribute("time",new Date()); %><p>随机给你一个1到100之间的数,请猜这个数是多少?<% String str=response.encodeRedirectURL("guess.jsp"); %><form action="<%=str%>" method="post">输入你的猜测:<input type="text" name="guessNumber" /><input type="submit" value="提交:" /></form></body></html>guess.jsp<%@ page contentType="text/html;Charset=GB2312" %><%@ page import="java.util.*" %><%@ page import="tom.GuessNumber" %><html><body><%String strGuess=response.encodeRedirectURL("guess.jsp");StringstrGetNumber=response.encodeRedirectURL("getNumber.jsp");%><jsp:useBean id="guess" class="tom.GuessNumber" scope="session" /><jsp:setProperty name="guess" property="guessNumber" param="guessNumber" /><br/><jsp:getProperty name="guess" property="result" />,这是第<jsp:getProperty name="guess" property="guessCount" />猜<p>你给出的数是:<jsp:getProperty name="guess" property="guessNumber" /><%if (guess.isRight()==false){%><form action="<%=strGuess%>" method="post">再输入你的猜测:<input type="text" name="guessNumber" /><input type="submit" value="提交" /></form><%}elseout.println("<br/>您用的时间是"+((new Date()).getTime()-((Date)session.getAttribute("time")).getTime())/1000+"秒");%><br/><a href="<%=strGetNumber%>">链接到getNumbe.jsp重新玩猜数</a></body></html>GuessNumber.javapackage tom;public class GuessNumber{int answer,guessNumber,guessCount;String result=null;boolean right=false;public GuessNumber(){answer=0;guessNumber=0;guessCount=0;result=null;right=false;}public void setAnswer(int a){answer=a;guessCount=0;}public int getAnswer(){return answer;}public void setGuessNumber(int a) {guessNumber=a;guessCount++;if (guessNumber==answer){right=true;result="恭喜,猜对了";}else if (guessNumber>answer){result="猜大了";right=false;}else if (guessNumber<answer){result="猜小了";right=false;}}public int getGuessNumber() {return guessNumber;}public int getGuessCount() {return guessCount;}public String getResult() {return result;}public boolean isRight() {return right;}}习题6 JSP中的文件操作1.File类对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件的读写权限等。

相关主题