Servlet&jSP

1 Servlet和JSP的区别?

1 Servlet是一个运行在服务器上的Java类,依靠服务器支持向浏览器传输数据
2 JSP本质上是Servlet的一种简易形式,可以简化页面的生成
3 Servlet的应用逻辑在Java文件中,并且完全从HTML分离而来,JSP则是Java和HTML组合成一个扩展名为.jsp文件
4 JSP侧重于视图,而Servlet侧重于控制逻辑,在MVC架构模式中,JSP适合充当视图View,Servlet适合充当控制器Controller

2 简述Servlet生命周期

1 init() 初始化
2 service() 处理客户端请求
3 destroy() 销毁方法

3 如何现实servlet的单线程模式?

<%@ page isThreadSafe="false" %>

4 请求转发(forward)和重定向(redirect)的区别?

1:效率上
转发(forward) > 重定向(redirect)
2:显示上
重定向(redirect):显示新的URL
转发(forward):地址栏不变
3:数据上
转发(forward):可以共享request里面的数据
重定向(redirect):不能
4:请求次数
重定向(redirect)是两次
转发(forward)是一次

5 get请求和post请求的区别?

GET:
1:从服务器上获取数据,一般不能使用在写操作接口
2:由URL所限制,GET方式传输的数据大小有所限制,传送的数据量不超过2KB
3:请求的数据会附加在URL之后,以?分隔URL和传输数据,多个参数用&连接
4:安全性差
POST:
1:向服务器提交数据,一般处理写业务
2:POST方式传送的数据量比较大,一般被默认为没有限制
3:安全性高
4:请的求的数据内容放置在HTML HEADER中

6 JSP的9个内置对象和4个作用域?

(1)9 个内置对象:
1 request:封装客户端的请求,其中包含来自 GET 或 POST 请求的参数;
2 application:封装服务器运行环境的对象;
3 response:封装服务器对客户端的响应;
4 session:封装用户会话的对象;
5 page:JSP 页面本身(相当于 Java 程序中的 this);
6 config:Web 应用的配置对象;
7 exception:封装页面抛出异常的对象;
8 pageContext:通过该对象可以获取其他对象;
9 out:用来传送回应的输出;
(2)4 个域对象
1 page(当前页面)
2 request(一次请求)
3 session( 一次会话)
4 application (整个会话)

7 会话跟踪技术有哪些?

1 由于 HTTP 协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单的说就是 为用户进行登记,为用户分配唯一的 ID,下一次用户在请求中包含此 ID,服务器根据此判断到底是哪一个用户。
2 URL 重写:在 URL 中添加会话信息作为请求的参数,或者将唯一的会话 ID 添加到 URL 结尾,以表示一个 会话;
3 设置表单隐藏域:将和会话跟踪相关的字段添加到隐藏域中,这些信息不会在浏览器显示,但是提交表 单时会提交给服务器;
4 cookie:cookie 有两种,一种是基于窗口的,浏览器关闭后,cookie 就没有了;另一种是将信息存储在一
个临时文件中,并设置其有效路径和最大存活时间。当用户通过浏览器和服务器建立一次会话后,会话ID就会随相应信息储存在基于窗口的 cookie 中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个会话ID
又会提交给服务器,让服务器识别用户身份。在使用 cookie 时要注意几点:首先不要在 cookie 中存放敏 感信息;
其次 cookie 存储的数据量有限(4k),不能将过多的内容存储 cookie 中;再者浏览器通常只允许一个站点最多存
放 20 个 cookie。当然,和用户会话相关的其他信息(除了会话 ID)也可以存在 cookie 方便进行会话 跟踪;5 HttpSession:在所有会话跟踪技术中,HttpSession 对象是最强大也是功能最多的。当一个用户第一次访 问某个
网站时会自动创建 HttpSession,每个用户可以访问他自己的 HttpSession。可以通过 HttpServletRequest对象的
getSession 方法获得 HttpSession,通过 HttpSession 的 setAttribute 方法可以将一个值放在 HttpSession
中,通 过调用 HttpSession 对象的 getAttribute 方法,同时传入属性名就可以获取保存在 HttpSession 中的对
象。与上面三 种方式不同的是,HttpSession 放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的
Servlet 容器 可以在内存将满时将 HttpSession 中的对象移到其他存储设备中,但是这样势必影响性能。添加到
HttpSession 中 的值可以是任意 Java 对象,这个对象最好实现了 Serializable 接口,这样 Servlet 容器在必
要的时候可以将其序列 化到文件中,否则在序列化时就会出现异常。

8 什么是Web Service?

1 WebService 就是一个应用程序,它向外界暴露出一个能够通过 Web 进行调用的 API。
2 它是基于 HTTP 协议传输数据,这使得运行在不同机上的不同应用程序,无须借助附加的、专门的第三方 软件或硬件,就可以相互交换数据或集成。

9 request的主要方法?

setAttribute(String name,Object):设置名字为name的request的参数值
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关
Session getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性

10 用户在浏览器中输入URL之后,发什么了什么?写出请求和响应的流程

1:域名解析
2:TCP三次握手
3:浏览器向服务器发送http请求
4:浏览器发送请求头信息
5:服务器处理请求
6:服务器做出应答
7:服务器发送应答头信息
8:服务器发送数据
9:TCP连接关闭

11 Servlet中如何获取用户提交的查询参数或者表单数据

1 HttpServletRequest 的 getParameter()方法。
2 HttpServletRequest 的 getParameterValues()方法。
3 HttpServletRequest 的 getParameterMap()方法。

12 响应结果状态码有哪些,并给出中文含义?

1**:信息性状态码
2**:成功状态码200:请求正常成功204:指示请求成功但没有返回新信息206:指示服务器已完成对资源的部分 GET 请求
3**:重定向状态码301:永久性重定向302:临时性重定向304:服务器端允许请求访问资源,但未满足条件
4**:客户端错误状态码400:请求报文中存在语法错误401:发送的请求需要有通过HTTP认证的认证信息403:对请求资源的访问被服务器拒绝了404:服务器上无法找到请求的资源
5**:服务器错误状态码500:服务器端在执行请求时发生了错误503:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

13 XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式?

(1)XML 文档有两种约束方式:DTD 约束和 Schema 约束
(2)区别:1 DTD 不符合 XML 的语法结构,schema 符合 XML 的语法结构; 2 DTD 的约束扩展性比较差,XML 文档只能引入一个 DTD 的文件。schema 可以引入多个文件;3 DTD 不支持名称空间(理解包结构),schema 支持名称空间;4 DTD 支持数据比较少,schema 支持更多的数据类型;
(3)解析方式主要有三种: 1 DOM 解析: (a)加载整个 xml 的文档到内存中,形成树状结构,生成对象;(b)容易产生内存溢出; (c)可以做增删改2 SAX 解析 (a)边读边解析; (b)不可以做增删改3 DOM4J 解析(hibernate 底层采用)(a)可让 SAX 解析也产生树状结构。 (b)主要 api 开发步骤: 1)SAXReader.read(xxx.xml)代表解析 xml 的文档,返回对象是 Document; 2)Document.getRootElement(),返回的是文档的根节点,是 Element 对象; 3)Element: .element(...)-- 获得指定名称第一个子元素。可以不指定名称; .elements(...)-- 获得指定名称的所有子元素。可以不指定名称; .getText()-- 获得当前元素的文本内容;.elementText(...)-- 获得指定名称子元素的文本值 .addElement()-- 添加子节点 .setText()-- 设置子标签内容 4)XMLWriter.write("..")-- 写出5)XMLWriter.close()-- 关闭输出流

Spring

1 简述你对Spring的理解

1 Spring是一款开源轻量级的业务层框架,分模块,一站式,可以整合其他主流框架
2 Spring实质是一个实现了工程模式的工厂类,在其配置文件中通过<bean>来创建实例
3 核心IOC

2 什么是IOC?

1 IOC 控制反转,将原来用new创建对象的方式交给Spring容器创建!解耦的作用
2 IOC 依赖注入的方式三种: 接口注入、构造器注入、Setter注入

3 什么是AOP?

面向切面编程,是指在不改变代码逻辑的情况下,实现功能的增加!
用于处理系统中分布于各个模块的横切关注点,例如事务管理,日志,缓存等等;

4 什么是ORM?

1 对象关系映射(Object-Relation Mapping,简称 ORM)是一种为解决程序的面向对象模型与数据库的关系 模型互不匹配问题的技术;
2 ORM 是通过使用描述对象和数据库之间映射的元数据(在 Java 中可以用 XML 或者注解),将程序中的对 象自动持久化到关系数据库中,或者将关系数据库表中的行转换成 Java 对象,其本质就是将数据从一种形式转换到另一种形式。

5 Spring 中的 BeanFactory 和 ApplicationContext 有什么联系?

1 Spring 通过配置文件描述 Bean 以及 Bean 之间的依赖关系,利用 Java 的反射机制实现 Bean 的实例化,并 建立 Bean 之间的依赖关系,在此基础上,Spring 的 IoC 容器还提供了 Bean 实例缓存、生命周期管理、Bean 实例 代理、事件发布等高级服务。
2 BeanFactory 是 Spring 框架最核心的接口,它提供了 IoC 容器的配置机制。
3 ApplicationContext 建立在 BeanFactory 之上,提供了更多面向应用功能,包括国际化和框架事务体系的支持。
4 通常将 BeanFacory 称为 IoC 容器,而 ApplicationContext 称之为应用上下文,前者更倾向于 Spring 本身, 后者更倾向于开发者,因此被使用得更多。

6 Spring 中 Bean 的作用域有哪些?

1 Spring1x  Singleton表示Bean以单例模式存在和protoType表示多例
2 Spring2x  session (每次 HTTP 请求都会创 建一个新的 Bean)
request(同一个 HttpSession 共享同一个 Bean,不同的 HttpSession 使用不同的 Bean)
globalSession (同一个全局 Session 共享一个 Bean)

7 SpringMVC运行原理是什么?

1.客户端请求提交到DispatcherServlet
2.由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3.DispatcherServlet将请求提交到Controller
4.Controller调用业务逻辑处理后,返回ModelAndView
5.DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6.视图负责将结果显示到客户端
DispatcherServlet是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分

Hibernate&&Mybatis

1 谈谈您对Hibernate的理解

1 概述:它是一个持久层的 ORM(对象关系型映射)框架,使用 Hibernate 框架,不用写 JDBC 代码,仅仅 是调用一个 save 方法,就可以将对象保存到关系数据库中;仅仅是调用一个 get 方法,就可以从数据库中加载出 一个对象。
2 使用 Hibernate 的基本流程:配置 Configuration 对象、产生 SessionFactory、创建 session 对象,开启事务, 完成 CRUD 操作,提交事务,关闭 session。
3 配置文件:使用 Hibernate 时,先要配置 hibernate.cfg.xml 文件。其中配置数据连接信息和方言等,还要 为每个实体配置相应的 hbm.xml 文件,然后在 hibernate.cfg.xml 文件中引入;
4 关联关系映射
(a) 一对多:
(Ⅰ)一方:需要加入一个包含多方的 set 集合,注意必须要 new。
(Ⅱ)多方:添加一方的 bean 对象,注意不用 new。
(Ⅲ)注意:只配置一方即可正常维护运行。一般一方会放弃外键维护。 (b)多对多:多对多保存中,有一方必须放弃维护中间表"inverse=ture"
5 级联关系:cascade 的 6 种取值
none —— 不使用级联
save-update —— 保存或修改
delete —— 删除
delete-orphan —— 孤儿删除(只有一对多才有!)
all —— 除了孤儿删除,其他的所有
all-delte-orphan —— 包含孤儿删除所有的。
6 延迟加载:
底层:动态代理技术
第一次查询时 ====> 至查询 ID 值,生成代理对象(只含 ID)=====> 继续操作,如打印某属性 ==发送 sql 语句==> 返回查询值
类级别的延迟加载:查询的是某一个对象 session.get()不延迟加载 session.load()延迟加载
两者区别 关联级别的延迟加载 fetch="select" lazy="true" 延迟加载(默认) fetch="select" lazy="false" 不延迟加载 fetch="select" lazy="extra" 极其延迟加载
7 Hibernate 三种检索方式:QBC(Query By Criteria) HQL(Hibernate Query Language) SQL(基本不用)
8 缓存:
缓存概念 缓存是内存中开辟的一块空间,用来保存数据 实质是:一些集合设计
一级缓存:Session 自带的,不能卸载。一定存在的,与 Session 生命周期一样长,自动开启,默认session独享
二级缓存:默认没有开启,只提供了相关的策略,需第三方插件,常用 EHCache。
快照机制(SnapShot) 持久态对象,在获取的时候,会保存两份:一份在缓存区,一份在快照区; 在事务提交之前,会自动对比缓存区和快照区的数据, 如果不一致,会自动修改缓存和快照区数据;

2 Mybatis和Hibernate的区别?

1:hibernate的扩展性和移植性比mybatis强
2:hibernate不需要写sql语句,会自动生成,而mybatis则需要写sql语句
3:hibernate支持事务、一级缓存、二级缓存、查询缓存等
4:hibernate自己提供分页功能,mybatis需要配置分页插件

3 事务的特性?

1 原子性(Atomicity) 指事务是一个不可分割的工作单位,事务中的操作要么全都发生,要么全不发生;
2 一致性(Consistency) 事务前后数据的完成性必须保持一致;(例:转账前后的,两个人的金额总数是不变的)
3 隔离性(Isolation) 指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务干扰,多个并发事务之间要项目隔 离;
4 持久性(Durability) 指一个事务一旦被提交,它对数据库中数据的改变是永久性的,接下来即使数据库发生故障,也不应该对 其有任何影响;

4 事务并发访问的问题?

1 脏读:一个事务读到了另一个事务未提交的数据;
2 不可重复读:在同一个事务中,多次查询的结果不一致(由 update 引起的)
3 虚读/幻读:在同一个事务中,多次查询的结果不一致(由 insert 引起的)

5 隔离的级别?

1 读未提交read uncommitted;一个事务读到另一个事务没有提交的数据;
2 读已提交 —— oracle 默认 read committed;一个事务读到另一个事务已提交的数据; (解决脏读)
3 可重复读  --- mysql 默认 repeatable read;在一个事务中读到的数据始终保持一致,无论另一个事务是否提交 (解决脏读和不可重复读)
4 串行化serializable 串行化,同时只能执行一个事务,相当于单线程事务; (都解决)

6 谈一谈你对Mybatis的理解

MyBatis 本是 apache 的一个开源项目 iBatis,2010 年这个项目由 apachesoftwarefoundation 迁移到了
google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。
MyBatis 是一个优秀的持久层框架,它对使用 jdbc 操作数据库的过程进行封装,使开发者只需要关注 SQL 本 身,
而不需要花费精力去处理例如注册驱动、创建 connection、创建 statement、手动设置参数、结果集检索等 jdbc
繁杂的过程代码。
Mybatis 通过 xml 或注解的方式将要执行的各种 statement(statement、preparedStatemnt、
CallableStatement) 配置起来,并通过 java 对象和 statement 中的 sql 进行映射生成最终执行的 sql 语句,
最后由 mybatis 框架执行 sql 并将结果映射成 java 对象并返回。1 mybatis 配置文件(1)SqlMapConfig.xml,此文件作为 mybatis 的全局配置文件,配置了 mybatis 的运行环境等信息。 (2)Mapper.xml,此文件作为 mybatis 的 sql 映射文件,文件中配置了操作数据库的 sql 语句。此文件需要 在 SqlMapConfig.xml 中加载。
2 通过 mybatis 环境等配置信息构造 SqlSessionFactory,即会话工厂。 3 通过会话工厂创建 sqlSession 即会话,程序员通过 sqlsession 会话接口对数据库进行增删改查操作4 mybatis 底层自定义了 Executor 执行器接口来具体操作数据库,Executor 接口有两个实现,一个是基本执
行器(默认)、一个是缓存执行器,sqlsession 底层是通过 executor 接口操作数据库的。5 MappedStatement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。
mapper.xml 文件中一个 select\insert\update\delete 标签对应一个 MappedStatement 对象, select\insert\update\delete 标签的 id 即 是 Mappedstatement 的 id。(1)MappedStatement 对 sql 执行输入参数进行定义,包括 HashMap、基本类型、 pojo, Executor 通过Mapped Statement 在执行 sql 前将输入的 java 对象映射至 sql 中,输入参数映射就是 jdbc 编程中对 preparedStatement 设置 参数。 (2)MappedStatement 对 sql 执行输出结果进行定义,包括 HashMap、基本类型、 pojo, Executor 通过 Mapped Statement 在执行 sql 后将输出结果映射至 java 对象中,输出结果映射过程相当于 jdbc 编程中对结果的解析处理 过程。

那年我整理的JavaEE面试题相关推荐

  1. 那年我整理的SE面试题

    JavaSE基础知识 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有个public的类,并且public的类名必须与文件名保持 ...

  2. 牛X网整理的JAVA面试题

    牛X网整理的JAVA面试题(入职,转岗): https://download.csdn.net/download/liangmaoxuan/12302507 总结不好多多担待,文章只单纯个人总结,如不 ...

  3. 【转载,整理】Linux模拟试题及答案(全)+经典Linux系统工程师面试题(附答案)

    转自:http://www.ha97.com/871.html   http://www.ha97.com/870.html 2010-6 11 经典Linux系统工程师面试题(附答案) 发表于: L ...

  4. 高校计算机实验室管理员面试,(最新整理)实验室管理员面试题

    <(最新整理)实验室管理员面试题>由会员分享,可在线阅读,更多相关<(最新整理)实验室管理员面试题(4页珍藏版)>请在人人文库网上搜索. 1.完整)实验室管理员面试题(完整)实 ...

  5. 2021年JAVA 精心整理的常见面试题-附详细答案【持续更新~~】

    先罗列本篇文章包含的Java 常见面试的主题: 一.Java基础面试题 二.Java 集合框架 三.Linux常用指令 四.MySQL基础面试 多线程与多进程面试 常见设计模式 JVM 底层 关注我们 ...

  6. 张孝祥正在整理Java就业面试题大全20100602版本(一)

    自从我们开设3G的课程后,许多学员都找到了月薪在7k或更高的3g开发工作,这是他们的能力还完全不能与之相称的一份好工作,这些学员眼看到嘴的肥肉又舍不得放弃,最后就害苦我们这些老师了,学员纷纷把他们面试 ...

  7. 张孝祥整理Java就业面试题大全

    提示:本大全每半月更新一次,请持续保持关注!谢谢! 索取网址:www.itcast.cn 从享受生活的角度上来说:"程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员, ...

  8. 阿里内部全新整理,Java面试题库+全栈笔记限时开源

    说到面试跳槽,大家从当初入行开始就一直摆脱不开它(咱们就是通过不断跳槽才能更快地提升自己).在我们的技术生涯中会有很多大大小小的面试,对我们程序员来说每一次面试都是一次提升的机会,不管是简历修改,还是 ...

  9. 熬夜整理小米Java面试题,已拿offer

    前言: 这篇文章主要介绍了26道Spring经典面试题总结(附带答案)的相关资料,小编在网上看到的觉得挺不错的,现在分享给大家,希望对你们有所帮助. 另外本人整理收藏了多家公司面试知识点整理 ,以及各 ...

最新文章

  1. eShopOnContainers 知多少[8]:Ordering microservice
  2. java 点与线的距离_计算地图上点与线段距离
  3. 高等学校计算机规划教程,高等学校计算机应用规划教材:计算机组成原理简明教程...
  4. ES6 异步编程之二:Promise
  5. 什么牌子的平板电脑好_台式电脑哪个牌子好
  6. 转hdmi_苹果本轻松接大屏,毕亚兹雷电接口转HDMI/VGA转换器评测
  7. 谷歌10月15日发布 Pixel 4;高通以31亿美元收购与TDK公司权益;甲骨文、VMware就云技术及支持达成协议……...
  8. 【ES11(2020)】新增数据类型 BigInt
  9. 计算机知识培训感言,计算机培训的心得体会
  10. android自定义进度条_Android中的自定义进度栏
  11. LeetCode 103. Binary Tree Zigzag Level Order Traversal
  12. 计算机新建里没有word,电脑鼠标右键没有新建Word选项怎么办?
  13. select2.js插件支持拼音搜索(最新版-4.0.6)
  14. 编译安装Vue-devtools
  15. 消除macbook桌面快捷键图标上的箭头
  16. 老男孩教育老师的博客
  17. adcclk最大_关于STM32 在进行ADC采样时,ADCCLK时钟频率的确定
  18. sql注入--宽字节注入
  19. 搭建Genero BDL环境-安装篇
  20. html table tb左对齐,标签之美五——网页表格的设计

热门文章

  1. sync/atomic 库使用小结
  2. 查看可执行文件的运行架构_在运行查询之前如何查看结果集的架构
  3. [转]impala操作hive数据实例
  4. Python3基础12(collections、struct、itertools、chardet等的使用)
  5. 157 判断字符串是否没有重复字符
  6. SQL索引碎片整理脚本
  7. 安卓中资源ID的问题
  8. UVALive3905 流星
  9. 你不一定知道的vb6(2)
  10. 使用VS进行工作流开发系列博客5-Developing Workflows in VS: Part 4 - Design and Bind Your Forms...