2020年最新Javaweb开发面试宝典

      2020-05-18 01:02      JAVA编程


1.session和cookie的区别?


session是存储在服务器端,cookie是存储在客户端的,所以安全来讲session的安全性要比cookie高,然后我们获取session里的信息是通过存放在会话cookie里的sessionid获取的。又由于session是存放在服务器的内存中,所以session里的东西不断增加会造成服务器的负担,所以会把很重要的信息存储在session中,而把一些次要东西存储在客户端的cookie里,然后cookie确切的说分为两大类分为会话cookie和持久化cookie,会话cookie确切的说是,存放在客户端浏览器的内存中,所以说他的生命周期和浏览器是一致的,浏览器关了会话cookie也就消失了,然而持久化cookie是存放在客户端硬盘中,而持久化cookie的生命周期就是我们在设置cookie时候设置的那个保存时间,然后我们考虑一问题当浏览器关闭时session会不会丢失,从上面叙述分析session的信息是通过会话cookie的sessionid获取的,当浏览器关闭的时候会话cookie消失所以我们的sessionid也就消失了,但是session的信息还存在服务器端,这时我们只是查不到所谓的session但它并不是不存在。那么,session在什么情况下丢失,就是在服务器关闭的时候,或者是session过期(默认时间是30分钟),再或者调用了invalidate()的或者是我们想要session中的某一条数据消失调用session.removeAttribute()方法,然后session在什么时候被创建呢,确切的说是通过调用getsession()来创建,这就是session与cookie的区别.


2、session和cookie联系?


session是通过cookie来工作的session和cookie之间是通过$_COOKIE[PHPSESSID]来联系的,通过$_COOKIE[PHPSESSID]可以知道session的id,从而获取到其他的信息。


在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。


3.servlet的生命周期?


Servlet生命周期可以分成四个阶段:加载和实例化、初始化、服务、销毁。


当客户第一次请求时,首先判断是否存在Servlet对象,若不存在,则由Web容器创建对象,而后调用init()方法对其初始化,此初始化方法在整个Servlet生命周期中只调用一次。


完成Servlet对象的创建和实例化之后,Web容器会调用Servlet对象的service()方法来处理请求。


当Web容器关闭或者Servlet对象要从容器中被删除时,会自动调用destory()方法。


4.什么是webservice?


从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Webservice,只要我们可以通过Webservice标准对这些服务进行查询和访问。


5.jsp和servlet的区别、共同点、各自应用的范围?


JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层。


6.转发(forward)和重定向(redirect)的区别?


1、从地址栏显示来说


forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。


redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的URL。


2、从数据共享来说


forward:转发页面和转发到的页面可以共享request里面的数据。


redirect:不能共享数据。


3、从运用地方来说


forward:一般用于用户登陆的时候,根据角色转发到相应的模块。


redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等


4、从效率来说


forward:高。


redirect:低。


7.request.getAttribute()和request.getParameter()有何区别?


1、request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据。


2、request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。


3、getAttribute是返回对象,getParameter返回字符串


4、getAttribute()一向是和setAttribute()一起使用的,只有先用setAttribute()设置之后,才能够通过getAttribute()来获得值,它们传递的是Object类型的数据。而且必须在同一个request对象中使用才有效。,而getParameter()是接收表单的get或者post提交过来的参数


8.jsp静态包含和动态包含的区别?


1、两者格式不同,静态包含:,而动态包含:。


2、包含时间不同,静态包含是先将几个文件合并,然后再被编译,缺点就是如果含有相同的标签,会出错。动态包含是页面被请求时编译,将结果放在一个页面。


3、生成的文件不同,静态包含会生成一个包含页面名字的servlet和class文件;而动态包含会各自生成对应的servlet和class文件


4、.传递参数不同,动态包含能够传递参数,而静态包含不能



以上就是java培训机构的小编针对“2020年最新Javaweb开发面试宝典”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。