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]<% </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>=intPageCount) nextPage=intPageCount; </P>
<P>upPage = currentPage-1; </P>
<P>if (upPage<=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<numPages*(currentPage-1))&&rs.next()){i++;} </P>
<P>%> </P>
<P>//输出内容 </P>
<P>//输出翻页连接 </P>
<P>合计:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">第一页</a><a <br>href="List.jsp?page=<%=upPage%>">上一页</a> </P>
<P><% </P>
<P>for(int j=1;j<=intPageCount;j++){ </P>
<P>if(currentPage!=j){ </P>
<P>%> </P>
<P><a href="list.jsp?page=<%=j%>">[<%=j%>]</a> </P>
<P><% </P>
<P>}else{ </P>
<P>out.println(j); </P>
<P>} </P>
<P>} </P>
<P>%> </P>
<P><a href="List.jsp?page=<%=nextPage%>">下一页</a><a href="List.jsp?page=<%=intPageCount%>">最后页 <br></a> [/code]</P>
[align=right][color=#000066][此贴子已经被作者于2007-7-13 9:10:51编辑过][/color][/align]
页:
[1]
