1、1jsp 及 Servlet 面试题2007-10-11 23:07jsp 及 Servlet 面试题2007年10月11日 星期四 09:341、jsp 有哪些内置对象作用分别是什么答:JSP 共有以下 9种基本内置组件(可与 ASP 的6种内部组件相对应):request 用户端请求,此请求会包含来自 GET/POST 请求的参数response 网页传回用户端的回应pageContext 网页的属性是在这里管理session 与请求有关的会话期application servlet 正在执行的内容out 用来传送回应的输出config servlet 的构架部件page JSP 网页本身
2、exception 针对错误网页,未捕捉的例外2、jsp 有哪些动作作用分别是什么答:JSP 共有以下 6种基本动作jsp:include:在页面被请求的时候引入一个文件。jsp:useBean:寻找或者实例化一个 JavaBean。jsp:setProperty:设置 JavaBean 的属性。jsp:getProperty:输出某个 JavaBean 的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记3、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?答:动态 INCLUDE
3、 用 jsp:include 动作实现它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态 INCLUDE 用 include 伪码实现,定不会检查所含文件的变化,适用于包含静态页面4、两种跳转方式分别是什么有什么区别答:有两种,分别为:前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于 go to 语句。57、JSP 的内置对象及方法。request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获
4、取 cookie, header, 和 session 数据的有用的方法。response 表示 HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如 cookies,头信息等)out 对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用2于向浏览器回送输出结果。pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的servlet 相关功能的方法。session 表示一个请求的 javax
5、.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息applicaton 表示一个 javax.servle.ServletContext 对象。这有助于查找有关servlet 引擎和 servlet 环境的信息config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet实例的初始化参数。page 表示从该页面产生的一个 servlet 实例二、JSP也能物理地改变 HTTP HEADER 属性,如下:7、如何防止在 JSP 或 SERVLET 中的输出不被 BROWSER 保存在 CACHE中
6、?把如下脚本加入到 JSP 文件的开始即可:8、在 JSP 中如何设置 COOKIE?COOKIE 是作为 HTTP HEADER 的一部分被发送的,如下方法即可设置:9、在 JSP 中如何删除一个 COOKIE?10、在一个 JSP 的请求处理中如何停止 JSP 的执行如下例:11、在 JSP 中如何定义方法你可以定义方法,但是你不能直接访问 JSP 的内置对象,而是通过参数的方法传递。如下:12、如果 BROWSER 已关闭了 COOKIES,在 JSP 中我如何打开 SESSION来跟踪使用 URL 重写即可,如下:6hello1.jsphello2.jsp hello2.jsp13、在
7、 JSP 中能发送 EMAIL 吗可以使用 SUN 的专用包:.smtp 包。如下脚本使用SmtpClient 类发送 EMAIL。14、在 SERVLET 中我能调用一个 JSP 错误页吗当然没问题,如下展示了如何在一个 SERVLET 控制逻辑单元内调用一个 JSP 错误页面。protected void sendErrorRedirect(HttpServletRequest request,7HttpServletResponse response, String errorPageURL,Throwable e)throws ServletException, IOException
8、 request.setAttribute (“javax.servlet.jsp.jspException“, e);getServletConfig().getServletContext().getRequestDispatcher(errorPageURL).forward(request,response); public void doPost(HttpServletRequest request,HttpServletResponse response) try / do something catch (Exception ex) try sendErrorRedirect(r
9、equest,response,“/jsp/MyErrorPage.jsp“,ex); catch (Exception e) e.printStackTrace();15、JSP 和 APPLET 如何通讯JSP 如何与 EJB SessionBean 通讯下面的代码段作了很好的示范16、当我使用一个结果集时,如何防止字段为“null“的字域显示在我的HTML 输入文本域中?可以定义一个简单的函数来达到目的,如下:然后在 JSP 的 FORM 中,可以这样使用“17、如何中 SERVLET 或 JSP 下载一个文件(如:binary,text,executable)?现提供两个解决方案:A:
10、使用 HTTP,B:在 Servlet 中,通过设置 ContentType 和使用 java.io 包的 Stream 等类可作到.例如:response.setContentType(“application/x-msword“);然后想输出缓冲中写一些东东即可。 18、使用 useBean 标志初始化 BEAN时如何接受初始化参数使用如下两标签即可:19、使用 JSP 如何获得客户浏览器的信息?使用 request.getHeader(String)即可20、能象调用子程序一样调用 JSP 吗?当然可以,用21、当我重编译我的 JSP 使用的一个类后,为什么 JVM 继续使用我的老CLA
11、SS?与之间的差别?前一个为静态包含,而后一个为动态包含22、JSP 的缺点?1。对 JAVA 程序进行调试没有好东东2。因大多数的 servlet 引擎不支持 connection pooling3。Servlet 引擎没有标准4。JSP 与其它脚本语言的交互23、JSP 能进行递归调用吗?当然可以,如对 form 的提交给本页24、如何实现 JSP 的国际化?为各种版本提供 resource bundles 属性文件即可25、在 JSP 中如何写文本文件?使用 PrintWriter 对象,如:26、如何在 JSP 中包括绝对路径文件?使用 URLConnection 即可。27、在 se
12、rvlets 和 JSP 之间能共享 session 对象吗?当然可以,HttpSession session = request.getSession(true);session.putValue(“variable“,“value“);28、JavaScript 的变量能复制到 JSP 的 SESSION 中吗?29、如何设置 cookie 在某一时间后过期?用 Cookie.setMaxAge(int)30、如何获得当前的 sessions 数?可以使用 HttpSessionBindingListeners 来跟踪31、能设置一些代码在我所有的 JSP 文件之上运行?如果可以,能共享吗
13、?当然可以,可以为你的 JSP 文件定义一个别名:/jsp/=ybwen.genius.myPreprocessingServlet,而以/jsp/ 为前缀的文件可以使用32、对一个 JSP 页,如果多个客户端同时请求它,同步可能吗?33、当我使用时,在浏览器的地址栏没有改变?使用 response.sendRedirect(“newURL“)34、如何转换 JSP 0.9版本的文件到 JSP1.1?可使用 sed/awk 即可35、使用 JSP 能设置 HTML FORM 中输入域的焦点,不用 JavaScript?没办法36、使用 JSP 连接到数据库连接缓冲池的最好方法是什么?1.使用
14、JDBC2。0中带有此服务的 Driver2.使用提供有此服务的 Application server3.自己写Hibernate 工作原理及为什么要用?10原理:1.读取并解析配置文件2.读取并解析映射信息,创建 SessionFactory3.打开 Sesssion4.创建事务 Transation5.持久化操作6.提交事务7.关闭 Session8.关闭 SesstionFactory为什么要用:1. 对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM 实现。他很大程度的简化
15、 DAO 层的编码工作3. hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。4. hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。2 Hibernate 是如何延迟加载 ?1. Hibernate2 延迟加载实现: a)实体对象 b)集合(Collection )2. Hibernate3 提供了属性的延迟加载功能当 Hibernate 在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务
16、器的性能。3Hibernate 中怎样实现类之间的关系 ?(如:一对多、多对多的关系 )类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many 、4 说下 Hibernate 的缓存机制1. 内部缓存存在 Hibernate 中又叫一级缓存,属于应用事物级缓存2. 二级缓存:a) 应用及缓存b) 分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据c) 第三方缓存的实现5 Hibernate 的查询方式Sql、Criteria,object comptositionHql:1、 属性查询2、 参数查询、命名参数查询3、 关联查询4、 分页查询5、 统计函数6 如何优化 Hibernate?