一:选择题
1. 动态网站需要的技术为。(选择3项)
A.CGI
B.HTTP
C.ASP
D.PHP
2. 在部署Servlet时,web.xml文件中
A.
B.
C.
D.
3. 假设web应用的文档根目录为MyApp,那么可以从哪里找到database.jar文件。(选择1项)
A. MyApp目录下
B. MyApp\images目录下
C. MyApp\WEB-INF目录下
D. MyApp\WEB-INF\lib目录下
4.为了获得用户提交的表单参数,可以从哪一个接口中得到。(选择1项)
A. ServletResponse
B. Servlet
C. RequestDispatcher
D. ServletRequest
5.从以下哪一个选项中可以获得Servlet的初始化参数。(选择1项)
A. Servlet
B. ServletContext
C. ServletConfig
D. GenericServlet
6.表示“资源移动”的状态码是。(选择1项)
A. 200
B. 302
C. 400
D. 500
7.哪一个对象可以用于获得浏览器发送的请求。(选择1项)
A. HttpServletRequest
B. HttpServletResponse
C. HttpServlet
D. Http
8.事务处理的结束方式。(选择2项)
A. 中止
B. 提交
C. 完成
D. 回滚
9.如何取得数据源。(选择1项)
A. 通过Http
B. 通过ftp
C. JNDI
D. 通过Connection对象
10.会话是。(选择1项)
A. 一个TCP/IP连接
B. 一个物理连接
C. 客户机和Web服务器之间的一组交互
D. Http请求
11.客户端状态管理的解决方案有。(选择3项)
A. URL重写
B. 隐藏域
C. Cookie
D. 以上都不是
12.当Web应用程序被关闭时,Servlet容器会调用Servlet Context“监听器”的哪个方法?(选择1项)
A. contextInitialized()
B. contextDestroyed()
C. contextFinialized()
D. contextShutdown()
15.关于JSP生命周期的叙述,下列哪些为真?(选择2项)
A. JSP会先解释成Servlet源文件,然后编译成Servlet类文件
B. 每当用户端运行JSP时,jspInit()方法都会运行一次
C. 每当用户端运行JSP时,_jspService()方法都会运行一次
D. 每当用户端运行JSP时,jspDestroy()方法都会运行一次
16.下列哪个为JSP的注释标签?(选择1项)
A.<%@ %>
B.<%! %>
C.<% %>
D.<%-- --%>
17.下列哪个为JSP的隐含对象。(选择1项)
A. env
B. page
C. jspinfo
D. context
18.如果不希望在JSP页面中存取HTTP会话,应该如何设定page指令?(选择1项)
A.<% page session=”disabled” %>
B.<% page session=”false” %>
C.<% page session=”true” %>
D.<% page disablesession=”true” %>
20.下面哪些属于JSTL中的表达式操作标签。(选择1项)
A.
B.
C.
D.
21.在J2EE中属于Web层的组件有。(选择1项)
E. Servlet
F. EJB ------模型层
G. Applet
H. HTML
22.在Servlet处理请求的方式为。(选择1项)
I. 以进程的方式
J. 以程序的方式
K. 以线程的方式
L. 以响应的方式
23.在Web应用的根目录中,可以存放的文件为。(选择1项)
M. class文件
N. web.xml
O. jar文件
P. html文件
24.javax.Servlet的包中,属于类的是。(选择1项)
Q. Servlet
R. GenericServlet
S. ServletException
T. ServletContext
25.在Servlet的生命周期中,容器只调用一次的方法是。(选择2项)
U. service
V. getServletConfig
W. init
X. destroy
26.Servlet在容器中经历的阶段,按顺序为。(选择1项)
Y. 服务、加载、初始化、卸载、销毁
Z. 加载、初始化、服务、销毁、卸载
AA.初始化、服务、销毁、加载、卸载
BB.服务、卸载、加载、初始化、销毁
27.HttpServlet中,用来处理GET请求的方法是。(选择1项)
A. doHead
B. doGet
C. doPost
D. doPut
28.Http缺省的请求方法是。(选择1项)
A. PUT
B. GET
C. POST
D. TRACE
29.下面哪一个指明向客户端发送文本的编码格式。(选择1项)
A. Content-Type
B. Content-Encoding
C. Content-Length
D. Allow
30.JDBC中,用于表示数据库连接的对象是。(选择1项)
A. Statement
B. Connection
C. DriverManager
D. PreparedStatement
31.用于表示Statement对象返回结果的是。(选择1项)
A. ResultSet
B. DriverManager
C. PreparedStatement
D. Connection
32.用于调用存储过程的对象是。(选择1项)
A. ResultSet
B. DriverManager
C. CallableStatemet
D. PreparedStatement
33.如何发送Cookie?。(选择1项)
E. 使用new Cookie语句
F. 调用response.addCookie方法
G. 使用Cookie的setMaxAge方法
H. setCookie方法
34.如果没有指定Cookie的时效,那么默认的时效是。(选择1项)
A. 一天
B. 永不过期
C. 会话级别------会话级cookies
D. 一分钟
35.在使用服务器端的会话管理时,通过什么方法标识会话。(选择1项)
A. IP地址
B. Cookie
C. Session id
D. 请求头
37.下面哪一个方法可以从ServletContext对象内读取某个属性。(选择1项)
A. String getAttribute(int index)
B. String getAttribute(String name)
C. Object getAttribute(String name)
D. Enumeration getAttribute(String name)
39.下列哪个为JSP的小脚本的标签?(选择1项)
A.<% %>
B.<@ %>
C.<%! %>
D.<%-- %>
40.Page指示符的language属性的作用是。(选择1项)
A. 定义JSP页面的字符编码
B. 定义JSP页面的MIME类型
C. 定义JSP页面中使用的脚本语言
D. 定义JSP页面的描述信息
41.以下不属于JSP的标准指令的是。(选择1项)
A. Taglib
B. Include
C. Import
D. Page
42.在JSP页面中不可以用来异常处理的有。(选择1项)
A. html文件
B. JSP文件
C. Servlet
D. Txt文件
43.察看下列JSP内容
<% for (int i=0;i<3;i++){ %>
out.print(i*2);
<% } %>
当这个JSP被运行时,其结果是什么?(选择1项)
A. 此JSP因为语法错误,无法运行
B. 显示出0,2,4
C. 显示出0,2,4,6
D. 显示出out.print(i*2) out.print(i*2) out.print(i*2)
44.下面哪一个隐含变量的存取范围不是page? (选择1项)
A. config
B. application
C. out
D. page
45.假设A.jsp内设定一个
下列哪一个为真?(选择1项)
A. bean1的存取范围(scope)默认为application
B. 在HTTP会话内可以存取bean1
C. 只有在A.jsp内可以存取bean1
D. 在A.jsp所属的Web应用程序内均可存取bean1
46.下面哪一个不是
A. scope
B. Id
C. Value
D. Class
48.按照MVC设计模式,JSP用于实现。(选择1项)
A. Model
B. View
C. Controller
D. 容器
49.在MVC设计模式中,JavaBean的作用是。(选择1项)
A. Controller
B. Model
C. 业务数据的封装
D. View
50.在JSP中,哪个指令用来声明JSP欲使用的标签库?(选择1项)
A. tld
B. taglib
C. import
D. include
51.在J2EE中属于Web层的组件有(选择1项)
A. HTML
B. EJB
C. Applet
D. JSP
52.Servlet处理请求的方式为(选择1项)
A. 以运行的方式
B. 以线程的方式
C. 以程序的方式
D. 以调度的方式
53.在J2EE的Web应用中,编译后的class文件存放的目录为(选择1项)
A. classes目录
B. images目录
C. jar目录
D. 任意位置
54.在Servlet的生命周期中,容器只调用一次的方法是(选择1项)
A. service
B. getServletConfig
C. after
D. init
55.HttpServlet中,用来处理POST请求的方法是(选择1项)
A. doHead
B. doGet
C. doPost
D. doPut
56.JDBC中,用于表示数据库连接的对象是(选择1项)
A. Statement
B. Connection
C. DriverManager
D. PreparedStatement
57.如何创建Cookie? (选择1项)
A. 使用new Cookie语句
B. 调用response.addCookie方法
C. 使用Cookie的setMaxAge方法
D. setCookie方法
58.可以用来实现会话的是(选择1项)
A. IP地址
B. Session对象
C. 域名
D. 请求头
59.下面哪一个标记与Servlet的配置无关(选择1项)
A. servlet-mapping
B. servlet-class
C. url-pattern
D. tag
60.下列哪个用于在JSP中表示注释?(选择1项)
A.<% %>
B.<@ %>
C.<%-- --%>
D.<%-- %>
61.按照MVC设计模式,Servlet用于实现(选择1项)
A. Controller
B. View
C. Model
D. 容器
62.在JSP中,哪个指令用来声明JSP欲使用的标签库?(选择1项)
A. tld
B. include
C. import
D. taglib
63. 下面的那一个不属于MVC模式中的对象? (选择1项)
a. Model
b. View
c. Collection
d. Controller
64. ActionForm在Struts中属于? (选择1项)
a. 视图层
b. 控制层
c. 模型层
d. 配置文件
65. ActionForm的作用域包括哪些层次?(选择2项)
a. server
b. request
c. response
d. session
66. ActionServlet在Struts中属于? (选择1项)
a. 视图层
b. 控制层
c. 模型层
d. 配置文件
67. Action在Struts中属于?(选择1项)。
a. 视图
b. 控制器
c. 模型
d. 配置文件
68. Struts初始化过程调用的第一个方法是?(选择1项)
a. start()
b. main()
c. submain()
d. init()
69. 下面哪一个项目仅在Struts中出现?(选择1项)
a. JavaBean
b. Web.xml
c. struts-config.xml
d. application.propertyes
70. 假定Struts-config.xml里有
,
则以下哪些方法调用是正确的?(选择2项)
a. return mapping.findforward(“aaa”);
b. return mapping.findforward(“success”);
c. return mapping.findforward(“ccc”);
d. return mapping.findforward(“error”);
71. Struts框架可以支持以下哪种程序开发语言?(选择1项) (C—> C++ —> Java—> C#)
a. C
b. C++
c. Java
d. C#
72 Struts框架是对哪种设计模式的扩展?(选择1项)
a. 工厂模式
b. 模型视图控制器模式
c. 单体模式
d. 代理模式
73 以下哪些接口能够实现对Web访问者的身份认证?(选择1项)
a. Http Servlet Request
b. Http Servlet Response
c. Http Session
d. Http Servlet
74 MVC模式中,实现Web应用程序的逻辑流控制主要依靠什么来完成?(选择1项)
a. JavaBean
b. JSP
c. Servlet
d. Html
75 Struts中的struts-config.xml被用来作为MVC模式中的哪一项功能?(选择1项)。
a. 模型
b. 视图
c. 控制器
d. 配置文件
76. 在Struts中实现页面跳转主要通过什么方法来实现?(选择1项)
a. server.transfer
b. response.redirect
c. mapping.findForward
d. response.sendRedirect
77. 在Struts配置文件中,使用什么元素表示ActionForm?(选择1项)
a. form
b. form-bean
c. form-action
d. actionform
78. 在Struts配置文件中,使用什么元素来表达Action的转向页面?(选择1项)
a. scope
b. type
c. action
d. forward
79.哪一个不属于MVC设计模式的组件(选择1项)
A. Model
B. View
C. Controller
D. 容器
80.在MVC设计模式中,用于实现业务数据封装的是(选择1项)
A. Controller
B. JavaBean
C. Model
D. View
81.在Struts中,用于组合所有部件的文件是(选择1项)
A. struts-config.xml
B. web-inf.xml
C. web.xml
D. config.xml
82、 Hashtable 是以类似于数组下标(自动递增)的形式来标识存储的对象(值)的:(选择1项)-------is Empty()判断对象名称是否为空,重复值指的是:名称相同,值不同。
A. 对
B. 错
83. Java2的IO包中,流类分为哪两个类体系结构:(选择2项)
A. 可写流
B. 字符流
C. 只读流
D. 字节流
84. 在J2EE的体系结构中,使用哪个服务来查找web服务器的资源:(选择1项)
A. JDBC
B. JNDI
C. JMS
D. JSP
85. J2EE体系结构中,Model2 设计模式使用了 JavaBean, Servlet 和 JSP:(选择1项)
A. 对
B. 错------Model 3模式
86. java.io包中包含InputStreamReader和OutputStreamWriter类。他们的主要作用是:(选择1项)
A. 用于从标准输入输出设备读/写数据
B. 用于从标准输入输出设备读/写字节数据
C. 用于从字节流中获取字符流或反之
D. 用于读取文件或者向文件输出
87. 集合框架中哪个接口要求集合中的元素不能重复:(选择1项)
A. Collection
B. List
C. Map------Map和Set集合中的元素不能重复
D. SortedSet
88. 以下描述哪些方面与J2EE无关:(选择1项)
A. 事务处理
B. Applet
C. 资源管理
D. 分布式
89. 在HttpServlet类中响应HTTP POST请求的方法是:(选择1项)
A. doPost(ServletRequest, ServletResponse)
B. doPOST(ServletRequest, ServletResponse)
C. servicePost(HttpServletRequest, HttpServletResponse)
D. doPost(HttpServletRequest, HttpServletResponse)
90. 你的servlet类需要使用com.abc.Tutil类,Tutil.class文件应该放到以下哪个目录中?(选择1项)
A. WEB-INF/classes
B. WEB-INF/lib
C. WEB-INF/jars
D. WEB-INF/classes/com/abc
91. 下面关于输入输出流的陈述哪些是不正确的:(选择1项)
A. Reader 是面向Unicode字符的,它和InputStream定义相似的API
B. BufferedReader 类提供了 readLine 方法,可以用来读取一行
C. File 类没有提供直接判断文件是否存在的方法,判断一个文件是否存在需要调用FileConfig类中的exists方法
D. FilterOutputStream被看作是高层输出流,不写入输出设备,而写入其他流
92. javax.Servlet的包中,属于类的是。(选择1项)
A. Servlet
B. GenericServlet
C. ServletException
D. ServletContext
93. 如果没有指定Cookie的时效,那么默认的时效是。(选择1项)
A. 一天
B. 永不过期
C. 会话级别
D. 一分钟
94. 假设A.jsp内设定一个
下列哪一个为真?(选择1项)
A. bean1的存取范围(scope)默认为application
B. 在HTTP会话内可以存取bean1
C. 只有在A.jsp内可以存取bean1
D. 在A.jsp所属的Web应用程序内均可存取bean1
95. 以下哪些接口能够实现对Web访问者的身份认证?(选择1项)
a. Http Servlet Request
b. Http Servlet Response
c. Http Session
d. Http Servlet
二:简答题
a) 在TOMCAT下有哪几种发布JSP应程序的方法
(1)直接放到webapps目录下。Tomcat的webapps目录是tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。也可以将jsp应用程序打成一个war包放在这个目录下,服务器会自动解开这个war包,并在这个目录下生产一个同名文件夹。一个war包就是有特定格式的jar包,它是一个将web程序的所有内容进行压缩得到的。
Webapps这个默认的目录也是可以改变的。打开tomcat的conf目录下的server.xml文件,找到下面的内容。
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
其中的appBase="webapps"
是只应用目录,可以将这个目录更改到想要的目录去。
(2)在server.xml中指定。
在tomcat的配置中,一个web应用就是一个特定的Context,可以通过在server.xml中新建Context来部署一个jsp应用程序。打开server.xml文件,在host标签内创建一个Context,内容如下:
debug="5" reloadable="true" crossContext="true"/>
其中path是虚拟路径,docBase是jsp应用程序的物理路径,workDir是这个应用的工作目录,存放运行时生产的与这个应用相关的文件。
这种方法比较灵活,不必把应用程序放到webapps下面。
(3)创建一个Context文件
无论是把jsp应用程序直接放在webapps下,还是在server.xml中指定,被服务器加载之后,都会在tomcat的conf/catalina/localhost目录下生成一个xml文件,其内容如下:
可以看出,文件中就是描述一个应用的Context信息,其内容和server.xml中的Context信息格式一致的,文件名便是虚拟目录名。可以直接建立这样一个xml文件,放在tomcat的
conf/catalina/localhost目录下。
b) include指c) 令和include动作的区别是什么
include 指令和 include 动作的区别include指令合并静态文档或Jsp页面中的内容可以用于包括动态生成的输出结果,因此可以包含一个Servletinclude指令在编译期合并为一个文档include动作在请求时进行包括处理共享局部变量include指令各文件中的声明的脚本变量在所有组成的页面中有效include动作在一个文件中声明的脚本变量不能用于其他页面,除非将变量放置在request,session,application作用域中修改的生效include指令被包含文件被修改,不会立即生效,除非修改主页面或删除主页面的类include动作修改了被包含的文件立即生效变量的作用域include指令中的要注意变量命名冲突情况include动作不会出现变量命名冲突问题,因为他们实际上是局部变量
d) 在JSP面面间传递参数的方式有几种
1) 表单提交2) URL重写,就是 ? 传参 xxx.jsp?myid = 13) jsp:param传递,用在jsp:forward或jsp:include 标签中例如:
e) 随机数的生成方式有几种
1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。
2、通过Math.random()返回一个0到1之间的double值。
3、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大
f) session和cookie的区别是什么
session是在服务器端保存用户信息,cookie是在客户端保存信息; session中保存的是对象,cookie中保存的是字符串; session对象随会话结束而结束,cookie可以长期保存在客户端; cookie通常用于保存不重要的用户信息,重要的信息使用session保存.
g) 如何防止表单重复h) 提交
方式一:客户端利用javascript脚本来处理,设置一个变量只允许提交一次
var checkSubmitFlg = false;
function checkSubmit() {
if (checkSubmitFlg == true) {
return false;
}
checkSubmitFlg = true;
return true;
}
document.ondblclick = function docondblclick() {
window.event.returnValue = false;
}
document.onclick = function doconclick() {
if (checkSubmitFlg) {
window.event.returnValue = false;
}
}
方式二 : 防止用户后退
使用window.history.forward()方法来更改浏览器的历史纪录;或“用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后退按钮永远不会变为可用。”比如使用javascript:location.replace(this.href); event.returnValue=false;
2.服务器端的处理
基本原理:
服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。
if (isTokenValid(request, true)) {
return mapping.findForward("success");
} else {
saveToken(request);
return mapping.findForward("submitagain");
}
Struts根据用户会话ID和当前系统时间来生成一个唯一(对于每个会话)令牌的,具体实现可以参考TokenProcessor类中的generateToken()方法。
1. //验证事务控制令牌,
// // value="6aa35341f25184fd996c4c918255c3ae">
if (!isTokenValid(request))
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"));
resetToken(request); //删除session中的令牌
3. action有这样的一个方法生成令牌
protected String generateToken(HttpServletRequest request) {
HttpSession session = request.getSession();
try {
byte id[] = session.getId().getBytes();
byte now[] =
new Long(System.currentTimeMillis()).toString().getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(id);
md.update(now);
return (toHex(md.digest()));
} catch (IllegalStateException e) {
return (null);
} catch (NoSuchAlgorithmException e) {
return (null);
}
}
i) 如何理解Servlet的生命周期
A:定位:用户根据地址请求指定的servlet,web.xml根据用户输入的地址,定位到具体的servlet。B:加载:将找到的servlet类加载到web容器中(servlet容器)。C:实例化:调用默认无参构造函数,实现servlet的实例化。D:初始化:调用Init方法,实现成员变量的初始化。E:服务处理:servlet的service方法接收用户请求,根据当前用户请求的方式是get还是post,service自动将用户请求传递到doGet和doPost方法中进行处理。处理完成后,产生响应结果。F:销毁:调用destroy方法,实现servlet的释放工作。
j) Servlet API有几种
HttpServletRequest:Servlet容器把HTTP请求信息保存在HttpServletRequest对象中,Servlet组件从request对象中读取用户的请求数据。此外,HttpServletRequest可以存放request范围内的共享数据。
HttpServletResponse:用于生成HTTP响应结果。
HttpSession:Servlet容器为每个WEB应用创建一个ServletContext实例,ServletContext可以存放application范围的共享数据。
HttpServletRequest、HttpSession、ServletContext分别提供在request、session、application范围内保存和读取共享数据的方法:
//save shared data
setAttribute(String key,Object value);
//get shared data
getAttribute(String key);
在保存共享数据时,应该指定属性KEY。在读取共享数据时,将根据这个属性KEY来检索共享数据。
k) 如何使服l) 务器启动时就加载并初始化Servlet的实例
监听器
m) 如何在Servlet中操作cookie
要把Cookie发送到客户端,Servlet先要调用new Cookie(name,value)用合适的名字和值创建一个或多个Cookie,通过cookie.setXXX设置各种属性,通过response.addCookie(cookie)把cookie加入应答头。
要从客户端读入Cookie,Servlet应该调用request.getCookies(),getCookies()方法返回一个Cookie对象的数组。在大多数情况下,你只需要用循环访问该数组的各个元素寻找指定名字的Cookie,然后对该Cookie调用getValue方法取得与指定名字关联的值。
n) java归档程序包的类型有几种
Jar war ear
o) 如何在不同p) 范围内共享JavaBean
设置scope属性
q) 如何开发并部署自己的标r) 签
(2)创建建议在WEB-INF目录创建自己的tld文件。注意:xml文件,都是有自己的格式和规范的。(3)
s) 如何验证数字、整数、电子邮件(利用js)
数字整数:var p=/^\d$/;p.test(String);电子邮件:var p=/^\w{1,12}@\w{1,6}\.\w{1,4}$/;
t) 如何验证字符串中包括有效字符(如@)
If(String.indexOf("@")==-1){表示不包含此字符}
u) 如何在页面中屏蔽鼠标v) 右键
function document.oncontextmenu(){event.returnValue=false;}//屏蔽鼠标右键
w) 如何禁止用户复x) 制网页内容
oncontextmenu = "return false"
ondragstart="return false"
onselectsatrt = "return false"
onselect="document.selection.empty()"
oncopy="document.selection.empty()"
onbeforecopy="return false"
οnmοuseup="document.selection.empty()"
>
y) 如何处理中文乱码问题
1)request.setCharacterEncoding( "UTF-8 ")。
2)<%@ page contentType= "text/html;charset= UTF-8 " %>
3)
z) 如何在Eclipse中调试JSP
在Eclipse里你可以调试java类文件,有时你也会需要调试JSP文件,但Eclipse并不支持,尽管在JSP源文件中调试JSP代码是一件非常方便的事。
现在有一种好的解决方法,在你告之应用服务器把你的Eclipse工程作为工作目录后,Lomboz可以让你对在应用服务器上的JSP文件所生成的.java文件进行调试。
注意:Lomboz只支持对能够在Eclipse源代码目录中保存一份servlet源代码(.java)的拷贝的应用服务器上进行JSP的调试。
建立实例
Lomboz在你的工程中为你建立的一个叫j2src的特定源文件目录,当你完成调试工作后,你并不需要把由JSP生成的java文件放入你的模块中,所以将这些java文件和真正的源代码文件分开是很有必要的。
如果你使用的是Tomcat或者JBOSS,要能够调试JSP文件必须按下面的方法配置你的应用服务器。而BEA WebLogic在weblogic.xml中已经插入了工作目录的信息,所以不需要再进行下面的操作了。当你完成调试的时候必须删掉这些信息。
在JSP文件被正常的执行中,应用服务器会生成相应的java类文件,为了把这些由JSP生成的java类文件和其他的java类文件分开,应用服务器会把这些类文件放到一个叫‘j2src’的特定目录中。
在WebLogic中,部署web模型的所有描述已经对被正确的配置(weblogic.xml),然而你也可以按照下面的说明来改变它。
BEA WebLogic Server
web应用中的weblogic.xml(myweb)
假定你的工程在c:/eclipse/workspace下,你需要正确地为你的Eclipse工作台改变这些信息。
Tomcat & JBOSS
我们需要设置Tomcat让它把执行JSP生成的java文件放到‘j2src’目录中。
象下面这样编辑tomcat的server.xml文件(
假定你的工程在c:/eclipse/workspace下,你需要正确地为你的Eclipse工作台改变这些信息。
docbase=" C: /eclipse/ workspace/My J2EE Project/myweb"
workDir=" C: /eclipse/ workspace/My J2EE Project/j2src" />
重要的已知问题:
Tomcat4与工程中JSP文件的子目录问题
Eclipse不能编译JSP生成的servlet,因为JSP文件的包定义中没有正确的包含URL路径org.apache.jsp.
解决办法:
下载并安装Sysdeo Tomcat 4.x patch
www.sysdeo.com
或者你可以使用提供了包定义的Tomcat3.3。
查看类文件和插入断点
Eclipse通常不会自动检测其他程序(这里指应用服务器)在它的工程中放入的新文件,为了使你的工程与JSP类文件同步,你需要选择j2src目录,然后人工刷新,这将使你的工作台中显示所有的JSP类文件。接下来,你就可以为这些类文件插入断点了。
调试器
插入断点以后,再次进入你的JSP(例如:http://localhost:7001/myweb),你会发现Eclipse调试器会在你插入断点的地方停下来。在这个断点上,你就可以象一般的调试那样进行调试了。
注意:你必须刷新你的工程,确保能够进入刚刚编译生成的JSP类文件.
aa) 如何使用Log4j纪录日志
String path="D:\\programmer\\ideaproj\\WorkUtil\\test\\log4j.properties";
org.apache.log4j.PropertyConfigurator.configure(path);
Logger logger = Logger.getLogger(Log4jTest.class);
logger.debug("a test.");
bb) Struts配置文件的功能是什么
strust的核心配置文件,所有与struts有关的信息全部需要在此文件中进行配置。action是struts的控制器,struts-config.xml是struts的总控制器。
cc) 如何使用动态Actionform
没有实际存在的类文件,只是在struts-config.xml中进行配置