Java学习笔记
Posted pray_REQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习笔记相关的知识,希望对你有一定的参考价值。
1.关于重载与重写(覆盖)的异同点:
重载与重写都是多态的一种体现方式。重载是编译期间的活动,而重写是运行期间的活动。
重载:在一个类中定义相同的名字的方法,但方法的参数列表、方法类型及参数个数、参数顺序不相同,但返回值不作为是否重载的标志,可以修改可见性;
重写:在继承关系的子类中,定义一个与父类相同的方法。要求子类重写基类的方法时要与父类方法具有相同的方法名、参数类型、参数个数、参数顺序和返回值,可见性需大于等于基类方法。重写的方法的访问权限应该与父类中被重写方法的访问权限相同或高于它的访问权限。
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 */
注意:
final修饰的方法可以被重载,但不能被重写;
构造方法可以重载,但不能重写,因为构造方法名必须与类名相同,方法名不同所以不能重写
private修饰的成员方法不能被重写且static修饰的方法亦不能被重写。
2.JSP脚本的9个内置对象:
application config exception out page pageContext request response session
这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页面
以上是关于Java学习笔记的主要内容,如果未能解决你的问题,请参考以下文章