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