2017 Java开发面试题-Java Web篇(1)

时间:2022-02-08 22:03:47

1、Tomcat优化经验

1、去掉对web.xml的监视,把jsp提前编辑成Servlet

有富余物理内存情况下,加大tmocat使用的jvm的内存

2、服务器资源配置
1)CPU的性能,在高并发的情况下,直接影响处理速度
2)大数据处理下,对内存需求大,可以用-Xmx -Xms -XX:MaxPermSize等对内存不同功能块进行划分
经常性内存不足,会导致经常性full GC,影响性能

3)对大数据文件进行磁盘读取,磁盘常常是性能瓶颈,最好用缓存

3、利用缓存和压缩
1)静态页面最好缓存,这样不用每次从磁盘访问
nginx可以做缓存服务器,缓存图片、css、js等资源,减少后端tomcat访问

2)开启gzip压缩能加快网络传输速度,可以将压缩工作交给前端Ngix来完成,减少tmocat工作

4、采用集群

横向扩展,组建tomcat集群能有效提升性能

5、优化tomcat的参数

主要是优化连接配置,关闭客户端dns等


2、Http中Get和Post的区别

http://blog.csdn.net/yipiankongbai/article/details/24025633
Http定义了与服务器交互的不同方法
最基本的是:GET\POST\PUT\DELETE\HEAD
GET\HEAD是安全的方法,一般只是请求服务器的数据
而POST是不安全的,因为可能修改服务器的数据

3、什么是Servlet

sevelet有良好的生命周期
包括:加载、实例化、初始化、处理请求、服务结束

其生命周期由javax.servlet.Servlet接口的init、service、destroy表达


是开发动态web资源的技术
通常将实现了servlet的类叫Servlet
步骤:
1、编写java类,实现servlet接口
2、将该类部署到web服务器

Sevlet运行过程:
它由web服务器调用,当web服务器接收到客户端的访问请求
1、web服务器检查是否已经装载并创建了该Servlet的实例对象
2、若没有,则装载并创建Servlet实例
3、调用实例对象的init()
4、创建一个用与封装HTTP请求消息的HttpServletRequest对象和
相应消息对象HttpServletResponse,再调用service(),将请求和响应传入
5、web应用程序被停止or重启前,Servlet引擎将卸载Servlet,在卸载前调用destroy()

浏览器发送一个HTTP请求,请求被Web容器分配给特定的Servlet处理
Servletz本质就是拥有一系列可以处理HTTP请求的方法的对象,常见方法doGet()/doPost()
web容器包含多个Servlet,特定的HTTP请求由那个Servlet处理由web.xml决定

Sevlet生命周期:
1、web容器加载servlet,开始生命周期
2、调用init()初始化
3、调用service(),该方法会根据请求的不同调用不同的do**()
4、结束服务时,调用destroy()

实现:

extends HttpServlet


4、forward()和redirect()

http://blog.csdn.net/tenor/article/details/4077079
forward():
容器中控制权的转向,是服务器内部重定向
他是直接读取url中的内容显示,所以地址栏地址不会变
其request值不变
更高效、便于隐藏实际链接

redirect():
告诉客户端,重新发送请求链接,地址栏显示转发后的地址
等于客户端会发送两次request
若要请求跳转别的服务器资源,只能用此

Request范围的对象,能被forward访问,不能被redirect访问

5、request.getAttribute() 和 request.getParameter() 区别?

http://blog.csdn.net/zhaohongjuan/article/details/53641160
getParameter:
取得的是通过容器的实现来取得类似Post、get方式传入的数据取得的是通过容器的实现来取得类似Post、get方式传入的数据
数据从web客户端流转到服务端

getAttribute:
在web容器内部流转,仅仅是请求处理阶段
要get,先要set
在进行转发的时候,可以通过设置attribute来实现Request范围的数据共享

6、页面间对象传递的方法

http://www.jb51.net/article/105355.htm
request
session
application
cookie

url(url参数)
form(提交表单)

url/form:只能传字符串
request/session/application/cookie:可传对象

url/request:在请求页面获得数据
session/application/cookie:多页面共享

session/cookie:保存用户相关信息
session:保存到服务器内存
cookie:保存到客户端内存

application:保存所有用户相关的信息,保存在服务器内存

7、JSP vs Sevlet

JSP:
1、是Sevlet的扩展,本质是Sevlet的简易形式
2、编译后是"类servlet"
3、java和html组合成.jsp的文件

jsp侧重视图
Servlet侧重控制逻辑

8、MVC 的各个部分都有那些技术来实现?如何实现?

Model:业务逻辑,通过JavaBean,EJB组件实现
View:表示层,JSP页面产生
Controller:控制层,一般是一个Servlet
以上组件可以交互和重用