Java Web基础理解(一)

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 JSESSIONID 来联系的,通过其可以知道session 的 id,从而获取到其他的信息,

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

3.servlet的声明周期,简述

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

当客户第一次请求时,首先判断其是否存在servlet对象,若不存在,则由Web容器创建对象,然后调用Init()方法对其进行初始化,此初始化方法在整个Servlet生命周期中只调用一次。完成Servlet对象的创建和实例化之后,Web容器会调用Servlet对象的service()方法来处理请求。

当Web容器关闭或者Servlet对象要从容器中被删除时一个自动调用destory()

4.什么是webservice?

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

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里面的数据

3.从运用地方来说

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

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

4.从效率来说

forward:高

redirect:低

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章