java面试题题库全121-140

在这里插入图片描述
121、在ORACLE 大数据量下的分页解决方法。一般用截取ID 方法,还有是三层嵌套方法。【中等难度】

答:一种分页方法

<%

int i=1;

int numPages=14;

String pages = request.getParameter(“page”) ;

int currentPage = 1;

currentPage = (pages==null)?(1):{Integer.parseInt(pages)}

sql = “select count(*) from tables”;

ResultSet rs = DBLink.executeQuery(sql) ;

while(rs.next()) i = rs.getInt(1) ;

int intPageCount=1;

intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);

int nextPage ;

int upPage;

nextPage = currentPage+1;

if (nextPage>=intPageCount) nextPage=intPageCount;

upPage = currentPage-1;

if (upPage<=1) upPage=1;

rs.close();

sql=“select * from tables”;

rs=DBLink.executeQuery(sql);

i=0;

while((i<numPages*(currentPage-1))&&rs.next()){i++;}

%>

//输出内容

//输出翻页连接

合计:<%=currentPage%>/<%=intPageCount%>页

第一页

上一页

<%

for(int j=1;j<=intPageCount;j++){

if(currentPage!=j){

%>

[<%=j%>]

<%

}else{

out.println(j);

}

}

%>

下一页

最后页

六、Web 部分:(共题:基础40 道,基础37 道,中等难度3 道)

122、说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? 【基础】

答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servlet 的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。与cgi 的区别在于servlet 处于服务器进程中,它通过多线程方式运行其service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

123、Servlet 的基本架构。【基础】

答:public class ServletName extends HttpServlet {

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

}

}

124、forward 和redirect 的区别? 【基础】

答:forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

125、JSP 中动态INCLUDE 与静态INCLUDE 的区别?【基础】

答:动态INCLUDE 用jsp:include 动作实现<jsp:include page="included.jsp"flush=“true” />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态INCLUDE 用include 伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file=“included.htm” %>

126、说出数据连接池的工作机制是什么? 【基础】

答:J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

127、JSP 的内置对象及方法?【基础】

答:request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header 和session 数据的有用的方法。response 表示HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。out 对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。pageContext 表示一个javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的API,并且包装了通用的servlet 相关功能的方法。session 表示一个请求的javax.servlet.http.HttpSession 对象。Session可以存贮用户的状态信息。application 表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet 引擎和servlet 环境的信息。config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始化参数。page 表示从该页面产生的一个servlet 实例。

128、JSP 的常用指令?【基础】

答:<%@page language=”java” contenType=”text/html;charset=gb2312”

session=”true” buffer=”64kb” autoFlush=”true” isThreadSafe=”true”

info=”text” errorPage=”error.jsp” isErrorPage=”true” isELIgnored=”

true” pageEncoding=”gb2312” import=”java.sql.*”%>

isErrorPage:是否能使用Exception 对象;isELIgnored:是否忽略EL 表达式;

<%@include file=”filename”%>

<%@taglib prefix=”c”uri=”http://……”%>

129、jsp 有哪些动作?作用分别是什么? 【基础】

答:JSP 共有以下6 种基本动作:

jsp:include:在页面被请求的时候引入一个文件;

jsp:useBean:寻找或者实例化一个JavaBean。;

jsp:setProperty:设置JavaBean 的属性。;

jsp:getProperty:输出某个JavaBean 的属性;

jsp:forward:把请求转到一个新的页面;

jsp:plugin:根据浏览器类型为Java 插件生成OBJECT 或EMBED 标记。

130、jsp 有哪些内置对象?作用分别是什么? 【基础】

答:JSP 共有以下9 种基本内置组件(可与ASP 的6 种内部组件相对应):

request:用户端请求,此请求会包含来自GET/POST 请求的参数;

response:网页传回用户端的回应;

pageContext:网页的属性是在这里管理;

session:与请求有关的会话期;

application:servlet 正在执行的内容;

out:用来传送回应的输出;

config:servlet 的构架部件;

page:JSP 网页本身;

exception:针对错误网页,未捕捉的例外。

131、get 和post 的区别?【基础】

答:Form 中的get 和post 方法,在数据传输过程中分别对应了HTTP 协议中的GET 和POST 方法。二者主要区别如下:

1)Get 是用来从服务器上获得数据,而Post 是用来向服务器上传递数据;

2)Get 将表单中数据按照variable=value 的形式,添加到action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action所指向URL;

3)Get 是不安全的,因为在传输过程,数据被放在请求的URL 中;Post 的所有操作对用户来说都是不可见的;

4)Get 传输的数据量小,这主要是因为受URL 长度限制;而Post 可以传输大量的数据,所以在上传文件只能使用Post;

5)Get 限制Form 表单的数据集必须为ASCII 字符,而Post 支持整个ISO10646字符集;

6)Get 是Form 的默认方法。

132、什么情况下调用doGet()和doPost()?【基础】

答:Jsp 页面中的form 标签里的method 属性为get 时调用doGet(),为post时调用doPost()。

133、如何从form 表单中得取checkbox 的值;【基础】

答:可在页面把checkbox 的name 属性取同一个,value 属性取每个条目的id,后台用getParamter(“name”)能取到checkbox 的一组值。

134、页面中有一个命名为bank No 的下拉列表,写脚本获取当前选项的索引值。【基础】

答:用java 或javaScript 的处理方式分别如下:

Java: request.getParameter(“bank No”);

javaScript:

var selectItems = document.getElementsByName(“bank No”);

selectItems[0].value;

135、javascript 常用的方面;【基础】

答:常用于数据输入校验和页面特殊效果等。

136、常用的web 容器和开发工具;【基础】

答:最常用的容器包括:tomcat、weblogic;开发工具有:eclipse,jbuilder。

137、请画出Servlet 2.2 以上Web Application 的基本目录结构(2 分钟)【基础】

答:目录结构如下图所示:

webapps

|

Applocation

|


| |

JSP 页面WEB-INF

|


| | |

classes lib web.xml

138、JSP 和Servlet 有哪些相同点和不同点,他们之间的联系是什么?【基础】

答:JSP 是Servlet 技术的扩展,本质上是Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类servlet"。Servlet 和JSP 最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的HTML 里分离开来。而JSP 的情况是Java 和HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

139、jsp 的四种范围?【基础】

答:a.page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类(可以带有任何的include 指令,但是没有include 动作)表示。这既包括servlet 又包括被编译成servlet 的JSP 页面b.request 是代表与Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web 组件(由于forward 指令和include 动作的关系)c.session 是代表与用于某个Web 客户机的一个用户体验相关的对象和属性。一个Web 会话可以也经常会跨越多个客户机请求d.application 是代表与整个Web 应用程序相关的对象和属性。这实质上是跨越整个Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

140、Request 对象的主要方法? 【基础】

答:setAttribute(String name,Object):设置名字为name 的属性值

getAttribute(String name):返回由name 指定的属性值

getAttributeNames():返回request 对象所有属性的名字集合(枚举)

getCookies():返回客户端的所有Cookie 对象,结果是一个Cookie 数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body 的长度

getHeader(String name):获得HTTP 协议定义的文件头信息

getHeaders(String name):返回指定名的request Header 的所有值(枚举)

getHeaderNames():返回所有request Header 的名字(枚举)

getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(String name):获得客户端请求中传送的name 指定的参数值

getParameterNames():获得客户端传送给服务器端的所有参数的名字(枚

举)

getParameterValues(String name):获得有name 指定的参数的所有值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP 地址

getRemoteHost():获取客户端的名字

getSession([Boolean create]):返回和请求相关Session

getServerName():获取服务器的名字

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(String name):删除请求中的一个属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值