面试题总结03

今天,总结了一些面试题:
1.session和cookie的区别
1、session是存储在服务器端,cookie是存储在客户端的,所以从安全来讲session的安全性要比cookie高。
2、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session是存放在服务器的内存中,所以session里的东西不断增加会造成服务器的负担,所以一般把很重要的信息才存储在session中,而把一些次要东西存储在客户端的cookie里(例如将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie)
3.1、cookie分为两大类分为会话cookie和持久化cookie,会话cookie,存放在客户端浏览器的内存中,他的生命周期和浏览器是一致的,浏览器关了会话cookie也就消失了,而持久化cookie是存放在客户端硬盘中,而持久化cookie的生命周期就是我们在设置cookie时候设置的那个保存时间
3.2、当浏览器关闭时session会不会丢失,session的信息是通过会话cookie的sessionid获取的,当浏览器关闭的时候会话cookie消失,所以我们的sessionid也就消失了,但是session的信息还存在服务器端,这时我们只是查不到所谓的session但它并不是不存在。
3.3、session在什么情况下丢失,就是在服务器关闭的时候(也可以说说session的活化和钝化),或者是session过期(默认时间是30分钟),再或者调用了invalidate()的或者是我们想要session中的某一条数据消失调用session.removeAttribute()方法
3.4、session在什么时候被创建呢,确切的说是通过调用getsession()来创建。访问HTML页面是不会创建session,但是访问index.JSP时会创建session(JSP实际上是一个Servlet,Servlet中有getSession方法)。
2.如何防止表单重复提交
针对于重复提交的整体解决方案:
1.用redirect(重定向)来解决重复提交的问题
2.点击一次之后,按钮失效
3.通过loading(Loading原理是在点击提交时,生成Loading样式,在提交完成之后隐藏该样式)
4.自定义重复提交过滤器
3.Spring运行原理
1、内部最核心的就是IOC了,之前是new对象,现在可以直接从容器中获取, 动态注入,这其实就是利用java里的反射。反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,根据xml Spring的配置文件来动态的创建对象,和调用对象里的方法的。
2、Spring另一个核心就是AOP面向切面编程,可以为某一类对象 进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的。(日志、事务等)
3、Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明 管理的(Spring根据这些配置 内部通过反射去动态的组装对象)要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
4、Spring里用的最经典设计模式:模板方法模式。核心容器组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
4.SpringMVC与Struts2区别
①.Spring MVC的入口是Servlet,而Struts2是Filter
②.Spring MVC会稍微比Struts2快些。Spring MVC是基于方法设计,而Sturts2是基于类,每次发一次请求都会实例一个Action
③.Spring MVC使用更加简洁,开发效率Spring MVC比struts2高:支持JSR303,处理ajax的请求更方便
④.Struts2的OGNL表达式使页面的开发效率相比Spring MVC更高些
5.简单说一下SpringMVC几个常用注解@Controller 定义控制器
@RequestMapping 注解将URL映射到整个类或特定的处理方法上,还可以指定匹配方法@PathVariable 注解方法参数并将其绑定到URI模板变量的值上
@RequestParam 将请求的参数绑定到方法中的参数上(required=false)
@ResponseBody 将返回类型直接输入到HTTP response body中。输出JSON格式的数据时用
@ModelAttribute 作用添加一个或多个模型属性(model attributes)
@requestBody;@HttpEntity
6.http的长连接和短连接
HTTP协议有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。
在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。从HTTP/1.1起,默认使用的是长连接,用以保持连接特性。
7.http常见的状态码有哪些
200 OK //客户端请求成功
301 Moved Permanently(永久移除),请求的URL已移走。Response中应该包含一个Location URL,说明资源现在所处的位置
302 found 重定向
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
8.在单点登录中,如果cookie被禁用了怎么办
单点登录的原理是后端生成一个session ID,然后设置到cookie,后面的所有请求浏览器都会带上cookie, 然后服务端从cookie里获取session ID,再查询到用户信息。所以,保持登录的关键不是cookie,而是通过cookie保存和传输的session ID,其本质是能获取用户信息的数据。除了cookie,还通常使用HTTP请求头来传输。但是这个请求头浏览器不会像cookie一样自动携带,需要手工处理。
9.转发和重定向的区别(forward()和sendRedirect()的区别)
转发在服务器端完成的;重定向是在客户端完成的
转发的速度快;重定向速度慢
转发的是同一次请求;重定向客户端发送两次不同请求
转发不会执行转发后的代码;重定向会执行重定向之后的代码
转发地址栏没有变化;重定向地址栏有变化
转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
转发可以使用request域共享数据;重定向是两次请求不可以
10.Cookie过期和Session超时的区别
Cookie过期:
Cookie由浏览器管理,如果Cookie有过期时间,浏览器会在过期时间将其销毁。如果没有设置过期时间浏览器关闭后Cookie会过期
Session超时:
Session对象由服务器管理,服务器会计算Session对象的不活动时间,如果Session对象设置了超时时间,Session对象超过此时间会被销毁。如果没有设置默认30分钟会被销毁(服务器默认配置)。
11.servlet特性
单例多线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值