收藏 分销(赏)

JSP程序设计习题解答[1].doc

上传人:a199****6536 文档编号:2019099 上传时间:2024-05-13 格式:DOC 页数:24 大小:152.54KB 下载积分:10 金币
下载 相关 举报
JSP程序设计习题解答[1].doc_第1页
第1页 / 共24页
JSP程序设计习题解答[1].doc_第2页
第2页 / 共24页


点击查看更多>>
资源描述
习题一 1.运行startup.bat启动Tomcat服务器的好处是什么? 答:确保Tomcat服务器使用的是Java_home环境变量设置的JDK。 2.请在C:\下建立一个名字为book的目录,并将该目录设置成一个Web服务目录,然后编写一个简单的JSP页面,保存到该目录中,让用户使用虚拟目录red访问该JSP页面。 答:属于操作题,解答略。 3.怎样访问Web服务目录子目录中的JSP页面? 答:Web服务目录的下的目录称为该Web服务目录下的相对Web服务目录。浏览器的地址栏中键入:http://IP:8080/Web目录名字/子目录名字/JSP页面。 4.如果想修改Tomcat服务器的端口号,应当修改哪个文件?能否将端口号修改为80。 答:修改Tomcat服务器安装目录中conf文件夹中的主配置文件:server.xml,只要没有其他应用程序正在占用80,就可以将端口号设置为80。 习题二 1.“<%!”和“%>”之间声明的变量与“<%”和“%>”之间声明的变量有何不同? 答:“<%!”和“%>”之间声明的变量在整个JSP页面内都有效,称为JSP页面的成员变量,成员变量的有效范围与标记符号<%!、%>所在的位置无关。所有用户共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。 “<%”和“%>”之间声明的变量称为局部变量,局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。运行在不同线程中的Java程序片的局部变量互不干扰,即一个用户改变Java程序片中的局部变量的值不会影响其他用户的Java程序片中的局部变量。当一个线程将Java程序片执行完毕,运行在该线程中的Java程序片的局部变量释放所占的内存。 2.如果有两个用户访问一个JSP页面,该页面中的Java程序片将被执行几次? 答:两次。 3.是否允许一个JSP页面同时含有如下两条page指令: <%@ page contentType="text/html;charset=GB2312" %> <%@ page contentType="application/msword" %> 是否允许JSP页面同时含有如下两条指令: <%@ page import="java.util.*" %> <%@ page import="java.sql.*" %> 答:第一个问题的答案是不允许;第二个问题的答案是允许。 4.假设有两个用户访问下列JSP页面hello.jsp,请问第一个访问和第二个访问hello.jsp页面的用户所看到的页面的效果有何不同? Hello.jsp <%@ page contentType="text/html;charset=GB2312" %> <%@ page isThreadSafe="false" %> <html><body> <%! int sum=10; void add(int m){ sum=sum+m; } %> <% int n=600; add(n); %> <%=sum%> </body></html> 答:第一个用户看到的sum的值是610,第二个用户看到的sum的值是1210 5.请编写一个简单的JSP页面,显示大写英文字母表。 答: <%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY> <% for(char c='A';c<='Z';c++) { out.print(" "+c); } %> </BODY></HTML> 6.请简单叙述include指令标记和include动作标记的不同。 答:include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件,即JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。因此,插入文件后,必须保证新合并成的JSP页面符合JSP语法规则,即能够成为一个JSP页面文件。 include动作标记告诉JSP页面动态加载一个文件,不把JSP页面中动作指令include所指定的文件与原JSP页面合并一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行时(Java文件的字节码文件被加载执行)才被处理。如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。 7.编写两个JSP页面:main.jsp和lader.jsp,将两个JSP页面保存在同一Web服务目录中。main.jsp使用include动作标记动态加载lader.jsp页面。lader.jsp页面可以计算并显示梯形的面积。当lader.jsp被加载时获取main.jsp页面中include动作标记的param子标记提供的梯形的上底、下底和高的值。 答: main.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY> <jsp:include page="lader.jsp"> <jsp:param name="a" value="5" /> <jsp:param name="b" value="6" /> <jsp:param name="h" value="10" /> </jsp:include> </BODY> </HTML> lader.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY> <% 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; %> <P> 梯形面积:<%=area%> </BODY> </HTML> 习题三 1.用户可以使用浏览器直接访问一个Tag文件吗? 答:不可以 2.Tag文件应当存放在怎样的目录中? 答:如果某个Web服务目录下的JSP页面准备调用一个Tag文件,那么必须在该Web服务目录下,建立目录:Web服务目录\WEB-INF\tags,其中,WEB-INF和tags都是固定的子目录名称,而tags下的子目录名字可由用户给定。一个Tag文件必须保存到tags目录或其下的子目录中。 3.Tag文件中的tag指令可以设置哪些属性的值? 答:body-content、language、import、pageEncoding 。 4.Tag文件中的attribute指令有怎样的作用? 答:使用attribute指令可以动态地向该Tag文件传递对象的引用。 5.Tag文件中的varibute指令有怎样的作用? 答:使用variable指令可以将Tag文件中的对象返回给调用该Tag文件的JSP页面。 6.编写两个Tag文件Rect.tag和Circle.tag。Rect.tag负责计算并显示矩形的面积,Circle.tag负责计算并显示圆的面积。编写一个JSP页面lianxi6.jsp,该JSP页面使用Tag标记调用Rect.tag和Circle.tag。调用Rect.tag时,向其传递矩形的两个边的长度;调用Circle.tag时,向其传递圆的半径。 答: Lianxi6.jsp: <%@ page contentType="text/html;Charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%> <HTML> <BODY> <H3>以下是调用Tag文件的效果:</H3> <computer:Rect sideA="5" sideB="6"/> <H3>以下是调用Tag文件的效果:</H3> <computer:Circle radius="16"/> </BODY> </HTML> Rect.tag: <h4>这是一个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 "<BR>矩形的面积:"+area; } else { return("<BR>"+a+","+b+"不能构成一个矩形,无法计算面积"); } } %> <% out.println("<BR>JSP页面传递过来的两条边:"+sideA+","+sideB); double a=Double.parseDouble(sideA); double b=Double.parseDouble(sideB); out.println(getArea(a,b)); %> Circle.tag: <h4>这是一个Tag文件,负责计算园的面积。 <%@ attribute name="radius" required="true" %> <%! public String getArea(double r) { if(r>0) { double area=Math.PI*r*r ; return "<BR>圆的面积:"+area; } else { return("<BR>"+r+"不能构成一个圆,无法计算面积"); } } %> <% out.println("<BR>JSP页面传递过来的半径:"+radius); double r=Double.parseDouble(radius); out.println(getArea(r)); %> 7.编写一个Tag文件GetArea.tag负责求出三角形面积,并使用variable指令返回三角形的面积给调用该Tag文件的JSP页面。JSP页面负责显示Tag文件返回的三角形的面积。JSP在调用Tag文件时,使用attribute指令将三角形三边的长度传递给Tag文件。one.jsp和two.jsp都使用Tag标记调用GetArea.tag。one.jsp将返回三角形的面积保留最多3位小数、two.jsp将返回的三角形面积保留最多6位小数。 答: one.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ page import ="java.text.*" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%> <HTML> <BODY bgcolor=cyan> <computer:GetArea sideA="3" sideB="6" sideC="5"/> <h4> 面积保留3位小数点: <% NumberFormat f=NumberFormat.getInstance(); f.setMaximumFractionDigits(3); double result=area.doubleValue(); String str=f.format(result); out.println(str); %> </BODY> </HTML> two.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ page import ="java.text.*" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%> <HTML> <BODY bgcolor=cyan> <computer:GetArea sideA="3" sideB="6" sideC="5"/> <h4> 面积保留6位小数点: <% NumberFormat f=NumberFormat.getInstance(); f.setMaximumFractionDigits(6); double result=area.doubleValue(); String str=f.format(result); out.println(str); %> </BODY> </HTML> GetArea.tag: <%@ attribute name="sideA" required="true" %> <%@ attribute name="sideB" required="true" %> <%@ attribute name="sideC" required="true" %> <%@ variable name-given="area" variable-class="java.lang.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"%> <html> <body> <table border=1> <ok:Biaoge color="yellow" name="姓名" phone="电话" email="email"> <ok:Biaoge color="cyan" name="张三" phone="12345678" email="ss@"/> <ok:Biaoge color="#ffc0ff" name="李小花" phone="9876543" email="cc@"/> <ok:Biaoge color="cyan" name="孙六" phone="11223355" email="pp@"/> <ok:Biaoge color="#ffc0ff" name="吴老二" phone="66553377" email="ee@"/> </ok:Biaoge> </table> </body> </html> Biaoge.tag: <%@ attribute name="color" %> <%@ attribute name="name" %> <%@ attribute name="phone" %> <%@ attribute name="email" %> <tr bgcolor="<%=color%>"> <td width=60><%=name%></td> <td width=60><%=phone%></td> <td width=60><%=email%></td> </tr> <jsp:doBody/> 习题四 1.答:(C)。 2.答:将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象。 3.答: inputString.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=green> <FORM action="computer.jsp" method=post name=form> <INPUT type="text" name="str"> <INPUT TYPE="submit" value="提交" name="submit"> </FORM> </BODY> </HTML> computer.jsp: <%@ page contentType="text/html;charset=GB2312" %> <MHML><BODY> <% String textContent=request.getParameter("str"); byte b[]=textContent.getBytes("ISO-8859-1"); textContent=new String(b); %> 字符串:<%=textContent%>的长度:<%=textContent.length()%> </BODY></HTML> 4.答:实现用户的重定向。 5.答:(1) 不相同。(2)相同。(3)可能消失。(4)一定消失。 6.答: lianxi6.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY > <% 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)); %> 访问或刷新该页面可以随机得到一个英文字母. <BR>单击超链接去猜出这个字母:<A href="guess.jsp">去猜字母</A> </BODY> </HTML> guess.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="guess"%> <HTML><BODY bgcolor=cyan> <% String str=request.getParameter("clientGuessLetter"); if(str==null) { str="*"; } if(str.length()==0) { str="*"; } %> <guess:GuessLetter guessLetter="<%=str%>" /> 当前猜测结果:<%=message%> <% if(message.startsWith("您猜对了")) { %> <br><A HREF="lianxi6.jsp">重新获得一个字母</A> <% } else { %> <BR>输入您的猜测: <FORM action="" method="post" name=form> <INPUT type="text" name="clientGuessLetter" > <INPUT TYPE="submit" value="送出" name="submit"> </FORM> <% } %> </FONT> </BODY> </HTML> 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<c) { 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. 答: input.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=yellow> <FORM action="read.jsp" Method="post" > 输入目录:<Input type=text name="dirName"> <BR>输入文件名字:<Input type=text name="fileName"> <Input type=submit value="提交"> </FORM> </BODY> </HTML> read.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="file"%> <HTML> <BODY bgcolor=pink> <% String s1=request.getParameter("dirName"); String s2=request.getParameter("fileName"); if(s1.length()>0&&s2.length()>0) { %> <file:Read dirName="<%=s1%>" fileName="<%=s2%>" /> <br>读取的文件内容: <br><TextArea rows=10 cols=16><%=content%></TextArea> <% } %> </BODY> </HTML> 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.答: a.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%> <HTML> <Body bgcolor=cyan> <Font size=2> <inquire:GetRecord dataBaseName="pubs" tableName="employee"/> 在<%=biao%>表查询到记录: <BR> <%=queryResult %> </Font> </Body> </HTML> 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("<table border=1>"); 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("<tr>"); while(rs1.next()) { 字段个数++; String clumnName=rs1.getString(4); result.append("<td>"+clumnName+"</td>"); } result.append("</tr>"); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM "+tableName); while(rs.next()) { result.append("<tr>"); for(int k=1;k<=字段个数;k++) { result.append("<td>"+rs.getString(k)+"</td>"); } result.append("</tr>"); } result.append("</table>"); 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"%> <HTML> <Body bgcolor=cyan> <Font size=2> <add:AddRecord tableName="product" number="9888" name="电视机" madeTime="2009-10-10" price="2678"/> 向<%=biao%>添加的记录是: <BR> <%=newRecord %> </Font> </Body> </HTML> AddRecord.tag: <
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服