JSP面試問題記錄
Filter:/*** SignonFilter類,對于請求進(jìn)行登錄驗(yàn)證,如果登錄成功,則允許訪問資源,否則進(jìn)行攔截 * 登錄過的用戶session 中的isLogin 應(yīng)設(shè)置為字符串"true";
Filter:
/**
* SignonFilter類,對于請求進(jìn)行登錄驗(yàn)證,如果登錄成功,則允許訪問資源,否則進(jìn)行攔截 * 登錄過的用戶session 中的isLogin 應(yīng)設(shè)置為字符串"true";
*/
package com.jsp.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SignonFilter implements Filter{
String LOGIN_PAGE="index.jsp" ;
protected FilterConfig filterConfig ;
public void doFilter(final ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException
{
// TODO Auto-generated method stub
HttpServletRequest hreq=(HttpServletRequest)req;
HttpServletResponse hres=(HttpServletResponse)res;
HttpSession session=hreq.getSession();
String isLogin="" ;
try {
isLogin=(String)session.getAttribute("isLogin" );
//if(isLogin.equals("true"))
if ("true" .equals(isLogin))
{
System. out .println(" 在SignonFilter 中驗(yàn)證通過" );
chain.doFilter(req, res);
}
else
{
hres.sendRedirect(LOGIN_PAGE);
System. out .println(" 被Signon 攔截一個(gè)請求" );
}
}catch (Exception e)
{
e.printStackTrace();
}
}
,public void setFilterConfig(final FilterConfig filterConfig){ this . filterConfig =filterConfig;
}
public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub
this . filterConfig =arg0;
}
public void destroy() {
// TODO Auto-generated method stub
this . filterConfig =null ;
}
}
/**
* EncodingFilter類,對于請求進(jìn)行編碼過濾
*/
package com.jsp.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class EncodingFilter implements Filter{
protected FilterConfig filterConfig;
protected String targetEncoding="gb2312";
public void doFilter(final ServletRequest req,final ServletResponse res,FilterChain chain)
throws IOException,ServletException{
System. out .println("使用以下方法對請求進(jìn)行編碼:
encoding=" targetEncoding);
HttpServletRequest request=(HttpServletRequest)req;
request.setCharacterEncoding(targetEncoding);
//把處理權(quán)發(fā)送到下一個(gè)
chain.doFilter(req,res);
}
/**
* 和一般Servlet 一樣,可以獲得初始參數(shù)
,}
*/ public void init(FilterConfig config){ this .filterConfig=config; this .targetEncoding=config.getInitParameter("encoding"); } public void setFilterConfig(final FilterConfig filterConfig) { this .filterConfig=filterConfig; } public void destroy(){ this .filterConfig=null ; }
對應(yīng)web.xml 配置
xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
刷新:
window.location.Reload()應(yīng)該是刷新.(如果有數(shù)據(jù)提交的話,會提示是否提交的(是和否選項(xiàng))) window.location.href=window.location.href;
是定向url 提交數(shù)據(jù)
是大的區(qū)別還是是否提交數(shù)據(jù)了
重定向:
response.sendRedirect("index.jsp" ); > 只有字符鍵觸發(fā)keypress 事件。event.keyCode a-z 分別為97-122 A-Z分別為65-90 空格為32 回車為13 回格、delete 件和光標(biāo)鍵等操作鍵不觸發(fā)keypress Keyup 事件基本所有鍵都觸發(fā),并且大小寫字母event.keyCode 相同, 為65-90. 回車為13,del 為46,回格(backspace )為8,空格為32 HTTP 返回狀態(tài): 常見Http Header 返回狀態(tài)詳解 收藏 常見Http Header 返回狀態(tài)詳解: 當(dāng)用戶點(diǎn)擊或搜索引擎向網(wǎng)站服務(wù)器發(fā)出瀏覽請求時(shí),服務(wù)器將返回H ttp Header Http頭信息狀態(tài)碼, 常見幾種如下: 1、Http/1.1 200 OK 訪問正常 表示成功訪問, 為網(wǎng)站可正常訪問時(shí)的狀態(tài)。 2、Http/1.1 301 Moved Permanently 永久重定向 對搜索引擎相對友好的跳轉(zhuǎn)方式,當(dāng)網(wǎng)站更換域名時(shí)可將原域名作301永久重定向到新域名,原域名權(quán)重可傳遞到新域名,也常有將不含www 的域名301跳轉(zhuǎn)到含www 的,如xxx.com 通過301跳轉(zhuǎn)到www .xxx.com 3、Http/1.1 302 Found 為臨時(shí)重定向 易被搜索引擎判為作弊, 比如asp 程序的response.Redirect()跳轉(zhuǎn)、js 跳轉(zhuǎn)或靜態(tài)http 跳轉(zhuǎn)。 4、Http/1.1 400 Bad Request 域名綁定錯誤 一般是服務(wù)器上域名未綁定成功,未備案等情況。 5、Http/1.1 403 Forbidden 沒有權(quán)限訪問此站 你的IP 被列入黑名單,連接的用戶過多,可以過后再試,網(wǎng)站域名解析到了空間,但空間未綁定此域名等情況。 6、Http/1.1 404 Not Found 文件或目錄不存在 表示請求文件、目錄不存在或刪除,設(shè)置404錯誤頁時(shí)需確保返回值為404。常有因?yàn)?04錯誤頁設(shè)置不當(dāng)導(dǎo)致不存在的網(wǎng)頁返回的不是404而導(dǎo)致搜索引擎降權(quán)。 7、Http/1.1 500 Internal Server Error 程序或服務(wù)器錯誤 表示服務(wù)器內(nèi)部程序錯誤,出現(xiàn)這樣的提示一般是程序頁面中出現(xiàn)錯誤,如小的語法錯誤,數(shù)據(jù)連接故障等。 Http 狀態(tài)碼一覽表 所謂的404頁就是服務(wù)器404重定向狀態(tài)返回頁面。數(shù)字404指的是404號狀態(tài)碼。一般常用到的有200號狀態(tài)碼和404號狀態(tài)碼。200號表示網(wǎng)頁被下載成功,而404號表示不能成功下載并產(chǎn)生錯誤。下面是HTTP 狀態(tài)碼一覽表。 1xx :請求收到,繼續(xù)處理 2xx :操作成功收到,分析、接受 3xx :完成此請求必須進(jìn)一步處理 4xx :請求包含一個(gè)錯誤語法或不能完成 5xx :服務(wù)器執(zhí)行一個(gè)完全有效請求失敗 100——客戶必須繼續(xù)發(fā)出請求 101——客戶要求服務(wù)器根據(jù)請求轉(zhuǎn)換HTTP 協(xié)議版本 200——交易成功 201——提示知道新文件的URL 202——接受和處理、但處理未完成 203——返回信息不確定或不完整 204——請求收到,但返回信息為空 205——服務(wù)器完成了請求,用戶代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過的文件 206——服務(wù)器已經(jīng)完成了部分用戶的GET 請求 300——請求的資源可在多處得到 301——刪除請求數(shù)據(jù) 302——在其他地址發(fā)現(xiàn)了請求數(shù)據(jù) 303——建議客戶訪問其他URL 或訪問方式 304——客戶端已經(jīng)執(zhí)行了GET ,但文件未變化 305——請求的資源必須從服務(wù)器指定的地址得到 306——前一版本HTTP 中使用的代碼,現(xiàn)行版本中不再使用 307——申明請求的資源臨時(shí)性刪除 400——錯誤請求,如語法錯誤 401——請求授權(quán)失敗 402——保留有效ChargeT o 頭響應(yīng) 403——請求不允許 404——沒有發(fā)現(xiàn)文件、查詢或URl 405——用戶在Request-Line 字段定義的方法不允許 406——根據(jù)用戶發(fā)送的Accept 拖,請求資源不可訪問 407——類似401,用戶必須首先在代理服務(wù)器上得到授權(quán) 408——客戶端沒有在用戶指定的餓時(shí)間內(nèi)完成請求 409——對當(dāng)前資源狀態(tài),請求不能完成 410——服務(wù)器上不再有此資源且無進(jìn)一步的參考地址 411——服務(wù)器拒絕用戶定義的Content-Length 屬性請求 412——一個(gè)或多個(gè)請求頭字段在當(dāng)前請求中錯誤 413——請求的資源大于服務(wù)器允許的大小 414——請求的資源URL 長于服務(wù)器允許的長度 415——請求資源不支持請求項(xiàng)目格式 416——請求中包含Range 請求頭字段,在當(dāng)前請求資源范圍內(nèi)沒有range 指示值,請求也不包含If-Range 請求頭字段 417——服務(wù)器不滿足請求Expect 頭字段指定的期望值,如果是代理服務(wù)器,可能是下一級服務(wù)器不能滿足請求 500——服務(wù)器產(chǎn)生內(nèi)部錯誤 501——服務(wù)器不支持請求的函數(shù) 502——服務(wù)器暫時(shí)不可用,有時(shí)是為了防止發(fā)生系統(tǒng)過載 503——服務(wù)器過載或暫停維修 504——關(guān)口過載,服務(wù)器使用另一個(gè)關(guān)口或服務(wù)來響應(yīng)用戶,等待時(shí)間設(shè)定值較長 505——服務(wù)器不支持或拒絕支請求頭中指定的HTTP 版本 本文來自CSDN 博客,轉(zhuǎn)載請標(biāo)明出 2、以下代碼執(zhí)行test()和new test()的結(jié)果各是什么 var a = 0; function test(){ a = 5; alert(a); alert(this.a); var a; alert(a); } 5 0 5, 5 undifined 5 處: A.prototype.name 的意義 主要考的是js 面向?qū)ο蟮闹R 在本文中講開始正式討論Javascript 的Prototype 。對于Javascript 的初學(xué)者來說,Prototype 是個(gè)蠻高深的話題,其實(shí)并不盡然。 我說不盡然,意思是說理解Prototype 的一般用法很簡單。但是真正能做到融會貫通理解Pr ototype 確實(shí)是件很難的事情。 今天我就從Prototype 的基本開始講。上文中我講了原型模式。其實(shí)在Javascript 中原型也是這個(gè)意思。Javascript 中對象的原型屬性的解釋是:返回對象類型原型的引用。這是一個(gè)暈人的解釋。其實(shí)就是指定了一個(gè)需要復(fù)制的對象。 文字再多也不如代碼,上代碼,說最簡單的,任何類都繼承自O(shè)bject 類: 其實(shí)這樣就相當(dāng)于Object 對象是A 的一個(gè)原型,這樣就相當(dāng)于了把Object 對象的屬性和方法復(fù)制到了A 上,和原型模式的精髓一樣吧! 好,大概了解了prototype 的基本用法,我們來看看原型究竟有什么用處。 最簡單的用法,動態(tài)擴(kuò)展類的方法和屬性。 現(xiàn)在要擴(kuò)充方法: 好,測試下:










