java就业面试大全
笔试题值java基础部分
1、一个“java”源文件中是否可以包括
多个类(不是内部类)?有什么限制
可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致
2、java有没有goto?
java中的保留字,现在没有在java中使用
3、说说&和&7的区别
&&和&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符俩边的表达式的结果都为true时,整个运算结果才为true,否则一方为true,则结果为false
&
如果有一方为false,还会计算第二个表达式
&&
如果一方为false,则不会计算下一个表达式
4、在java中如何跳出当前的多重嵌套循环?
一种方式是可以加标号,在条件满足的时候就是用break加标号即可
另一种方式就是让外层的循环条件表达式的结果可以受到里层循环体代码的控制
5、switch语句能否作用在byte上,能否作
用在long上,能否作用在String上?
byte是可以的
因为byte,short,char都可以隐式转换为int
long和String不可以
不符合switch语法的规定
6、short s1 = 1; s1 = s1 + 1;有什么错?
short s1 = 1; s1 += 1;有什么错?
对于short s1 = 1; s1 = s1 + 1,s1+1运算时会自动提升为int类型,会报强制类型转换异常
short s1 = 1; s1 += 1,+=是java运算符,可以正确编译
7、char类型中能否储存
一个汉字,为什么?
正面回答
可以,因为char类型是来储存Unicode棉麻的字符的,Unicode编码字符集包含了汉字,所以,char类型变量当然可以储存汉字
补充回答
不过,如果某个特殊的汉字没有被包含在Unicode编码字符集中,那么,这个char型变量就不能储存这个特殊汉字
Unicode编码占2个字节,所以char类型的变量也是占2个字节
8、用最有效率的方法算出2乘以8等于几?
2<<3,
因为讲一个数左移n位就相当于这个数乘以这个数的n次方,而位运算是cpu直接支持的,所以效率最高
9、使用final关键字修饰一个变量时
是引用不能变还是引用的对象不能变
final关键字修饰一个变量时,是指引用变量不能变,引用
变量所指向的对象中的内容还是可以改变的
10、==和equals方法究竟有什么区别
==
比较基本类型,比较的是基本类型的值
比较引用类型比较的是引用类型的地址值
equals
只能比较引用类型,默认比较地址值
11、静态变量和实例变量的区别
语法定义上
静态变量前要加static关键字
实例变量不加
程序运行时
实例变量属于某个对象的属性,必须创建了实例对象,其
中的实例变量才会被分配空间,才能使用实例变量
静态变量可以直接使用类名来引用
12、能否从一个静态方法内部
发出对非静态方法的调用
不可以,因为非静态方法是要与对象关联在一起的,必须
创建一个对象后,才可以在该对象上进行方法调用,而静
态方法调用的时候不需要创建对象,可以直接调用
13、Integet和int的区别
int
1、是java的基本数据类型
2、默认值为0
Integer
1、是int的包装类
2、默认值为null
14、Math.round(11.5)等于多少?
Math.round(-11.5)等于多少?
这是math类中提供的取整的方法,里面有三个数
ceil
表示向上取整
floor
表示向下取整
round
加上0.5之后向下取整
所以结果为12/-11
15、请说出作用域public,private,
protected以及不写时的区别
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
16、Overload和Override的区别。Overloaded
的方法是否可以改变返回值的类型
Overload
1、是重载的意思
2、重载就是方法名相同,参数列表和类型不同
Override
1、是覆盖的意思,也就是重写
2、重写就是表示子类中的方法和父类中的方法完全相同
这也是面向对象中多态的一种体现
Overloaded
如几个Overloaded的方法的参数列表不一样,他们的返回值类型当然也就不一样
如果俩个方法的参数列表完全一样,是否可以让他们的返回值不同来实现重载Overload,不可以
17、一个房子里有椅子,椅子有腿和背,
房子和椅子是什么关系?椅子与腿和背是什么关系?
如果房子有多个椅子,就是聚合关系,否则就是一种关联关系,当然,聚合就是特殊的关联,椅子与腿和背是组合关系
18、说一下has a和is a的区别?
is - a
表示的是属于关系,比如兔子属于一种动物(继承关系)
has - a
表示组合,包含关系。比如兔子包括头和腿等组件
19、线程如何同步和通讯?
同步代码块 synchronized
使用synchronized关键字加上一个锁对象来定义一段代码(锁对象可以是任意类型)
使用条件:多线程并发操作同一数据的时候(各自想得到对方的锁)
死锁
同步代码块嵌套并且使用相同的锁容易出现死锁,
尽量不要嵌套
20、说一下servlet的生命周期?
servlet生命周期(面试问)
init() 初始化
初始化方法
执行者:服务器
执行次数:一次
执行实际:默认第一次访问的时候
service() 服务
服务
执行者:服务器
执行次数:请求一次,执行一次
执行实际:请求来的时候
distory() 销毁
销毁
执行者:服务器
执行次数:一次
执行实际:当servlet被移除的时候或者服务器正常关闭的时候
servlet是一个单实例多线程
默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作.
并调用一次servlet方法,
每当请求来的时候,服务器创建一个线程,调用servlet方法执行自己的业务逻辑
当servlet被移除的时候服务器正常关闭的时候,服务器调用servlet的destory方法实现销毁操作
21、分层设计的好处?
1、实现了软件之间的解耦
2、便于进行分工
3、便于维护
4、提高软件组件的重用性
5、便于提到某种产品,比如说持久层的hibernate
6、便于产品功能的扩展
7、便于使用用户需求的不断变化
22、构造器Constructor是否可以被override
构造器Constructor不能被继承,因此不能被重写Override,但是可以被在、重载Overload
23、抽象类
抽象类与普通类唯一的区别就是不能创建实例化对象和抽象类允许有abstract方法
24、写clone()方法是,通常有一行代码,是什么?
clone有缺省行为,super.clone(),首先要把父类中的成员复制到位,然后才是复制自己的成员
25、面向对象的特征:
封装、继承、抽象、多态
抽象:
找出事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处
26、java中实现多态的机制是什么?
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法
27、抽象类和接口的区别
抽象类
1、抽象类可以有构造方法
2、抽象类可以有普通的成员方法
3、抽象类中可以有抽象方法,也可以有非抽象方法
4、抽象类中的方法访问类型可以为public 和 protected
5、抽象类中可以包含静态方法
6、抽象类中的静态成员变量可以使任何变量
7、一个类只能集成一个抽象类
抽象类在代码实现方面发挥作用,可以实现代码的重用
接口
1、接口不能有构造方法
2、接口中没有普通的成员方法
3、接口中的方法必须是抽象的
4、接口中只能是public
5、接口中不能包含静态方法
6、接口中的成员变量必须是final修饰的常量
7、一个类可以实现多个接口
接口一般是运用于系统架构设计方法发挥作用,主要用于定义模块之间的通信契约
28、内部类
匿名内部类是否可以继承其
他类,是否可以实现接口
匿名内部类就是没有名字的内部类,不能继承其他类,但是一个匿名内部类可以作为一个接口,由另一个内部类实现
29、内部类可以引用它的包含类的成员吗?
有没有什么限制?
完全可以,如果是静态嵌套类,那么在这种情况下不可以访问外部类的普通成员,而只能访问外部类中的静态成员
30、jdk中那些类不能被继承?
不能被继承的类是那些被final修饰的类
31、运行时异常和一般异常有什么区别?
运行时异常表示虚拟机的通常操作中可能遇到异常,是一种常见的异常
一般异常表示成语运行过程中可能出现的非正常状态
32、==和equals的区别
equals 只能比较引用数据类型 如果类没有重写object中的equals方法,比较的和==一样,就是地址值,重写了以后比较的是内容
== 是一个比较运算符,可以比较基本数据类型也可以比较引用数据类型,引用数据类型比较的是地址值
33、error和exception的区别
error
表示回复不是不可能但是很困难的情况下的一种严重问题。比如内存溢出
exception
表示一种设计实现的问题,也就是说他表示如果程序运行正常,就不会发生的情况
34、请说出5个常见的运行时异常
ArrayIndexOutOFBoundsException 数组索引越界异常
NullPointerException 空指针异常
ClassCastException 类型转换异常
ConcurrentModifictionException 并发修改异常
35、sleep和wait的区别
sleep
不释放资源
必须传参数(毫秒值)
是Thread中的静态方法
可以再任何地方使用
需要捕获异常
不需要唤醒
wait
释放资源
可传可不传
是Object类中的方法
只能在同步代码块中使用
不需要捕获异常
需要唤醒
36、多线程
多线程并行和并发的区别
并行就是俩任务同时进行(要求多核CPU)
用俩个电脑和俩个人聊天
并发就是俩个都请求运行,CPU就安排俩个轮流进行,看起来好像是同时进行的
一个电脑和俩个人聊天
JVM启动时多线程的吗?
是,JVM至少启动了垃圾回收线程和主线程,所以是多线程的
多线程的实现方式有几种?
俩种:1.继承Thread类重写run方法2.实现Runnable接口,重写run方法
继承Thread和实现Runnable的区别
继承Thread
好处:可以直接使用Thread类中方法,代码简单
弊端:如果已经有了父类,就不能用这种方法
实现Runnable
好处:即使线程有继承或者有接口都可以实现Runnable接口,接口可以多实现,多态的表现
弊端:不能直接使用Thread中的方法,需要先获得线程才能得到Thread方法,代码复杂
推荐使用
同步代码块 synchronized
使用synchronized关键字加上一个锁对象来定义一段代码(锁对象可以是任意类型)
使用条件:多线程并发操作同一数据的时候(各自想得到对方的锁)
死锁
同步代码块嵌套并且使用相同的锁容易出现死锁,
尽量不要嵌套
俩个线程是么时候通信,怎么通信?
前提: 在多线程并发的时候,希望他有序的执行
调用wait等待,唤醒的时候使用notify唤醒
线程的五种状态
新建
就绪
运行
阻塞
sleep等待
wait等待
死亡
说说你对线程池的理解
在Java程序中,创建线程是很耗费资源的,所以Java就给出了线程池,它是用来存放线程的一个大仓库,当线程运行结束后不会死亡,而是回到线程池中成为空闲状态,这样大大提高了程序的性能, 直观的反应出来的就是Java程序在启动的时候可能有点慢,但是一旦启动,运行速度还是很不错的.在JDK5以前,需要我们手动创建自己的线程池,但是jdk5以后就支持内置线程池了
37、同步和异步
同步:
如果数据将在线程间共享,例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取
异步:
当应用程序在对象上调用了一个需要花费很长事件来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率
38、集合
Collection 单列集合根接口
list 有序 有索引 可重复
ArrayList 数组实现(查找快,增删慢) (线程不安全)
遍历方式
转成数组遍历
迭代器遍历
在迭代时,不能通过集合对象操作集合中的元素,可能会发生ConcurrentModificationException 并发修改异常
可以 删除 但是要通过自身的remove方法,要不就报并发修改异常
普通for循环get()遍历
可以删除 要索引
增强for循环
不能删除
数组 length 属性
集合 length() 方法
LinkedList 链表实现(查找慢,增删快)
Vactor 数组实现 (线程安全的)
set 无序 无索引 不可重复
HashSet 哈希算法
字符串 : 它本身就重写了Hashcode和equals方法,保证键的唯一
自定义对象 : 需要重写hashcode和equals方法
只有hashcode一样才调用equals方法
TreeSet 二叉树算法
比较字符串: 本身重写了hashcode和equals方法
比较自定义对象: 自然排序 比较器排序
泛型
泛型的好处
提高了安全性(将运行期的错误转换到编译期)
省去了强转的麻烦
泛型的注意事项
<>中放的必须是引用数据类型
前后泛型必须一致或者后面的泛型可以省略不写(jdk1.7的新特性)
泛型的由来
早期的object类可以接收任意对象类型,但是在实际使用中会出现类型转换的问题,也就存在这种隐患,所以Java提供了泛型来解决这种问题
通配符 右边是不确定泛型时,左边可以用通配符
? entends E 向上限定,E及其子类
? super E 向下限定,E及其父类
Map集合双列集合根接口
hashmap (线程不安全)
linkedhashmap
treemap
hashtable (线程安全的)
properties
Map集合的遍历方式
通过keySet()获得键,通过键找值
通过entry.set()获取键值对集合
HashMap和Hashtable的区别
Hashtable : jdk1以后 线程安全,效率低不能储存null值和null键
HashMap: jdk1.2以后,线程不安全,效率高.可以储存null值和null键
这俩个类也有共同点,都是双列集合,底层都是哈希算法
键唯一,值可以重复
Collection和Collections的区别
Collection
集合的上级接口,继承他的主要有set和list
Collections
是针对集合类的一个辅助类
39、说出一下常用的类和接口、包。请各举出5个
BufferedReader
BufferedWriter
FileReader
FileWirter
String
Integer
java.util.Date
System
Class
List
HashMap
40、IO流 是用来处理设
备之间的数据传输
字节流
InputStream
FileInputStream
BufferedInputStream 包装类
内置缓冲区数组的长度为8192
OutputStream
FileOutputStream
BufferedOutputStream 包装类
等缓冲区数组写满以后,才把缓冲区的数据一次写到文件中
字节流在读取中文的时候可能读到半个中文,造成乱码,写出的时候必须将中文转换成字节数组getBytes();
字符流
Reader
FileReader
BufferedReader 包装类
readLine()
LineNumberReader
setLineNumber
getLineNumber
Writer
FileWriter
BufferedWriter 包装类
newLine()
转换流
InputStreamReader 字节输入流到字符输入流
OutputStreamWriter 字节输出流到字符输出流
BGK/UTF-8
其他流
SequenceInputStream 序列流(序列流可以把多个字节输入流整合成一个)
ByteArrayOutputStream 字节数组内存输出流
ByteArrayInputStream 字节数组输入流
RandomAccessFile 随机读写访问流 (object)
ObjectOutputStream 序列化流,将对象写入到文件
要实现Serializable接口
反序列化流ObjectInputStream
要向下转型
DateInputStream 数据输入流
DateOutputStream 数据输出流 (保证原样性)
标准流
System.In是InputStream标准流
System.out是PrintStream标准流
递归
递归就是自己调用自己的方法
System.setIn
System.setOut
是第十种拷贝方式
41、什么是java序列化,如何实现java序列化
或者请解释serializable接口的作用
使用序列化保存数据比直接写在文件里更有安全性,而且读取的事后处理也简单
还有一个更重要的用途就是在rmi和ejb使用的时候,作为参数传递的对象必须是Serializable的
42、java机制方面
1、谈谈java的垃圾回收机制
1、垃圾回收机制是java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间
2、垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身
3、真正垃圾回收机制具体在什么时间点开始发生动作这同样是不可预料的,这和抢占式的线程在发生作用时的原理一样
2、描述一下JVM加载class文件的原理和机制
类加载器吧类装进一个java虚拟机的时候,
要进过三个步骤,装载,连接和初始化
1、装载:
查找和导入类或接口的二进制数据
2、链接:
执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的
1、校验:
检查导入类或接口的二进制数据的正确性
2、准备:
给类的静态变量分配并初始化存储空间
3、解析:
将符号引用转成直接引用
3、初始化:
激活类的静态变量,初始化Java代码和静态Java代码块
3、GC是什么?为什么要用GC
GC:
是垃圾回收的意思
为什么使用GC
内存处理是编程人员最容易出现问题的地方,忘记或者错误的内存回收会导致系统的不稳定甚至崩溃,java提供的GC可以自动检测对象是否超过作用域从而达到检测内存的目的
43、iBatis(mybatis)与Hibernate有什么不同?
相同点
屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以访问数据。
jdbc api编程流程固定,还将sql语句与java代码混杂在了一起,经常需要拼凑sql语句,细节很繁琐
ibatis(mybatis)的好处
屏蔽jdbc api的底层访问细节;将sql语句与java代码进行分离;提供了将结果集自动封装称为实体对象和
|对象的集合的功能,queryForList返回对象集合,用queryForObject返回单个对象;提供了自动将实体对象的属性传递给sql语句的参数
hibernate
Hibernate是一个全自动的orm映射工具,它可以自动生成sql语句,ibatis需要我们自己在xml配置文件中
写sql语句,hibernate要比ibatis功能负责和强大很多
44、介绍一下hibernate的二级缓存
按照以下思路来回答:(1)首先说清楚什么是缓存,(2)再说有了hibernate的Session就是一级缓
存,即有了一级缓存,为什么还要有二级缓存,(3)最后再说如何配置Hibernate的二级缓存。
Hibernate的Session就是一种缓存,我们通常将之称为Hibernate的一级缓存,当想使用session从数据
库中查询出一个对象时,Session也是先从自己内部查看是否存在这个对象,存在则直接返回,不存在才去访问数据库,并将查询的结果保存在自己内部
二级缓存是独立于Hibernate的软件部件,属于第三方的产品,多个厂商和组织都提供有缓存产品,例
如,EHCache和OSCache等等
45、JDO是什么
JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对
象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)
46、UML
标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图
47、j2ee中的设计模式?
总共23种,分为三大类:创建型,结构型,行为型
我只记得其中常用的6、7种,分别是:
创建型(工厂、工厂方法、抽象工厂、单例)
结构型(包装、适配器,组合,代理)
行为(观察者,模版,策略)
然后再针对你熟悉的模式谈谈你的理解即可。
Java中的23种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
48、说明工厂模式
工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个
类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作
49、BS与CS的联系与区别
B/S
Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape
Navigator或Internet Explorer,服务器安装Oracle、Sybase、InFORMix或 SQL Server等数据库
C/S
是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系
统,如Oracle、Sybase、InFORMix或 SQL Server。客户端需要安装专用的客户端软件
50、B/S和C/S的区别
1、硬件环境不同
C/S
一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
B/S
建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2、对安全要求不同
C/S
一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
B/S
B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户
3、对程序架构不同
C/S
程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑
B/S
对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势,
4、软件重用不同
C/S
程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好
B/S
对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
5、系统维护不同
C/S
程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
B/S
构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级
6、处理问题不同
C/S
程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
B/S
建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小
7、用户接口不同
C/S
多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
B/S
建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本
8、信息流不同
C/S
程序一般是典型的中央集权的机械式处理, 交互性相对低
B/S
信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心
51、应用服务器和web service的区别
应用服务器
Weblogic、Tomcat、Jboss
web service
Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作
IIS、 Apache
52、对j2ee常用的名词进行解释
1、web容器
给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题
2、EJB容器
Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能
3、JNDI
(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能
4、JMS
(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播
5、JTA
(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可
6、JAF
(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略
7、RMI/IIOP
(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务
53、SpringMvc架构流程
1、用户发送请求至前端控制器DispatchServlet
2、DispatcherServlet收到请求调用HandlerMappling处理器映射器
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
11、DispatcherServlet响应用户
54、问的稀里糊涂的问题
四种会话跟踪技术
page
是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request
是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session
是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application
是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
javaweb部分
1、Tomcat的优化经验
去掉web.xml的监视,把jsp提前编辑成servlet
有富余的物理内存的情况,加大tomcat使用的jvm的内存
1.前端技术
html
展示
form表单
action
表示提交的路径
method
表示提交的方式
post
get
区别:
1.get请求会把说有的参数追加到地址栏 post 不会
2.get请求参数大小有限制 post没有限制
3.post相对于get更安全
子标签
input
10中type
text
文本框
readonly --- 表示只读
password
密码框
readio
单选按钮
checkbox
复选框
checked 默认选中
file
文件上传选
submit
提交按钮
butten
普通按钮
reset
重置按钮
hidden
隐藏域
image
上传图片
select
下拉列表框
子标签
option
selected 默认选中
table
tr 行
td 列
th
超链接标签
target属性
_blank
使用新的窗口打开
_parent
使用父窗口打开
_self
在当前窗口打开 默认值
css
作用
渲染
什么是css
层叠样式表
css和html结合的方式
1.内联样式表
直接在html元素上使用style属性编写css样式
2.内部样式表
在html的