1.關於重載與重寫(覆蓋)的異同點:java
重載與重寫都是多態的一種體現方式。重載是編譯期間的活動,而重寫是運行期間的活動。數據庫
重載:在一個類中定義相同的名字的方法,但方法的參數列表、方法類型及參數個數、參數順序不相同,但返回值不做爲是否重載的標誌,能夠修改可見性;session
重寫:在繼承關係的子類中,定義一個與父類相同的方法。要求子類重寫基類的方法時要與父類方法具備相同的方法名、參數類型、參數個數、參數順序和返回值,可見性需大於等於基類方法。重寫的方法的訪問權限應該與父類中被重寫方法的訪問權限相同或高於它的訪問權限。app
class Student{ protected int method1(int a,int b){return 0;} } public People extends Student{ public int method1(int a,int b){return 0};//正確,重寫父類方法可擴大訪問權限 //private int method1(int a,int b){return 0};//注意:不能下降訪問權限,故這種寫法是錯誤的 //private long method1(int a,int b){return 0};//錯誤,重寫父類方法,不能改變返回值的類型 //private int method1(int a,long b){return 0};/*正確,重載自身的方法能夠有不一樣訪問權限和返回值類型,也能夠將private int改成public short */
注意:jsp
final修飾的方法能夠被重載,但不能被重寫;url
構造方法能夠重載,但不能重寫,由於構造方法名必須與類名相同,方法名不一樣因此不能重寫spa
private修飾的成員方法不能被重寫且static修飾的方法亦不能被重寫。code
2.JSP腳本的9個內置對象:對象
application config exception out page pageContext request response sessionblog
這9個內置對象都是Servlet API接口的實例,能夠直接使用。注意:JSP內置對象的實質,是_jspService()方法的形參或是局部變量,故當調用這些對象時,無需建立,直接使用。可是不能在JSP聲明中使用,不然會找不到變量。
2.1 application對象(javax.servlet.ServletContext的實例)
application對象表明Web應用自己,可以使用application來操做Web應用相關數據,一般有兩個做用:
2.1.1在整個Web應用的多個JSP、Servlet之間共享數據;
application.setAttribute("counter",String.valueOf(++i));//經過setAttribute將一個值設置成application的counter屬性,該屬性值對整個Web應用有效。每刷新一次頁面,變量i自加
,並被設置爲application的counter屬性的值
ServletContext sc = getServletConfig().getServletContext();//獲取該Web應用的ServletContext實例,而後在JSP頁面中經過application內置對象訪問該實例
out.println(sc.getAttribute("counter"));
注意:不要僅僅爲了JSP、Servlet數據共享就將數據放入application中,應該只將Web應用的狀態數據放入application對象中。
2.1.2訪問得到Web應用的配置參數;
String driver = application.getInitParameter("driver");//從配置參數中獲取驅動 String url = application.getInitParameter("url"); //獲取數據庫url String user = application.getInitParameter("user"); String pass = application.getInitParameter("password"); Class.forName(driver); //註冊驅動 Connection conn = DriverManager.getConnnection(url,user,password);//獲取數據庫鏈接 Statement stmt = conn.createStatement(); //建立Statement對象
ResultSet rs = stmt.executeQuery("select * from news_inf");
2.2 exception對象、out對象、pageContext對象
2.2.1 exception對象(Throwable的實例)
JSP腳本中產生的錯誤和異常,exception對象僅在異常處理頁面中有效。當異常處理頁面中page指令的isErrorPage屬性設置爲true時,頁面可訪問exception對象。
2.2.2 out對象
out對象表明一個頁面輸出流,用於在頁面上輸出變量或是常量值,通常可用輸出表達式代替。------out.println();
2.2.3 pageContext對象
該對象主要包含如下方法:
ServletRequest getRequest( ):獲取request 對象,同理,可將request換成resoponse
HttpSession getSession( ):獲取session對象
ServletConfig getServletConfig( ):獲取config對象
ServletContext getServletContext( ):獲取application對象
2.3 request對象
每一個request對象封裝着一次用戶請求,且全部請求參數都被封裝在request對象中。
2.3.1 request對象能夠用來獲取請求頭或請求參數,還能夠用於操做request範圍的屬性。
<%Enumeration<String> headerNames = request.getHeaderNames();//獲取全部請求頭的名稱 while (headerNames.hasMoreElements()){ String headerNames = headerNames.nextElements();//獲取每一個請求及其對應的值 out.println(headerName + "-->" + request.getHeader(headerName) + "<br/>"); } request.setCharacterEncoding("GBK"); String name = request.getParameter("name");//String getParameter(String paramName):用來獲取 paramName請求參數的值 String gender = request.getParameter("gender"); String national = request.getParameter("country"); String[] color = request.getParameterValues("color"); %> name:<%=name%><hr/> gender:<%=gender><hr/> <%for(String c: color) {out.println(c+" ");}%><hr/> country:<%=national%><hr/>
2.3.2 可用於操做request範圍的屬性:
HttpServeletRequest包含下列兩個方法,用於設置和獲取request範圍的屬性:
setAttribute(String attName,Object attValue):將attName設置成request範圍的屬性
Object getAttribute(String attName):獲取request範圍的屬性
2.3.3 執行forward或include:
HttpServeletRequest類提供一個getRequestDispatcher(String path)方法,path是但願forward或include的目標路徑(注意,目標路徑前必須以「/」開頭):
forward(ServletRequest request,ServletResponse response):執行forward
include(ServletRequest request,ServletResponse response):執行include
getRequestDispatcher("/login.jsp").include(request , response); //將login.jsp頁面include到本頁面 getRequestDispatcher("/login.jsp").include(request , response); //請求forward到login.jsp頁面