admin 管理员组

文章数量: 1184232


2024年3月7日发(作者:springbootmavenplugin不生效)

习题1 JSP 简介

1. 安装Tomcat5.5所在的计算机需要事先安装JDK吗?

答:需要。

2. 运行启动Tomcat服务器的好处是什么?

答:能够确保Tomcat服务器使用的是JAVA_HOME环境变量设置的JDK.

3. 和是否是相同的JSP文件名字

不是

4. 请在D:下建立一个名字为water的目录,并将该目录设置成一个Web服务目录,然后编写一个简单的JSP页面保存到该目录中,让用户使用权虚拟目录fish来访问该JSP页面?

答:设置方法:

① 建立D: water目录;

② 修改文件,在上一行添加:

reloadable="true"/>

③ 使用localhost:8080/ fish /example1_访问example1_页面.

1

5. 假设Dalian是一个Web服务目录,其虚拟目录为moon, 保存在Dalian的子目录sea中。那么在Tomcat服务器(端口号8080)所在计算机的浏览器键入下列哪种方式是访问的正确方式?

A.127.0.0.1:8080/

127.0.0.1:8080/Dalian/

C. 127.0.0.1:8080/moon/ D.

B.

127.0.0.1:8080/moon/sea/

答:D

6. 如果想修改的端口号,应当哪个文件?能否将端口号修改为80?

答:修改Tomcat服务器的conf目录下的主配置文件可以更改端口号.

若Tomcat服务器上没有其他占有80端口号的程序,可以将其修改为8080,否则不能。

习题2 JSP页面

1. "<%!"和"%>"之间声明的变量与"<%"和"%>"声明的变量有何不同?

答:

"<%!"和"%>"声明的变量为类的成员变量,其所占的内存直到

2

Tomcat服务器关闭才释放.

"<%"和"%>"为类方法中声明的局部变量,仅在JSP页面后继的程序片及表达式中有效.

2. 如果有2个用户访问一个JSP页面,该页面中的Java程序片将被执行几次?

答:当有一个用户访问JSP页面,JAVA程序片就被访问一次.

3. 假设有2个不同用户访问下列JSP页面,请问第一个和第二个访问页面的用户看到的页面效果有何不同?

<%@ page contentType="text/html;Charset=GB2312" %>

<%!

String str=new String("你好");

synchronized void f(String s)

{ str=str+s; }

%>

<%

String s="abcd";

3

f(s);

%>

<%=str%>

答: 第一个客户看到结果是 你好abcd

第二个客户看到结果是 你好abcdabcd

4.

<%@ page contentType="text/html;Charset=GB2312" %>

<%

int i,j;

for(i=2;i<=100;i++)

{

for(j=2;j

{

if (i%j==0)

{ break;}

}

4

if(j==i)

{

%>

<%=i%>  

<%

}

}

%>

结果:2 3 5 7 11 13 17 19 23 29

41 43 47 53 59 61 67 71 73 79

97

5.

<%@ page contentType="text/html;charset=GB2312" %>

请输入一个字符串:


5

31 37

83 89

<%@ page contentType="text/html;charset=GB2312" %>

<%

String str=ameter("mes");

(str+"
");

("其长度为:"+());

%>

6.

<%@ page contentType="text/html;charset=GB2312" %>

6

请输入一个数字:


<%@ page contentType="text/html;charset=GB2312" %>

<%

int number=nt(ameter("number"));

(number+"的平方为:"+number*number+"
");

(number+"的立方为"+number*number*number+"
");

%>

习题3 JSP标记

7

1.

只能1个

2.

可以

3.

include指令标记:是把被包含的文件的内容放于包含文件中,组成一个文件后编译运行.

include动作标记: 是把被包含的文件的运行结果放于包含文件运行产生的结果中,这2个文件各自编译运行.

4.

param动作标记经常作为include、forward动作标记的字标记,作用是向动态加载的页面传值

5.

服务目录下建立WEB-INFtags,将Tag文件存放在“服务目录下WEB-INFtags”下或其子目录下

6.

用浏览器不可以直接访问Tag文件,可以通过jsp页面访问

7.

(1)JSP页面用指令标记将其引入标记库:<%@ taglib

tagdir="/WEB-INF/tags" prefix="***" %>

(2)JSP页面使用Tag标记调用Tag文件:<***:tag文件名/>

8

8.

<%@ page contentType="text/html;Charset=GB2312" %>

<%@ taglib tagdir="/WEB-INF/tags" prefix="area" %>

以下是调用文件的效果:

以下是调用文件的效果:

<%@ attribute name="width" required="true" %>

<%@ attribute name="height" required="true" %>

该Tag文件计算长方形的面积.

<%!

public String getArea(double a,double b)

{

9

double area;

area=a*b;

return "
面积:"+area;

}

%>

<%

n("JSP页面传递过来的长、宽分别为:"+height);

double a=ouble(width);

double b=ouble(height);

n(getArea(a,b));

%>

<%@ attribute name="radius" required="true" %>

该Tag文件计算园的面积.

<%!

public String getArea(double a)

10

"+width+"

{

double area;

area=a*a*3.141593;

return "
面积:"+area;

}

%>

<%

n("JSP页面传递过来的半径为:"+radius);

double a=ouble(radius);

n(getArea(a));

%>

结果:

以下是调用文件的效果:

该Tag文件计算长方形的面积. JSP页面传递过来的长、宽分别为:6 4

面积:24.0

11

以下是调用文件的效果:

该Tag文件计算园的面积. JSP页面传递过来的半径为:10

面积:314.1593

习题4 JSP 内置对象

1.假设JSP使用的表单中有如下的GUI(复选框)

苹果

月亮

该表单所请求的JSP可以使用内置对象request对象获取该表单提交的数据,那么,下列哪些是request获取该表单提交值的正确语句?

A. String a=ameter("item");

B. String b=ameter("checkbox");

C. String c[]=ameterValues("item");

D. String d[]=ameterValues("checkbox");

答: C.

2. 如果表单提交的信息中有汉字,接收该信息的页面应做怎样的处

12

理?

答:处理方法有2种:

第1种:

<%@ page contentType="text/html;Charset=GB2312" %>指令中的Charset首字母”C”大写.

第2种:重新编码

<% String str1=ameter("number");

byte c[]=es("ISO-8859-1");

str1=new String(c);

%>

4. reponse调用sendRedirect(URL: url)方法的作用是什么?

答:从一个页面跳转到sendRedirect(URL: url)中url指定的页面,并且这种跳转是客户端跳转.

6. 一个用户在不同Web服务目录中的session对象相同吗?

答:不相同.

7. 一个用户在同一Web服务目录中的session对象相同吗?

答:相同.

8. 如果用户长时间不关闭浏览器,用户的session对象可能消失吗?

13

答:可能消失.

9. 用户关闭浏览器后,用户的session对象一定消失吗?

答:一定消失.

14

习题5 JSP与Javabean

1. 假设Web服务目录Dalian中的JSP页面要使用一个bean,该bean的包名为.请说明,应当怎样保存bean的字节码文件?

答:

(1)在当前Web服务目录下建立如下目录结构: Web服务目录WEB-INFclasses

(2)根据类的包名,在目录classes下建立相应的子目录,将获得的字节码文件保存在子目录下

2. 是创建bean的类,下列哪个标记是正确创建session周期bean的标记?

答:

答: C.

3. 假设创建bean的类有一个int型的属性number,下列哪个方法是设置该属性值的正确方法?

A. public void setNumber(int n) B. void setNumber(int n)

15

{number=n; {number=n;

} }

C. public void SetNumber(int n) D. void Setnumber(int n)

{number=n; {number=n;

} }

答: A.

4.

input_

<%@ page contentType="text/html;Charset=GB2312" %>

<%@ page import="tom.*" %>

请输入圆的半径(数字字符):

16

/>


圆的周长:

property="perimeter"/>


圆的面积:

package tom;

public class Circle

{

double radius,perimeter,area;

public Circle()

{

}

public void setRadius(double r)

{

}

public double getRadius()

{

17

radius=0;

radius=r;

}

}

return radius;

public double getPerimeter()

{

}

public double getArea()

{

}

area=3.141593*radius*radius;

return area;

perimeter=2*3.141593*radius;

return perimeter;

结果:

请输入圆的半径(数字字符):

圆的周长:0.0

圆的面积:0.0

输入“10”提交

计算周长、面积

18

请输入圆的半径(数字字符):

圆的周长:62.83186

圆的面积:314.1593

5.

计算周长、面积

<%@ page contentType="text/html;Charset=GB2312" %>

长:

宽:

<%@ page contentType="text/html;Charset=GB2312" %>

<%@ page import="tom.*" %>

19

/>

param="length" />

param="width" />

面积:

package tom;

public class Rectangle

{

name="countArea" property="length"

name="countArea" property="width"

double length,width,area;

public Rectangle()

{

}

public void setLength(double l)

{

20

length=0;

width=0;

}

}

length=l;

public double getLength()

{

}

public void setWidth(double w)

{

}

public double getWidth()

{

}

public double getArea()

{

}

area=length*width;

return area;

return width;

width=w;

return length;

结果:

21

长:击 计算面积

面积:2000.0

6.

宽:

计算面积:输入 “100”、“20”点<%@ page contentType="text/html;Charset=GB2312" %>

<%@ page import=".*" %>

<%@ page import="umber" %>

<%

int n=(int)(()*100)+1;

%>

/>

/>

<% ibute("time",new Date()); %>

随机给你一个1到100之间的数,请猜这个数是多少?

<% String str=RedirectURL(""); %>

22

输入你的猜测:

<%@ page contentType="text/html;Charset=GB2312" %>

<%@ page import=".*" %>

<%@ page import="umber" %>

<%

String strGuess=RedirectURL("");

String

strGetNumber=RedirectURL("");

%>

/>

param="guessNumber" />

23


,这是第

你给出的数是:

property="guessNumber" />

<%

if (t()==false)

{

name="guess"

%>

再输入你的猜测:

name="guessNumber" />

type="text"

<%

}

else

n("
您用的时间是"+((new

Date()).getTime()-((Date)ribute("time")).getTime())/1000+"秒");

%>


链接到重新玩

24

猜数

package tom;

public class GuessNumber

{

int answer,guessNumber,guessCount;

String result=null;

boolean right=false;

public GuessNumber()

{

}

public void setAnswer(int a)

{

answer=a;

25

answer=0;

guessNumber=0;

guessCount=0;

result=null;

right=false;

}

guessCount=0;

public int getAnswer()

{

}

public void setGuessNumber(int a)

{

guessNumber=a;

return answer;

guessCount++;

if (guessNumber==answer)

{

}

else if (guessNumber>answer)

{

}

else if (guessNumber

26

right=true;

result="恭喜,猜对了";

result="猜大了";

right=false;

{

result="猜小了";

right=false;

}

}

public int getGuessNumber()

{

return guessNumber;

}

public int getGuessCount()

{

return guessCount;

}

public String getResult()

{

return result;

}

public boolean isRight()

{

return right;

27

}

}

习题6 JSP中的文件操作

1.

File类对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件的读写权限等。

2.

File类对象.length() 返回的就是文件的长度

3.

RandomAccessFile流的指向既可以作为源,也可以作为目的地。即通过这个流既可以读取所指向的文件,也可以写入其指向的文件。

4.

通过scope取值为session的bean来实现分行读取文件。

5.

<%@ page contentType="text/html;Charset=GB2312" %>

输入新建的Web服务目录的名字:

28

name="newWebDirName" />

<%@ page contentType="text/html;Charset=GB2312" %>

<%@ page import="r" %>

<%

if (ess())

n("新建Web服务目录成功!");

else

n("新建Web服务目录失败!");

%>

29

package tom;

import .*;

public class FileDir

{

String newWebDirName=null;

boolean success=false;

public void setNewWebDirName(String s)

{

newWebDirName=();

File file=new File("D:Program FilesApache

FoundationTomcat 6.0webapps",newWebDirName);

if (())

{

success=true;

}

}

public String getNewWebDirName()

{

return newWebDirName;

}

public boolean isSuccess()

30

Software

}

{

}

return success;

结果:

输入新建的Web服务目录的名字:提交

输入“chapter7”,提交

新建Web服务目录成功!

6.

package tom;

import .*;

public class Read

{

String dirName;

String fileName;

String fileContent;

StringBuffer fileCont;

public void setDirName(String dirName)

{

31

}

e=dirName;

public String getDirName()

{

}

public void setFileName(String fileName)

{

}

public String getFileName()

{

}

public String getFileContent()

{

File file=new File(dirName,fileName);

if (())

{

if (())

{

32

return dirName;

me=fileName;

return fileName;

try

{

FileReader fr=new FileReader(file);

}

else

33

}

BufferedReader br=new BufferedReader(fr);

String s=ne();

while(s!=null)

{

}

();

();

}

catch(Exception e) {}

(s+"
");

s=ne();

else

{

}

("目录或文件不存在");

{

}

fileContent=ng();

("目录或文件不存在");

return fileContent;

}

<%@ page contentType="text/html;Charset=GB2312" %>

}

public StringBuffer getFileCont()

{

}

return fileCont;

输入目录:

输入文件名:

34

<%@ page contentType="text/html;Charset=GB2312" %>

<%@ page import="" %>

name="rf" property="fileName"

param="fileName"/>

结果:

输入目录:输入文件名:提交

35

习题7 在JSP中使用数据库

1. ODBC设置数据源的主要步骤有哪些?

答:

(1) 创建修改或删除数据源;

(2) 为数据源选择驱动程序;

(3) 数据源名称及所在位置;

(4) 设置ID与密码;

(5) 选择数据库;

(6) 创建数据源

2.

36

剩余代码同例题7-1类似。testDB是Access数据库数据源的名字,如有ID、密码,则 conn=DriverManager(“jdbc:odbc:数据源名称”,ID,密码);

3. 加载SQL SERVER2000纯Java驱动程序的代码是什么?

答:

try{

e("verDriver").newInstance();

}

catch(Exception e){}

4. 加载MySql纯Java驱动程序的代码是什么?

37

答:

try{ e("")

}

catch(Exception e){ }

5. 加载Oracle纯Java驱动程序的代码是什么?

答:

try{ e("Driver");

}

catch(Exception e){ }

6. 使用CachedRowSetImpl类有什么好处?

答:

CachedRowSetImpl类的对象可以保存ResultSet对象中的数据,而且CachedRowSetImpl对象不依赖Connnection 对象,即把ResultSet对象中的数据保存到CachedRowSetImpl对象中后,就可以关闭和数据库的连接。

7. 使用预处理语句的好处是什么?

答:

预处理语句PreparedStatement会将传入的SQL命令封装在

38

PreparedStatement对象中,事先进行预编译处理等待使用。

当有单一的SQL语句多次执行时,用PreparedStatement类会比Statement类更有效率。

39

习题8 Java Servlet 基础

1. Servlet对象是在服务端还是在客户端创建的?

答:

服务端.

2. Servlet对象被创建后首选调用哪个方法?

答:

init()方法.

3.

service()方法

3. 下面的说法是否正确?

“Servlet第一次被请求加载时调用init方法,当后续的客户请求Servlet对象时, Servlet对象不再调用init方法”.

答:

正确.

4. 假设创建Servlet的类是,创建的Servlet对象名字是myservlet,应当怎样配置?

答:

40

myservlet

myservlet

/lookHello

…..

rvletResponse类的sendRedirect方法和RequestDispatcher类的forward方法有何不同?

答:

.HttpServletResponse提供的方法

void sendRedirect(String location) throws IOException

客户端跳转.即当前页面可用request对象获取用户提交参数,而目

41

标页面都不可用request对象获取用户提交参数.

转发

t .RequestDispatcher接口提供的方法

void

ServletResponse response)

// Forwards a request from a servlet to another resource (servlet,

JSP file, or HTML file) on the server.

服务器跳转.即当前页面和目标页面都可用request对象获取用户提交参数.

7. Servlet对象怎样获得用户的会话对象?

答:

在doGet()或doPost()方法中使用获取当前会话对象.

HttpSession session=sion(true);

一个用户在不同的Servlet中获取的session对象是完全相同的,不同的用户的session对象互不相同。

forward(ServletRequest request,

42

习题8 基于 Servlet的MVC模式

1. 在JSP中,MVC模式中的数据模型之角色由谁担当?

答:

由Java Bean或EJB充当.

2. 在JSP中,MVC模式中的控制器之角色由谁担当?

答:

一个或多个Servlet对象充当.

3. 在JSP中,MVC模式中的视图之角色由谁担当?

答:

由一个或多个JSP页面或HTML页面充当.

4. MVC的好处是什么?

答:

MVC是Model-View-Controller的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

43

5. MVC模式中用到的Javabean是由JSP页面还是servlet负责创建?

答:

是servlet负责

44


本文标签: 文件 对象 页面 目录 用户