1原生态 Ajax 执行流程?
创建 XMLHttpRequest 对象;
注册回调函数;
设置连接信息;
发送数据,与服务器开始交互;
接受服务器返回数据。
2、转发(forward)和重定向(redirect)的区别?
a、浏览器显示
重定向会改变URL地址,请求转发不会改变URL地址。
b、资源共享
重定向不可以资源共享,请求转发可以。
c、功能
重定向可以用URL绝对路径访问其他Web服务器的资源,而请求转发只能在一个Web应用程序内进行资源转发,即服务器内部的一种操作。
d、效率
重定向效率低,相当于再一次请求;请求转发效率相对较高,跳转仅发生在服务器端。
3、怎么防止表单重复提交?
i.禁掉提交按钮。表单提交后使用 Javascript 使提交按钮 disable。
ii.Post/Redirect/Get 模式。在提交后执行页面重定向,这就是所谓的 Post-Redirect-Get (PRG) 模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。
iii.在 session 中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在 session 中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从 session 中删除它,然后正常处理数据。
4、web.xml 文件中可以配置哪些内容?
web.xml 用于配置 Web 应用的相关信息,如:监听器(listener)、过滤器(filter)、 Servlet、相关参数、会话超时时间、安全验证方式、错误页面等。
5 Tomcat的优化经验
答:去掉对web.xml的监视,把JSP提前编辑成Servlet;有富余物理内存的情况下,加大Tomcat使用的JVM内存。
6 什么是Servlet?
答:可以从两个方面去看Servlet:
a、API:有一个接口servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。
b、组件:服务器端用来处理客户端请求的组件,需要在web.xml文件中进行配置。
7 Servlet的生命周期,并说出Servlet和CGI的区别?
答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
这个生存期由javax.servlet.servlet接口中的init、service、destroy方法表达。
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现
根据请求的不同调用不同的do**()方法。结束服务,web容器调用servlet的destroy()方法。
8 什么情况下调用doGet()和doPost()?
答:默认情况是调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法;为get的时候,调用deGet()方法。
9 request.getParameter()和request.getAttribute()的区别?
答:
a、request.getParameter()获取的类型是String;
request.getAttribute()获取的类型是Object
b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;
request.getAttribute()获取的是对象容器中的数据值/对象
c、request.setAttribute()和request.getAttribute()可以发送、接收对象;
request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)
setAttribute()和getAttribute()的传参原理:
setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时,
应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。
10 JSP有哪些内置对象?作用分别是什么?
答:JSP一共有9个内置对象:
request:负责得到客户端请求的信息,对应类型:javax.servlet.http.HttpServletRequest
response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse
session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession
out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter
application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext
config:表示ServletConfig,对应类型:javax.servlet.servletconfig
exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception
pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext
page:表示当前JSP页面本身。
11 JSP有哪些动作?作用分别是什么?
答:JSP一共有以下6中基本动作
JSP:include (当页面被请求的时候引入一个文件)
JSP:forward (将请求转到另一个页面)
JSP:useBean (获得JavaBean的一个实例)
JSP:setProperty (设置JavaBean的属性)
JSP:getProperty (获得JavaBean的属性)
JSP:plugin (根据浏览器类型为Java插件生成object或者embed两种标记)
12 JSP常用指令有哪些?
答:page、include、taglib
a、page指令:定义页面的一些属性,常用属性:
contentType="text/html;charset=utf-8"; 向浏览器端输出数据的编码
pageEncoding="utf-8"; JSP编译成java文件时所用的编码
session="true" 是否自动创建session
b、include指令:引入一个静态的JSP页面
c、taglib指令:引入一个标签库
13 JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
答:JSP是Servlet的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类Servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是java和HTML可以组合成一个扩展名为.jsp的文件。JSP偏重于视图,Servlet偏重于业务逻辑。
14 JSP的四种范围?
答:a、page是代表一个页面相关的对象和属性。一个页面由一个编译好的java servlet类(可以带有include指令,但不可以带有include动作)表示。这既包括servlet又包括编译成servlet的jsp页面。
b、request是代表与web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个web组件(由于forware指令和include动作的关系)
c、session是代表与用于某个web客户机的一个用户体验相关的对象和属性。一个web回话也可以经常跨域多个客户机请求。
d、application是代表与整个web应用程序相关的对象和属性。这实质上是跨域整个web应用程序,包括多个页面、请求和回话的一个全局作用域。
15 # JSTL是什么?优点有哪些?
答:JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml、sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。优点有:
a、在应用程序服务器之间提供了一致的接口,最大程度的提高了web应用在各应用服务器之间的移植。
b、简化了JSP和web应用程序的开发。
c、以一种统一的方式减少了JSP中scriptlet代码数据,可以达到没有任何scriptlet代码的代码。在我们公司的项目中是不允许任何scriptlet出现在JSP中。
d、允许JSP设计工具与web应用程序开发的进一步集成。
.
16你在项目中用到了XML技术的哪些方面?如何实现的?
答:用到了数据存储、信息配置两方面。
在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接受者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。
在做软件配置时,利用XML可以和方便的进行,软件的各种配置参数都存储在XML文件中。
17EL表达式的功能,为什么要用EL表达式?(Expression Language)
答:
功能:
a、从四个域对象中取出数据数据显示。
b、取出请求参数数据显示。
原因:
在页面中用jsp脚本和jsp表达式来获取数据显示比较麻烦
a、需要判断
b、可能需要强转
18说说自动登录功能的编码实现?
答:a、登录功能是用session实现的,就是向session对象中保存当前用户的对象。
b、自动功能是用cookie实现的,就是登录时将用户的信息保存为持久cookie。
c、下次访问时,读取请求中如果有用户信息的cookie就可以自动登录。
19如何防止表单重复提交?
答:使用session技术:
a、在regist.jsp页面中生成一个为一个随机值,将其保存到session中,同时将其保存为表单的隐藏域的值。
b、在处理注册的请求时,获取session中的值,获取请求参数的值,比较两者是否相同,如果相同说明不是重复提交,请求通过同时删除session中保存的的值,如果不相同则是重复提交,不能通过。
20 实例化servlet有几种方式?
答:有两种方式
a、第一次请求时,实例化servlet对象
b、在web.xml文件中,在servlet标签中添加loadon-startup标签,tomcat启动时就会实例化servlet对象。
21过滤器有哪些作用?
答:a、可以验证客户是否来自可信的网络
b、可以对客户提交的数据进行重写编码
c、可以从系统里获得配置的信息
d、可以过滤掉客户某些不应该出现的词汇
e、验证客户是否登录
f、验证客户的浏览器是否支持当前的应用
g、可以记录系统的日志
22 C/S与B/S的区别?
答:有如下8个方面的不同:
a、硬件环境的不同
C/S:一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。
B/S:建立在广域网之上的,不必是专门的网络硬件环境,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。
b、对安全要求不同
C/S:一般面向相对固定的用户群,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。
B/S:建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用户。
c、对程序架构不同
C/S:程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。
B/S:对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。
d、软件重用不同
C/S:程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好.
B/S:对的多重结构,要求构件相对独立的功能。
e、系统维护不同
C/S:程序由于整体性,必须整体考察,处理出现的问题以及系统升级。
B/S:构件组成,方面构件个别的更换,实现系统的无缝升级。
f、处理问题不同
C/S:程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关。
B/S:建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的。
g、用户接口不同
C/S:多是建立的Window平台上,表现方法有限,对程序员普遍要求较高。
B/S:建立在浏览器上,有更加丰富和生动的表现方式与用户交流;并且大部分难度减低,减低开发成本。
h、信息流不同
C/S:程序一般是典型的中央集权的机械式处理,交互性相对低。
B/S:信息流向可变化,B-B B-C B-G等信息、流向的变化,更像交易中心。
23 J2EE常用的设计模式?说明工厂模式。
答: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 Responsibility(责任链模式)、
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某个类的实例,通常一组类中有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
24 什么是事务?
答:事务时作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,
只有这样才能成为一个事务:
原子性:事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。
一致性:事务在完成时,必须使所有的数据保持一致的状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向链表)都必须是正确的。
隔离性:由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前
的状态,要么是另一并发事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播
一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
持久性:事务完成后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。