野蛮女人 发表于 2007-7-12 20:58

J2EE面试题

<P>1、说一说Servlet的生命周期? </P>
<P>答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 </P>
<P>2、Servlet版本间(忘了问的是哪两个版本了)的不同? </P>
<P>希望大家补上,谢谢 </P>
<P>3、java SERVLET API中forward() 与redirect()的区别? </P>
<P>答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。 </P>
<P>4、Servlet的基本架构 </P>
<P>[code]public class ServletName extends HttpServlet { </P>
<P>public void doPost(HttpServletRequest request, HttpServletResponse response) throws </P>
<P>ServletException, IOException { </P>
<P>} </P>
<P>public void doGet(HttpServletRequest request, HttpServletResponse response) throws </P>
<P>ServletException, IOException { </P>
<P>} </P>
<P>} <br>[/code]<br>Jdbc、Jdo方面 </P>
<P>1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询. </P>
<P>答:程序如下: </P>
<P>[code]package hello.ant; </P>
<P>import java.sql.*; </P>
<P>public class jdbc </P>
<P>{ </P>
<P>String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; </P>
<P>String theUser="admin"; </P>
<P>String thePw="manager"; </P>
<P>Connection c=null; </P>
<P>Statement conn; </P>
<P>ResultSet rs=null; </P>
<P>public jdbc() </P>
<P>{ </P>
<P>try{ </P>
<P>Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); </P>
<P>c = DriverManager.getConnection(dbUrl,theUser,thePw); </P>
<P>conn=c.createStatement(); </P>
<P>}catch(Exception e){ </P>
<P>e.printStackTrace(); </P>
<P>} </P>
<P>} </P>
<P>public boolean executeUpdate(String sql) </P>
<P>{ </P>
<P>try </P>
<P>{ </P>
<P>conn.executeUpdate(sql); </P>
<P>return true; </P>
<P>} </P>
<P>catch (SQLException e) </P>
<P>{ </P>
<P>e.printStackTrace(); </P>
<P>return false; </P>
<P>} </P>
<P>} </P>
<P>public ResultSet executeQuery(String sql) </P>
<P>{ </P>
<P>rs=null; </P>
<P>try</P>
<P>{ </P>
<P>rs=conn.executeQuery(sql); </P>
<P>} </P>
<P>catch (SQLException e) </P>
<P>{ </P>
<P>e.printStackTrace(); </P>
<P>} </P>
<P>return rs; </P>
<P>} </P>
<P>public void close() </P>
<P>{ </P>
<P>try </P>
<P>{ </P>
<P>conn.close(); </P>
<P>c.close(); </P>
<P>} </P>
<P>catch (Exception e) </P>
<P>{ </P>
<P>e.printStackTrace(); </P>
<P>} </P>
<P>} </P>
<P>public static void main(String[] args) </P>
<P>{ </P>
<P>ResultSet rs; </P>
<P>jdbc conn = new jdbc(); </P>
<P>rs=conn.executeQuery("select * from test"); </P>
<P>try{ </P>
<P>while (rs.next()) </P>
<P>{ </P>
<P>System.out.println(rs.getString("id")); </P>
<P>System.out.println(rs.getString("name")); </P>
<P>} </P>
<P>}catch(Exception e) </P>
<P>{ </P>
<P>e.printStackTrace(); </P>
<P>} </P>
<P>} </P>
<P>} [/code]</P>
<P>2、Class.forName的作用?为什么要用? </P>
<P>答:调用该访问返回一个以字符串指定类名的类的对象。 </P>
<P>3、Jdo是什么? </P>
<P>答:JDO是java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。 </P>
<P>4、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 </P>
<P>答:一种分页方法 (<FONT color=#ee1111>这个代码好像有问题 谁能改改</FONT>)</P>
<P>[code]&lt;% </P>
<P>int i=1; </P>
<P>int numPages=14; </P>
<P>String pages = request.getParameter("page") ; </P>
<P>int currentPage = 1; </P>
<P>currentPage=(pages==null)?(1):{Integer.parseInt(pages)} </P>
<P>sql = "select count(*) from tables"; </P>
<P>ResultSet rs = DBLink.executeQuery(sql) ; </P>
<P>while(rs.next()) i = rs.getInt(1) ; </P>
<P>int intPageCount=1; </P>
<P>intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1); </P>
<P>int nextPage ; </P>
<P>int upPage; </P>
<P>nextPage = currentPage+1; </P>
<P>if (nextPage&gt;=intPageCount) nextPage=intPageCount; </P>
<P>upPage = currentPage-1; </P>
<P>if (upPage&lt;=1) upPage=1; </P>
<P>rs.close(); </P>
<P>sql="select * from tables"; </P>
<P>rs=DBLink.executeQuery(sql); </P>
<P>i=0; </P>
<P>while((i&lt;numPages*(currentPage-1))&amp;&amp;rs.next()){i++;} </P>
<P>%&gt; </P>
<P>//输出内容 </P>
<P>//输出翻页连接 </P>
<P>合计:&lt;%=currentPage%&gt;/&lt;%=intPageCount%&gt;&lt;a href="List.jsp?page=1"&gt;第一页&lt;/a&gt;&lt;a <br>href="List.jsp?page=&lt;%=upPage%&gt;"&gt;上一页&lt;/a&gt; </P>
<P>&lt;% </P>
<P>for(int j=1;j&lt;=intPageCount;j++){ </P>
<P>if(currentPage!=j){ </P>
<P>%&gt; </P>
<P>&lt;a href="list.jsp?page=&lt;%=j%&gt;"&gt;[&lt;%=j%&gt;]&lt;/a&gt; </P>
<P>&lt;% </P>
<P>}else{ </P>
<P>out.println(j); </P>
<P>} </P>
<P>} </P>
<P>%&gt; </P>
<P>&lt;a href="List.jsp?page=&lt;%=nextPage%&gt;"&gt;下一页&lt;/a&gt;&lt;a href="List.jsp?page=&lt;%=intPageCount%&gt;"&gt;最后页 <br>&lt;/a&gt; [/code]</P>
[align=right][color=#000066][此贴子已经被作者于2007-7-13 9:10:51编辑过][/color][/align]

yanwu1515 发表于 2007-11-6 21:01

经典的题目啊,应该是很实用的,多谢提醒!

无缘今生 发表于 2007-11-6 21:45

看来,我的路还很远...[em03][em03][em03]

cander56 发表于 2007-11-7 00:04

我一个都不知道[em03]

guoxhvip 发表于 2007-11-7 01:47

还需要不断学习[em09]

hwoarangzk 发表于 2007-11-7 09:25

学习了!

xinxue 发表于 2007-11-7 09:54

谢谢提醒

witchery 发表于 2007-11-7 12:07

全是基础 ...

hardes 发表于 2007-11-7 18:34

<P>受教了,看来我的路还很远!!<BR> 唉!!!<BR>任重而道远啦!!<BR></P>

sea7 发表于 2007-11-7 21:51

分页的代码有问题,读取数据库时应该创建一个可滚动的result,这样才能实现分页,另外是几点个人意见:<BR>1.这样实现的分页只是一种假分页,简单地说就是,你一次把数据全部从数据库读出来然后分页显示而已,这样有一个很  大的缺点就是你所有的数据全部存放在页面,每一次换页这些数据都要在客户端和服务期端往返传送对性能影响很大。<BR>2.页面出现java脚本语言,对页面布局造成很大影响(也不好看),在实际开发中会使得美工和程序员分工分工不明确。<BR>    以上属于个人意见

三笔 发表于 2007-11-7 23:19

LS说的很对,<BR>LZ的东西,要学习~

页: [1]

编程论坛