J2EE java面試題

**

前端部分

**
1.常見的選擇器

元素選擇器
id選擇器  對應#符號
class選擇器  對應 . 符號

2.行內元素有哪些?塊級元素有哪些?

塊級元素:div p h1 h2 h3 h4 from ul
行內元素: a b i span input select

3.前端頁面有哪三層構成,分別是什麼?作用是什麼?

結構(內容)層 :html
表示層:CSS
行爲層:js

4.標籤title與alt屬性的區別是什麼?

Alt當圖片不顯示時用文字代表
Title爲該屬性提供信息

5.javascript 的typeof返回那些數據類型?

Object number function boolean undefined
聲明瞭但是未賦值的時候,類型是: undefined
賦值爲5之後,類型是: number
賦值爲5.1之後,類型是: number
賦值爲true之後,類型是: boolean
賦值爲hello之後,類型是: string

6.javascript中如何進行數字和字符串轉換

Number,Boolean和String轉換字符串:toString()

數字 10 轉換爲字符串10
布爾 true 轉換爲字符串true
字符串 hello javascript 轉換爲字符串 hello javascript
javascript分別提供內置函數 parseInt()和parseFloat(),轉換爲數字

注:如果被轉換的字符串,同時由數字和字符構成,那麼parseInt會一直定位數字,
直到出現非字符。 所以"10abc" 會被轉換爲 10

使用內置函數Boolean() 轉換爲Boolean值
當轉換字符串時:非空即爲true
當轉換數字時:非0即爲true
當轉換對象時:非null即爲true

Number()和parseInt()一樣,都可以用來進行數字的轉換
區別在於,當轉換的內容包含非數字的時候,Number() 會返回NaN(Not a Number)
parseInt() 要看情況,如果以數字開頭,
就會返回開頭的合法數字部分,如果以非數字開頭,則返回NaN

String()和toString()一樣都會返回字符串,區別在於對null的處理
String()會返回字符串"null"
toString() 就會報錯,無法執行

7.如何隱藏一個元素:

CSS隱藏元素有兩種方式:
display:none;(不佔位置)
visiblity:hidden;(要佔位置)
JQuery方式隱藏元素方式:
$(selector).hide()

**

服務端部分

**
1.9種隱式對象,以及他們的用途

JSP一共有9個隱式對象
request:請求
response:響應
out :輸出
pageContext:當前頁面作用域
session:代表當前會話作用域
application :全局作用域
config:可以獲取一些在web.xml中初始化的參數
page:代表當前對象
exception:表示異常對象

2.3種JSP的指令

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>:
JSP的基本設置,比如編碼方式,import其他類,是否開啓EL表達式
<%@include file="footer.jsp" %>:包含其他的文件
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>:JSTL標準標籤庫
EL會按照從高到低的優先級順序獲取 
pageContext>request>session>application

3.2種JSP的動作

<jsp:forward page="hello.jsp"/>:服務端跳轉
<jsp:include page="footer.jsp" />:包含其他文件

4.doGet()和doPost()的區別,分別在什麼情況下調用?

doGet和doPost都是在service()方法後調用的,分別來處理method=“get”和method="post"的請求

5.servlet的init方法和service方法的區別?

在Servlet的生命週期中,先調用init進行初始化,而且只調用一次。
接着在調用service,有多少次請求,就調用多少次service

6.servlet的生命週期

一個servlet的生命週期由
實例化(單例的 LoginServlet()只會執行一次),
初始化(init實例方法,只會執行一次),
提供服務(執行service()方法中的doGet()或者doPost()方法),
銷燬(destory()方法),
被回收(GC垃圾回收)幾個步驟組成

7.頁面間對象傳遞的方法

假如是a.jsp傳遞數據到b.jsp,那麼頁面間的對象傳遞的方式有如下幾種:
1.在a.jsp中的request.setAttribute,然後服務端跳轉到b.jsp
2.在a.jsp中的session.setAttribute,然後跳轉到b.jsp,無所謂客戶端還是服務端跳轉
3.在a.jsp中application.setAttribute,然後跳轉到b.jsp,無所謂客戶端還是服務端跳轉

8.Request常見方法

request.getRequestURL():瀏覽器發出請求時的完整URL,包括協議,主機名,端口(如果有)+
request.getRequestURI(): 瀏覽器發出請求的資源名部分,去掉了協議和主機名" + 
request.getQueryString(): 請求行中的參數部分,只能顯示以get方式發出的參數,post方式的看不到
request.getRemoteAddr(): 瀏覽器所處於的客戶機的IP地址
request.getRemoteHost(): 瀏覽器所處於的客戶機的主機名
request.getRemotePort(): 瀏覽器所處於的客戶機使用的網絡端口
request.getLocalAddr(): 服務器的IP地址
request.getLocalName(): 服務器的主機名
request.getMethod(): 得到客戶機請求方式一般是GET或者POST

9.J2EE是技術,還是平臺,還是框架?

是平臺,上面運行合種各樣的技術
(servlet,jsp,filter,listener)和框架(struts,hibernate,spring)

10.servlet與jsp的關係

JSP就是Servlet
在Servlet章節中,我們說HelloServlet是一個Servlet,不是因爲它的類名裏有一個"Servlet",
而是因爲它繼承了 HttpServlet
打開轉譯hello.jsp 後得到的hello_jsp.java,可以發現它繼承了類
(D:\tomcat\work\Catalina\localhost\_\org\apache\jsp\hello_jsp.java)
 
org.apache.jasper.runtime.HttpJspBase
 

而HttpJspBase 繼承了HttpServlet

所以我們說hello_.jsp.java 是一個Servlet

11.編寫JavaBean的注意事項

JavaBean就是實體類
	無需構造方法,屬性都有public的getter和setter

12.MVC的各個部分都有哪些技術來實現,分別如何實現

M模型層代表數據,使用bean,dao等等
V視圖層代表展現,使用html,jsp,css等
C控制層代表控制,使用servlet

13.JSP中兩種include的區別

一種是靜態包含,一種是動態包含
JSP最後都會被轉譯成Servlet
如果是:指令include   <%@include file="footer.jsp" %>
footer.jsp的內容會被插入到 hello.jsp 轉譯 成的hello_jsp.java中,最後只會生成一個hello_jsp.java文件
如果是:動作include  <jsp:include page="footer.jsp" />
footer.jsp的內容不會被插入到 hello.jsp 轉譯成的hello_jsp.java中,還會有一個footer_jsp.java獨立存在。 
hello_jsp.java 會在服務端訪問footer_jsp.java,然後把返回的結果,嵌入到響應中。

14.JSP中的兩種跳轉的方式是什麼,區別是什麼?

客戶端跳轉:jsp的客戶端跳轉和Servlet中是一樣的。
 		  response.sendRedirect("hello.jsp");
 		  
服務端跳轉:與Servlet的服務端跳轉一樣,也可以使用
		  request.getRequestDispatcher("hello.jsp").forward(request, response);
		  或者使用動作,簡化代碼:<jsp:forward page="hello.jsp"/>

15.如何實現在servlet中用正則表達式對e-mail格式進行驗證?

public static boolean emailFormat(String email)
    {
        boolean tag = true;
        final String pattern1 = "^([a-z0-9A-Z]+[-|//.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?//.)+[a-zA-Z]{2,}$";
        final Pattern pattern = Pattern.compile(pattern1);
        final Matcher mat = pattern.matcher(email);
        if (!mat.find()) {
            tag = false;
        }
        return tag;
    }

16.如何處理中文問題

中文問題分爲幾個部分
1.提交數據的時候
2.接受數據的時候
3.顯示數據的時候
全部都使用UTF-8編碼
例:
byte[] bytes=  name.getBytes("ISO-8859-1");     //採用ISO方式    編碼
name = new String(bytes,"UTF-8");           //採用utf-8方式     解碼		

要了解如下幾點,才能理解透徹
1. 編碼  和  解碼  是什麼,用utf-8來舉例:
阿倫  →   &#x963F;&#x4F26;    由左到右的過程,叫編碼
阿倫  ←   &#x963F;&#x4F26;    由右到左的過程,叫解碼

2.編碼和解碼的方式必須一樣才能避免出現亂碼
假如你用utf-8編碼,卻用gbk來解碼,那顯示出來就會是亂碼

3.tomcat接收到字符碼之後,會直接採用ISO-8859-1方式進行解碼(這是它的默認機制)
例如:    
用戶輸入“阿倫”,瀏覽器採用utf-8將其編碼爲  &#x963F;&#x4F26;   然後發給tomcat
tomcat理應用同樣的utf-8來解碼,但它不管不顧,依舊採用自己ISO的方式來解碼,比如解碼成了   ^-^  然後顯示出來, 這就是所謂的亂碼。
程序員的解決辦法就是先用tomcat的ISO方式再將 ^-^ 編碼,恢復成 &#x963F;&#x4F26;
然後再用瀏覽器的utf-8方式將  &#x963F;&#x4F26; 解碼,  就成功得到了  “阿倫”
整個流程:   “阿倫”    →   &#x963F;&#x4F26;    →    ^-^    →    &#x963F;&#x4F26;    →     阿倫 

這就是示例1步驟3中,先採用ISO方式編碼,再用utf-8解碼的原因。

17.簡述你對簡單servlet,過濾器,監聽器的理解

servlet作用是:處理獲取參數,處理業務,頁面跳轉
過濾器filter的作用是:攔截請求,一般會做編碼處理,登錄權限驗證
監聽器listener的作用是:監聽Request,Session,Context等等的聲明週期
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章