Java EE面试题解析(下)

21、 什么是Servlet?【掌握】

Servlet是使用Java Servlet应用程序接口(API)及相关类和方法的Java程序。所有的Servlet都必须要实现的核心接口是javax.servlet.servlet。每一个Servlet都必须要直接或者间接实现这个接口,或者继承javax.servlet.GenericServlet或 javax.servlet.HTTPServlet。

Servlet主要用于处理客户端传来的HTTP请求,并返回一个响应。

22、 Request对象的作用?【掌握】

获取请求参数,对应方法:getParameter();

获取当前Web应用的虚拟路径,对应方法: getContextPath();

获取当前Web应用的上下文对象ServletContext,对应方法:getServletContext();

请求转发,对应方法:getRequestDispatcher(路径).forward(request,response);

储存数据,request还是一个域对象。

23、 如何防止表单重复提交?【重点】

针对于重复提交的整体解决方案:

用redirect(重定向)来解决重复提交的问题;

点击一次按钮之后,按钮失效;

Loading原理:在点击提交时,生成Loading样式,在提交完成之后隐藏该样式;

自定义重复提交过滤器。

24、 JSP的四大作用域范围?【掌握】

Jsp中的四种作用域包括page、request、session和application,具体来说:

page代表与一个页面相关的对象和属性,对应的对象是:pageContext。

request代表Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域,对应的对象是:request。

session代表某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中,对应的对象是:session。

application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域,对应的对象是:servletContext。

25、 JSP中时间格式化?【掌握】

第一步,在JSP页面添加标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

第二步,进行格式化:<fmt:formatDate pattern="yyyy-MM-dd" value="${t.time }"/>

26、 Ajax与Json的优点?【重点】

Ajax是异步JavaScript和xml,用于在web页面中实现异步数据交互。

优点:可以在页面不重复加载的情况下加载局部内容,降低数据传输量。

Json是一种轻量级的数据交互格式。

优点:轻量级,易于阅读和编写,便于解析。

27、 Ajax同步和异步的区别?【重点】

同步:提交请求->等待服务器处理->处理完毕返回,这个期间客户端浏览器不能干任何事。

异步:请求通过事件触发->服务器处理(这时浏览器仍然可以作其他事情)->处理完毕。

28、 AJAX的工作原理?以及实现步骤?【掌握】

工作原理:

客户端通过Javascript提交Ajax请求。

Ajax引擎(XMLHttpRequest对象,包含在浏览器中)服务器发送Http请求。

服务器端处理请求后返回相应(XML/JSON/HTML)格式数据。

Ajax引擎解析数据后,通过DOM+CSS修改页面元素、改变样式,实现局部刷新。

实现步骤:

创建XMLHttpRequest对象。

创建请求,并发送请求。

处理请求回调。

示例代码:

function doAjax() {

var provinceName=document.getElementById("provinceName").value;

var xhr;

try {

// Firefox, Opera 8.0+, Safari

xhr = new XMLHttpRequest();

} catch (e) {

try {

// Internet Explorer

xhr = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

xhr = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e) {}

}

}

//使用post方式异步请求

xhr.open("post", "Test/IsExistsByProvinceName?t="+new Date().getTime(), true);

//设置回调函数

xhr.onreadystatechange = function(){

//如果XMLHttpRequest对象读取响应结束

if (xhr.readyState == 4&&xhr.status == 200) {

if(xhr.responseText=="true")

document.getElementById("provinceName_info").innerHTML="该省份已经存在";

else

document.getElementById("provinceName_info").innerHTML="";

}

};

//如果以post方式请求,必须要添加

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

//发送请求

xhr.send("provinceName="+provinceName);

}

29、 Web开发中,http协议工作流程是什么? 【重点】

创建Http连接。

初始化方法请求。

设置HTTP请求头。

发送请求。

读取请求。

调用方法。

初始化方法响应。

设置HTTP响应头。

发送响应。

关闭连接。

30、 BS与CS的联系与区别?【了解】

硬件环境不同:

C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。

B/S建立在广域网之上的,不必是专门的网络硬件环境,信息自己管理。比 C/S 更强的适应范围,一般只要有操作系统和浏览器就行。

安全要求不同:

C/S一般面向相对固定的用户群,对信息安全的控制能力很强,一般高度机密的信息系统采用C/S结构适宜。

B/S建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用户。

程序架构不同:

C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。

B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。比C/S有更高的要求,B/S结构的程序架构是发展的趋势。

软件重用不同:

C/S程序的重用性不如B/S的重用性好。

B/S程序构建相对独立的功能,能够相对较好的重用。

系统维护不同:

C/S程序必须整体考察,处理出现的问题以及系统升级都比较难,有可能是再做一个全新的系统;

B/S程序方便个别组件的更换,实现系统的无缝升级、系统维护开销减比较小,客户端无需升级,只针对服务器端维护即可。

处理问题不同:

C/S程序主要处理用户面相对固定、并且在相同区域、安全要求高、与操作系统相关的情况。

B/S建立在广域网上、面向不同的用户群、分散地域,与操作系统平台关系最小。

用户接口不同:

C/S多是建立的Window平台上,开发难度比较大,对程序员普遍要求较高;

B/S建立在浏览器上,开发难度相对较低,开发成本相对较低。

信息流不同:

C/S程序一般是典型的中央集权的机械式处理,交互性相对低;

B/S程序信息流向可变化,更像交易中心。

相关推荐
数据小爬虫@4 分钟前
如何利用java爬虫获得淘宝商品评论
java·开发语言·爬虫
喜欢猪猪5 分钟前
面试题---深入源码理解MQ长轮询优化机制
java
草莓base35 分钟前
【手写一个spring】spring源码的简单实现--bean对象的创建
java·spring·rpc
drebander1 小时前
使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
java·python·list
乌啼霜满天2491 小时前
Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系
java·spring boot·spring·mvc
tangliang_cn1 小时前
java入门 自定义springboot starter
java·开发语言·spring boot
程序猿阿伟1 小时前
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
java·开发语言·前端
Grey_fantasy1 小时前
高级编程之结构化代码
java·spring boot·spring cloud
弗锐土豆1 小时前
工业生产安全-安全帽第二篇-用java语言看看opencv实现的目标检测使用过程
java·opencv·安全·检测·面部
Elaine2023911 小时前
零碎04 MybatisPlus自定义模版生成代码
java·spring·mybatis