1.JAVA关键字:final、finally、finalize、static
解析:简单区别
final 用于声明属性、方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
static:如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。
详细分析: final关键字 (1)final修饰类,表示该类不能被继承,一个类不能同事被声明为abstract抽象类和final的类; (2)final修饰变量,则该变量必须赋初值,而且它的取值在整个过程都不会改变; (3)final修饰方法,称为最终方法。它不可被子类重新定义,也不能被重载; static关键字: (1)static定义的数据或方法,可以不用new出类的实例而让类直接调用; (2)static代码块;static关键字还有一个比较关键作用就是用来形成静态代码块以优化程序性能。 finally:java的一种异常处理机制。 finally是对Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。 finalize:Java中Object类中的一个方法名。 ava技术使用finalize()方法在垃圾收集器将对象从内存中清除出去前,做必要的清理工作.这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 |
2.构造函数/JAVA语言特征/继承/封装/抽象/接口/多态概念/IO流 文件复制操作/JDBC数据库操作
2.1构造函数:类的初始化;
2.2 JAVA语言特征:平台无关性;安全性;面向对象;分布式;健壮性;性能优异等。
2.3 JAVA三大特性:封装、继承、多态;
2.4 继承:通过继承,可以使用以前定义的类的成员方法和成员变量,经过简单的程序编码就可以构建功能强大的新类。使用extends关键字实现继承,声明格式如下
[修饰符] class类名 extends父类名
class Son extends Father{
……
}
2.5封装:把对象的属性隐藏在对象的内部,不允许外部直接访问和修改,也就是常说的实体类。
2.6抽象:抽象类和抽象方法。抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。 抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。抽象类本身不具备实际的功能,只能用于派生其子类。抽象类中可以包含构造方法,但是构造方法不能被声明为抽象。调用抽象类中的方法(抽象方法和非抽象方法),如果方法是static的,直接 抽象类.方法 就可以了;如果是非static的则必须需要一个继承的非抽象类,然后用这个非抽象类的实例来调用方法 ..
2.7接口:使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:
[修饰符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔。这时就可能出现常量或方法名冲突的情况,解决该问题时,如果常量冲突,则需要明确指定常量的接口,这可以通过“接口名.常量”实现。如果出现方法冲突时,则只要实现一个方法就可以了。
多态概念:多态是Java面向对象语言的三大特征之一,多态是指程序中同一种操作在不同环境中有不同的语义解释。
2.8抽象类和接口的区别:
(1)在接口中,所有方法都是抽象的,抽象类里面可以有非抽象方法。
(2)接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的;
(3)实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现;
(4)接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。
2.9 IO流: IO包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介比如文件、数据库等读取到内存中所以也分为字符输入流和字节输入流。输出流指的是将内存中的数据写入外部媒介,也分为了字符输出流和字节输出流。
2.10文件复制操作
//字符流方式复制文件(别读别写)
FileReader fr = new FileReader(sourcePath); // 源文件字符读取流
BufferedReader br = new BufferedReader(fr); // 源文件字符读取缓冲流
FileWriter fw = new FileWriter(destPath, true); // 目标文件字符写入流
BufferedWriter bw = new BufferedWriter(fw); // 目标文件字符写入缓冲流
String str = null;
while(null != (str = br.readLine())){
bw.write(mes);
bw.newLine();
}
bw.close();
br.close();
fw.close();
fr.close();
//字节流复制文件
File inputFile = new File(inputPath);
File outputFile = new File(outputPath);
InputStream inputStream = new FileInputStream(inputFile);
OutputStream outputStream =new FileOutputStream(outputFile);
//一次性把数据全部读取到内存中来,再一次性写入
public void copy1() throws IOException{
byte b[]=new byte[(int)inputFile.length()];
inputStream.read(b); //一次性读入
outputStream.write(b); //一次性写入
inputStream.close();
outputStream.close();
}
//边读边写
public void copy2() throws IOException{
int temp=0;
while((temp=inputStream.read())!=-1){
outputStream.write(temp);
}
inputStream.close();
outputStream.close();
}
2.11JDBC数据库操作:
Class.forName(“com.mysql.jdbc.Driver”); //加载数据库驱动
String url = “jdbc:mysql://localhost:3306/sqlname”; //指定连接数据库的URL
String username = “root”; //指定连接数据库的用户名
String password = “123456”; //指定连接数据库的密码
Connection conn = DriverManager.getConnection(url,username,password);
3.JavaBean定义和特性
Java Beans是一个可重复使用的软件部件
JavaBean的特性:
(1)它是一个公共的类;
(2)构造函数没有输入参数;
(3)属性必须声明为private,方法必须声明为public;
(4)用一组set方法设置内部属性;
(5)用一组get方法获取内部属性;
(6).是一个没有主方法的类,一般的Java类默认继承自Object类,而Bean不需要这种继承。
4.JAVA表达式
表达式是由标示符、常量、变量和运算符组成,是程序的基本组成部分。
5. JSP知识点
5.1 Servlet生命周期
第一步:用户通过客户端浏览器请求服务器,服务器加载Servlet,并创建一个Servlet实例;
第二步:容器调用Servlet的init()方法;
第三步:容器调用service()方法,并将HttpServletRequest和HttpServletResponse对象传递给该方法,在service()方法中处理用户请求;
第四步:在Servlet中请求处理结束后,将结果返回给容器;
第五步:容器将结果返回给客户端进行显示;
第六步:当Web器关闭时,调用destroy()方法销毁Servlet实例。
5.2 JSP生命周期
以下JSP生命周期中所走过的几个阶段:
(1)解析阶段:Servlet容器解析JSP文件代码,如果有语法错误,就会向客户端返回错误信息; (2)翻译阶段:Servelet容器把JSP文件翻译成Servelet源文件; (3)编译阶段:Servelet容器编译Servelet源文件,生成servelet类; (4)初始化阶段:加载与JSP对应的Servelet类,创建其实例,并调用它的初始化init()方法; (5)执行阶段:调用与JSP对应的Servelet实例的服务方法; (6)销毁阶段:调用与JSP对应的Servelet实例的销毁方法,然后销毁Servelet实例; |
5.3指令
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP2.0规范中共定义了三个指令:
(1)page指令
(2) include指令
(3)taglib指令
JSP指令的基本语法格式:<%@ 指令 属性名="值"%>。
page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置。
include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。
Taglib指令用于在JSP页面中导入标签库。
5.4jsp七大动作
(1)创建bean对象:
(2)为对象设置属性值:
(3)从对象中取出属性值:
(4)页面转向:
注意:动作标签的转向是同一次请求,等价于:request.getRequestDispatcher("/url").forward(request,response)
(5)
(6)传递参数标记:
(7)页面包含:
5.5作用域对象(九大隐式对象及其作用域)
作用域范围从小到大顺序:(pageContext、response、out、page、config、exception)----request----session----application
pageContext:作用域仅限于当前页面对象,可以近似于理解为java的this对象,离开当前JSP页面(无论是redirect还是forward),则pageContext中的所有属性值就会丢失。作用域page
request:作用域是同一个请求之内,在页面跳转时,如果通过forward方式跳转,则forward目标页面仍然可以拿到request中的属性值。如果通过redirect方式进行页面跳转,由于redirect相当于重新发出的请求,此种场景下,request中的属性值会丢失。
session:session的作用域是在一个会话的生命周期内,会话失效,则session中的数据也随之丢失。
application:作用域是最大的,只要服务器不停止,则application对象就一直存在,并且为所有会话所共享。
response:表示响应客户端的结果,作用域page
out:数据流的标准输出,负责把数据结果显示到客户端的浏览器,作用域page。
page:代表jsp本身,更准确的说,它代表jsp被转译后的Servlet,因此它可以调用Servlet类所定义的方法,作用域page。
config:与servlet有关,存放着一些servlet初试的数据结构,作用域page。
exception:异常处理,作用域page。
5.6跳转:
5.7Servlet与JSP的关系:
解析:JSP进行时要转换为Servlet,JSP本质上是Servlet。JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
6.其它
6.1 HTML表单元素/Table
6.2 Tomcat端口修改
在Tomcat的conf文件夹里有个server.xml文件,修改里面的
|
这段代码,那个port值就是端口号!
6.3MVC模式
MVC是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。
Model(模型):应用程序的主体部分,主要包括业务逻辑模块和数据模块。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性;
View(视图):界面, 用户与之交互的界面、在web中视图一般由jsp,html组成, 不应当处理数据;
Controller(控制器): 接收来自界面的请求并交给模型进行处理,控制着模型和视图之间的交互过程。
MVC的优点 :
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。
MVC的缺点:
与设计模式的缺点相同
1. 增加了复杂性;
2. 在提高大项目开发效率的同时降低了小项目的开发效率;
3. 处理流过程复杂造成了性能的下降;
4. 提供Rich Client无法避开javaScript,传统的MVC框架几乎从来没有把JavaScript列入考虑范围