javaWeb

JavaWeb

一.什么是servlet,主要作用有哪些?

servlet是运行在服务器端的小程序

Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。

接受客户端的请求,给客户端做出响应

二.什么是jsp,主要作用有哪些?

Java Server Pages: java服务器端页面

JSP本质上就是一个Servlet

三.Jsp编译原理?

在这里插入图片描述

四.Servlet线程安全吗?怎么解决?

不安全,

由于 Servlet 采用的是单例,也就是整个应用中只有一个实例对象。
如果多个线程访问Servlet中的成员变量并且进行写操作就可能引发线程安全

解决

加锁

五.Jsp内置对象有哪些?作用分别是什么?

jsp内置对象是指:

在jsp页面中不需要创建,直接使用的对象

主要有:

在这里插入图片描述

六.说一下JSP中的4种域对象?

pageContext 域对象:

代表页面返回从把变量放到pageContext开始,到jsp代码执行结束。

request 域对象 :

代表一次请求的范围,一般用于请求转发的多个资源中共享数据

session域对象:

一次会话范围

application域对象:

整个web应用

七.Jsp中如何进行循环遍历?

推荐使用jstl中foreach:相当于java代码的for语句

八.session和cookie有什么区别?

作用

他们都是在一次会话的范围内的多次请求间,共享数据

区别

session存储数据在服务器端,Cookie在客户端
session没有数据大小限制,Cookie有
session数据安全,Cookie相对于不安全

九.说一下Cookie 和 session的工作原理?

1.Cookie

1.当用户第一次访问服务器时,服务端创建了一个Cookie对象,存储了用户输入的信息
2.在服务端响应数据时,便会把这个cookie对象响应应给浏览器,在响应头中setCookie
3.当用户再次访问服务器时,会把内存中存储的cookie信息请求到服务端,此时在请求头中传递
4.服务器收到request中的cookie信息,便可以解析出用户的信息

2.Session(Session的实现是依赖于Cookie的)

前提:session有别于cokkie,那自然也不能像cookie一样直接传递
1.session以tomcat中的map集合作为核心来传递
在这个map集合中,存储了session对象的地址和session对象地址的序号:也就是sessionid
(sessionid,sesion地址)
通过这个sessionid来传递,不会影响到session对象
2.session以cookie作为基础
那么在cookie中,我们传递的是就是键值对;
键就定为:JSESSIONID
值存储上面的sessionid
3.通过传递这个cookie,实现sesion的实现

十.如果客户端禁止cookie后session还能用吗?为什么?

可以,虽然

服务器存储的session是通过sessionid存储在cookie中,来存储在客户端的。
所以,如果浏览器禁用了cookie,客户端请求没办法传递sessionid,服务器无法识别用户身份,会导致session失效。

但是:

把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 jsessionid 参数,然后就可以找到tomcat中的map集合中的session地址。

十一.说一下重定向和转发的区别?

请求转发:一种在服务器内部的资源跳转方式(forward)

浏览器地址栏路径不发生变化
只能转发到当前服务器内部资源中。
转发是一次请求

重定向:资源跳转的方式(redirect)

地址栏发生变化
重定向可以访问其他站点(服务器)的资源
重定向是多次请求。不能使用request对象来共享数据

十二.说一下session和cookie的生命周期?

cookie销毁:

默认情况下,当浏览器关闭后,Cookie数据被销毁

持久化存储

		setMaxAge(int seconds)
			1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
			2. 负数:默认值
			3. 零:删除cookie信息

session销毁:

  1. 服务器关闭
    2.session对象调用invalidate() 。
  2. session默认失效时间 30分钟。

十三.如何解决浏览器请求服务器乱码及服务器响应浏览器乱码?

乱码是由于数据的编码和解码字符集方式不一致

1.请求乱码

①Post请求乱码

在获取参数前,设置request的编码request.setCharacterEncoding(“utf-8”);

②GET

get方式:tomcat 8 已经将get方式乱码问题解决了

2.响应乱码

①字节输出流响应乱码

一.设置字符的编码方式为UTF-8
二.response.getOutputStream().write(“你好”.getBytes(“UTF-8”))
三.设置响应头Context-Type,让浏览器以UTF-8方式解码
四.response.setContentType(“text/html;charset=utf-8”);

②字符输出流响应乱码

一.设置该流的默认编码

esponse.setCharacterEncoding(“utf-8”);

二.设置响应头Context-Type,让浏览器以UTF-8方式解码

response.setContentType(“text/html;charset=utf-8”);

十四.Filter的生命周期?

1.服务器启动时,被web服务器创建

2.执行init方法

3.每次拦截,doFilter方法都会被调用一次;(责任链模式)

4.服务器关闭时,Filter被销毁

5.执行destroy方法

十五.说一下Servlet的生命周期?

1.第一次被访问时,Servlet被web服务器创建,可以配置Servlet的创建时机为正数在服务器启动时创建。(也就是说Servlet默认懒加载)

2.执行init方法

3.每次访问Servlet时,servlet方法都会被调用一次

4.服务器关闭时,Servlet被销毁

5.执行destroy方法

十六.在后端如何获取到cookie中的数据?

Cookie[]:request.getCookies()

十七.Http协同流程

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值