java面试基础部分;
1. java的四大基础特征
1*.抽象(一般没有提)
父类为子类提供一些属性和行为,子类根据业务需求实现具体的行为;
抽象类使用abstract
进行修饰,子类需要实现父类的所有抽象方法,否则子类也是抽象类。
2.封装
把对象的数据或者行为(方法)整合中一个独立的整理,并尽可能的隐藏对象的内部实现细节;
我们一般隐藏该方法的形式是使用private
修饰,并通过get
和set
方法对外提供访问接口。
3.继承
子类继承父类的属性和方法,并可以根据自己的需求扩展出新的属性或者功能,提高代码的复用性。
java的继承是通过
extends`关键字实现的,没继承的类叫父类,继承的类称为子类。子类拥有父类的属性和特征,并可以进行扩充。
overide
:当子父类出现相同的方法,会先运行子类的方法
重新的特点:方法名一样,访问修饰符权限不小于父类,返回类型一致,返回参数列表相同
4.多态
不修改程序的代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多种运行状态,具体的实现方式:接口实现,继承父类进行方法重写,同一类的中方法的重载。
封装和继承都是为java语言的多态提供支撑,多态存在的三个必要条件是:继承,重写,父类引用指向子类。
2. Servlet
1. servlet 是什么?
servlet
称为小服务程序或者服务连接器,用java编写的服务器端程序,具有独立的平台协议特性,主要功能是在于交互式浏览和生成数据,生成动态web
内容。
2. servlet的生命周期是什么?
服务器启动时, (web.xml
中配置 load-on-startup=0
,默认为0),或者第一次请求该servlet
时,就会初始化一个Servlet对象,初始的时候会执行init(ServletConfig conf)
,该servlet
对象去处理所有客户端请求,在servlet(ServletRequest req ,ServletResponse res)
方法中执行,最后服务器关闭时,才会毁掉这个servlet
对象,执行destroy
方法。
3. servlet中几个比较重要的对象
servletConfig
对象
获取方式 : getServletConfig()
功能:
-
getServletName()
,获取web.xml中配置的Servlet-name
; -
getServletContext()
,获取ServletContext
对象; -
getInitParameter(String)
,获取在servlet中初始化参数的值; -
getInitParameterNames()
,获取在Servlet中所有初始化参数的名字,也就是key值.
ServletContext
对象
获取途径:getServletContext(); 、getServletConfig().getServletContext()
;
功能:
-
web
项目中共享数据,getAttribute(String name)、setAttribute(String name, Object obj)、removeAttribute(String name)
; - 整个
web
项目初始化参数,getInitPatameter(String name)
,通过指定名称获取初始化getInitParameterNames()
获得枚举类型. - 获取web项目资源
- 获取web项目下指定资源的路径:
getServletContext().getRealPath("/WEB-INF/web.xml")
. - 获取web项目下指定资源的内容,返回的是字节输入流。
InputStream getResourceAsStream(java.lang.String path)
. -
getResourcePaths(java.lang.String path)
指定路径下的所有内容
request对象和response对象我们就比较熟悉了,所以不一一列举了
3. JSP的标签
3.1 El(表达式语言,EL表达式)
用来替代 <%= %>
1) 语法: ${ }
2) 作用:
1. 可以自动从4个Scope(作用域)中获取数据
1. Scope包括:
1. pageContext(当前jsp页面)
2. request
3. session
4. servletContext
2. 从小到大逐个去找,找到就返回,都找不到就什么都不返回
2. 读取访问到的数据
1. 包装类或String:直接访问,如${count}
注:可以通过pageScope,requestScope,sessionScope, applicationScope来指定仅从对应的Scope中找数据
如:${requestScope.count}是仅在request中查找count变量,有则返回,无则什么都不显示
2. 数组: 数组变量名[下标],如:array[0]
3. 集合: 集合变量名[下标],如:list[0]
4. Map: map变量名["key"],如:map["name"]
或 map变量名.key 如:map.name
5. 对象:变量名.属性名,如:user.username
注:实际是调用对应的get方法,如没有get方法会报错
6. 综合应用:如 list[0].username
7. 获取用户请求参数 param.username
3. 将数据显示在页面上
3.2 JSTL JSP标准标签库
1) 使用JSTL的步骤
1. 导入jstl.jar
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2. 在jsp上添加 <%@ taglib prefix="" uri="" %>
声明所使用的标签库
prefix:标签的前缀
uri: 指明具体使用哪个子库
子库:
core 核心库(使用率最高的库)
fmt 格式化相关的库 格式化输出日期,金额...
--- 下面的很少用 ---
functions 为EL提供增强功能 (很少用)
xml 解析XML所使用的库
sql 访问数据库所使用的库
3. 在页面上使用对应的标签
<c:if>
<c:choose>
<c:forEach>
2) c:if 1. 执行判断 2. test=”” 3. var=”” 4. scope=””
3) c:choose
4) c:forEach
实现循环
- begin:循环开始的位置
- end:循环结束的位置
- step:循环的步长
- var:循环变量
- itmes:指定遍历的集合或数组
- varStatus:保存了循环状态的对象 count,当前循环的次数
5)fmt:formatNumber
- value
- pattern:指定输出的样式
6)fmt:formatDate
- value
- pattern:指定输出的样式
3.3 JSP的九大内置对象
- out : JSPWriter
- request : HttpServletRequest
- response : HttpServletResponse
- session : HttpSession
- application : ServletContext
- pageContext : PageContext
- config : ServletConfig
- exception : Throwable(上一个页面出现的异常)(基本不用)
- page : Servlet(this)
- 移动设备HTML5页面布局
- Foundation:高级的响应式前端框架
- [信息安全] 2.密码工具箱(续)
- 脑科学发展的助推器
- BFIThumb:WordPress 中替代TimThumb 进行裁图的选择
- jquery 操作ajax 相关方法
- SQL SERVER 2008 Hierarchyid数据类型
- Html5 学习利器 Web Standards Update for Microsoft Visual Studio 2010 SP1
- MongoDB 客户端 MongoVue
- HttpClient介绍
- 10个使用 Foundation 框架开发的WordPress 主题推荐
- jQuery 效果使用
- 几款更换WordPress 后台UI 的插件推荐
- 入门:构建简单的Web API
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 C Buy Watermelon
- The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 B so easy
- 萌新不看会后悔的C++基本类型总结(二)
- The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 A Who is better?
- 树的重心
- PostgreSQL 13:索引并行vacuum
- 『数据库』震惊,某博主为吸引眼球拿出压箱底SQL总结,如果你没看那就吃亏了!(超级详细的SQL基础,你还不会的话就别学数据库了)
- 萌新不看会后悔的C++基本类型总结(一)
- 2019 ICPC 银川网络赛 D. Take Your Seat (疯子坐飞机问题)
- 2019 ICPC 银川网络赛 H. Fight Against Monsters
- 状态压缩DP(大佬写的很好,转来看)
- 2019 ICPC 银川网络赛 F-Moving On (卡Cache)
- 树形结构--二叉树的遍历算法应用(十九)
- POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)
- 2019 ICPC 南京网络赛 F Greedy Sequence