- 相關(guān)推薦
java面試筆試題 (WEB)
1. jsp有哪些內(nèi)置對(duì)象?作用分別是什么?
一共有9個(gè)內(nèi)置對(duì)象
pageContext javax.servlet.jsp.pageContext
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession
application javax.servlet.ServletContext àthis.getServletContext()
config javax.serlvet.ServletConfig
exception java.lang.Throwable
page java.lang.Object
out javax.servlet.jsp.JspWriter
作用:
1、pageContext 表示頁(yè)容器 àEL表達(dá)式、 標(biāo)簽 、上傳
2、request 服務(wù)器端取得客戶端的信息:頭信息 、Cookie 、請(qǐng)求參數(shù) ,最大用處在MVC設(shè)計(jì)模式上
3、response 服務(wù)器端回應(yīng)客戶端信息:Cookie、重定向
4、session 表示每一個(gè)用戶,用于登錄驗(yàn)證上
5、application 表示整個(gè)服務(wù)器
6、config 取得初始化參數(shù),初始化參數(shù)在web.xml文件中配置
7、exception 表示的是錯(cuò)誤頁(yè)的處理操作
8、page 如同this一樣,代表整個(gè)jsp頁(yè)面自身
9、out 輸出 ,但是盡量使用表達(dá)式輸出
2. jsp有哪些動(dòng)作?作用分別是什么?
jsp共有以下6中基本動(dòng)作
3. jsp 中動(dòng)態(tài)INCLUDE和靜態(tài)INCLUDE 的區(qū)別?
動(dòng)態(tài)INCLUDE 用
靜態(tài)INCLUDE用<%@ include %>偽碼實(shí)現(xiàn):
<%@ include file=”include.jsp” %> 直接將內(nèi)容先包含后處理,它不會(huì)檢查所包含的文件的變化,適用于包含靜態(tài)頁(yè)面
4. 兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別?
客戶端跳轉(zhuǎn):
服務(wù)器端跳轉(zhuǎn):response.sendRedirect(),跳轉(zhuǎn)之后地址欄改變,完全轉(zhuǎn)向新的頁(yè)面,不會(huì)再回來(lái),相當(dāng)于go to 語(yǔ)句。
5. 請(qǐng)總結(jié)一下WEB開(kāi)發(fā)中的會(huì)話跟蹤實(shí)現(xiàn)
1、 Session也是最常用的一種
2、 Cookie
3、 地址重寫(xiě)
4、 隱藏域
6. 在Web開(kāi)發(fā)中需要處理HTML標(biāo)記時(shí),應(yīng)做什么樣的處理,要篩選哪些字符
(< > & “ ‘ 空格 乘號(hào) 除號(hào) .........)
因?yàn)橐陨系臉?biāo)記都屬于HTML范疇的內(nèi)容,所以必須進(jìn)行轉(zhuǎn)義操作
顯示效果 符號(hào)說(shuō)明 實(shí)體名表示 實(shí)體編號(hào)表示
空格符
< 小于號(hào) < <
> 大于號(hào) > >
& 符號(hào)& & &
“ 雙引號(hào) " "
C 版權(quán)符號(hào) © &169;
R 注冊(cè)商標(biāo) ® ®
× 乘號(hào) × ×
÷ 除號(hào) ÷ ÷
‘ 單引號(hào) ´
7. 說(shuō)明Jsp中errorpage的作用域,應(yīng)用范圍
表示錯(cuò)誤頁(yè)的操作,在一般的站點(diǎn)中,只要一個(gè)程序出現(xiàn)了錯(cuò)誤,就是產(chǎn)生了異常,則可以統(tǒng)一跳轉(zhuǎn)到一個(gè)頁(yè)面上進(jìn)行顯示,那么這種操作就屬于錯(cuò)誤頁(yè)的處理,但是簡(jiǎn)單的錯(cuò)誤頁(yè)基本上都是在Jsp的開(kāi)發(fā)中使用的。要想進(jìn)行錯(cuò)誤頁(yè)的設(shè)置,需要滿足以下兩個(gè)條件:
1. 在錯(cuò)誤能夠處理的頁(yè)上的page指令中,增加:isErrorpage=”true”,表示可以處理錯(cuò)誤
2. 在每一個(gè)頁(yè)面指定errorpage,執(zhí)行isErrorpage為true的頁(yè)面。
如果現(xiàn)在希望能夠配置一種全局的錯(cuò)誤處理的話,則可以在Web.xml文件中進(jìn)行配置
一旦出現(xiàn)錯(cuò)誤之后,會(huì)自動(dòng)跳轉(zhuǎn)到指定的頁(yè)面,但是這樣的跳轉(zhuǎn),永遠(yuǎn)都是屬于服務(wù)器端跳轉(zhuǎn)
8. 寫(xiě)一段JDBC連接Oracle的程序,并實(shí)現(xiàn)數(shù)據(jù)查詢。
package com.jdbc;
//import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.preparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJdbc {
public static void main(String[] args) {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String username = "lanlan"; //scott
String password = "123456"; //tiger
String sql = "select * from users t";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, username, password);
// preparedStatement pstmt = conn.prepareStatement(sql);
// ResultSet rs = pstmt.executeQuery();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("username"));
System.out.println(rs.getString("password"));
}
rs.close();
stmt.close();
// pstmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
9. Class.forName 的作用?為什么要用?
Class.forName(xxx.xx.xx) 返回的是一個(gè)類
Class.forName(xxx.xx.xx)的作用是要求JVM查找并加載指定的類,也就是說(shuō)JVM會(huì)執(zhí)行該類的靜態(tài)代碼段
10. 簡(jiǎn)述在JSp中是如何實(shí)現(xiàn)分頁(yè)操作的?
分頁(yè)有兩種情況:
真分頁(yè):性能高,是基于數(shù)據(jù)庫(kù)的操作,只是從數(shù)據(jù)庫(kù)中取出部分的數(shù)據(jù)進(jìn)行顯示,所以性能高,但是可移植性低
假分頁(yè):性能低,是將全部的結(jié)果查詢出來(lái),之后依靠算法分頁(yè),只顯示部分?jǐn)?shù)據(jù),因?yàn)槭褂昧送ㄓ玫恼Z(yǔ)法,所以可移植性高
真分頁(yè)實(shí)現(xiàn)原理:
1.定義一系列的變量:currentpage(當(dāng)前頁(yè)) showResultNumber(每頁(yè)顯示記錄數(shù)),
并通過(guò)查詢求出countResultNumber(總記錄數(shù))求出countpage(總頁(yè)數(shù))
|- countpage=(countResultNumber-1)/showResultNumber+1
2.然后根據(jù)currentpage 和 showResultNumber到數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)
|- Oracle中用rownumber MySql中用limit()
3.然后在表單中不斷地修改currentpage和showResutlNumber就可以實(shí)現(xiàn)分頁(yè)
11. 介紹在JSp中如何使用javaBeans
1. javaBean的格式要求:必須有包、public calss 聲明、屬性封裝、無(wú)參的構(gòu)造函數(shù)、setter() 和getter()方法
2. jsp中導(dǎo)入javaBean:
使用import導(dǎo)入 如:
<%@ page import="com.model.User" %>
使用
12. 說(shuō)一說(shuō)什么是Servlet 和Servlet的生命周期?
什么是Servlet:
Servlet是用Java編寫(xiě)的服務(wù)端程序,它與協(xié)議和平臺(tái)無(wú)關(guān)。Servlet運(yùn)行于Java-enabled Web Server中。Servlet可以動(dòng)態(tài)地?cái)U(kuò)展Server的能力,并采用 請(qǐng)求-響應(yīng) 模式提供Web服務(wù)。
Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。這個(gè)過(guò)程為:
1.客戶端發(fā)送請(qǐng)求至服務(wù)器端;
2.服務(wù)器將請(qǐng)求信息發(fā)送至Servlet
3.Servlet生成響應(yīng)內(nèi)容并將其傳給Server。響應(yīng)內(nèi)容動(dòng)態(tài)生成,通常取決于客戶端的請(qǐng)求
4.服務(wù)器將響應(yīng)返回給客戶端
Servlet的生命周期:
加載
初始化:(由應(yīng)用服務(wù)器Tomcat創(chuàng)建)
正常一次,對(duì)應(yīng) init()方法,有兩個(gè) init()方法,其中一個(gè)是具有ServletConfig對(duì)象,此方法存在則無(wú)參不調(diào)用,Servlet對(duì)象是由應(yīng)用服務(wù)器在第一次使用的時(shí)候創(chuàng)建,一個(gè)Servlet只有一個(gè)Servlet對(duì)象存在。也可以通過(guò)在web.xml文件中配置
服務(wù):
服務(wù)多次,所有的服務(wù)都由service()方法分配,包括 dopost() 和doGet(),分別處理post和get 請(qǐng)求
銷毀:
正常一次,調(diào)用destroy()方法,當(dāng)重新加載或者關(guān)閉應(yīng)用服務(wù)器的時(shí)候應(yīng)用服務(wù)器會(huì)銷毀Servlet對(duì)象,如果一個(gè)Servlet長(zhǎng)時(shí)間不使用,也會(huì)自動(dòng)銷毀,而當(dāng)再次使用的時(shí)候就必須重新進(jìn)行初始化的操作
卸載
13. Servlet中forward()與sendRedirect()的區(qū)別?
forward()方法是RequestDispatcher接口定義的,而sendRedirect()是response定義的,sendRedirect()是服務(wù)器端的跳轉(zhuǎn),forward()是客戶端的跳轉(zhuǎn)
14. MVC的各個(gè)部分都有哪些技術(shù)來(lái)實(shí)現(xiàn)?如何實(shí)現(xiàn)?
1.面向事件驅(qū)動(dòng)的(JSF)
2.面向請(qǐng)求驅(qū)動(dòng)的(Struts1.X,Struts2.X,WebWork)
· MVC: Model 、View 、Controller
|- Model(模型)JavaBean:業(yè)務(wù)處理、數(shù)據(jù)處理
|- View(視圖)JSp:最好不存在scriptlet,可以使用標(biāo)簽消除
|- Controller(控制器):接受View提交的內(nèi)容并調(diào)用JavaBean,并根據(jù)JavaBean的處理結(jié)果進(jìn)行跳轉(zhuǎn)
·實(shí)現(xiàn)原理:
所有的JSp將內(nèi)容提交給Servlet,Servlet接收這些內(nèi)容并調(diào)用相對(duì)應(yīng)的JavaBean進(jìn)行業(yè)務(wù)及數(shù)據(jù)的處理,完成業(yè)務(wù)的操作流程。Servlet調(diào)用的只是接口,并根據(jù)這些接口的操作結(jié)果將內(nèi)容交給JSp顯示,在顯示的時(shí)候盡量少出現(xiàn)scriptlet代碼。
15. 簡(jiǎn)述國(guó)際化程序的實(shí)現(xiàn)思路?
·Locale 、屬性文件 、 ResourceBundle
·國(guó)際化程序的實(shí)現(xiàn),是根據(jù)本機(jī)的操作系統(tǒng)的語(yǔ)言類型,選擇不同的屬性文件,所有程序的基本代碼一樣,但是文字顯示不一樣,所以將內(nèi)容作為屬性文件出現(xiàn)之后,可以只是顯示屬性文件中的文字
16. 描述JSp和Servlet的區(qū)別、共同點(diǎn)、各自應(yīng)用的范圍。
·區(qū)別:先有的Servlet再有的JSp,Servlet是在Java中嵌入HTML代碼,而JSp是在HTML代碼中嵌入Java代碼
jsp是一種腳本語(yǔ)言,簡(jiǎn)化了java和Servlet的使用難度,同時(shí)擴(kuò)展了網(wǎng)頁(yè)動(dòng)態(tài)執(zhí)行的能力
jsp仍然沒(méi)有超出java和Serlvet的范圍,不僅jsp頁(yè)面上可以直接寫(xiě)java代碼,而且jsp是先被編譯成Servlet之后才實(shí)際運(yùn)行的
jsp在服務(wù)器上執(zhí)行,將結(jié)果輸出到客戶端顯示
·共同點(diǎn):Jsp可以完成的功能Servlet也可以完成,但是對(duì)于過(guò)濾器、監(jiān)聽(tīng)器只能由Servlet完成
·應(yīng)用范圍:Jsp用于顯示,Servlet用于控制
17. 簡(jiǎn)述Web.xml文件的作用
·屬于部署描述符,在整個(gè)Java中只要是容器都會(huì)存在部署描述符,此部署描述符可以控制整個(gè)Web中各個(gè)組件的運(yùn)行狀態(tài),也可以配置整個(gè)容器的狀態(tài), 主要配置程序中的一些基本信息和文件等等:
如 :
18. 什么情況下調(diào)用doGet()和dopost()方法?
Jsp頁(yè)面中的form標(biāo)簽里的method屬性為get時(shí)調(diào)用doGet(),為post時(shí)調(diào)用dopost().
19. 注意內(nèi)容
<%@ page language="java" import="java.util.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String path = request.getContextpath();
String basepath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerport() + path + "/";
%>
凡是自動(dòng)生成的代碼,都需要注意:
public static void main(String [] args){}
【java面試筆試題 WEB】相關(guān)文章:
Java Web基礎(chǔ)筆試題09-26
Java面試題01-22
java面試試題07-19
java面試簡(jiǎn)答試題09-25
web前端面試題08-08
Java框架面試題07-16
java線程面試試題09-25
java學(xué)習(xí):Java面試題和答案07-17
2016高薪Java面試題08-05