习题一
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 解
1
释器,这个文件在 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 。
2
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)
{
3
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="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"%>
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);
6