JavaWeb学习 巩固+总结04

今天,我继续巩固学习了JavaWeb,继续练习敲代码,进行实操,不断熟悉操作。
并且还整理了一些面试题:
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.Spring怎么配置bean
1、通过全名的反射/通过工厂方法/factoryBean都可以配置bean
2、IOC对bean的生命周期(创建 初始化 使用 销毁)
3、通过构造器或工厂方法创建bean实例
4、IOC为bean的属性赋值或者对其他bean引用
5.1、将bean实例传递被bean的前置处理器 postProcessBeforeInitalization方法
5.2、调用bean的初始化方法
5.3、将bean实例传递给bean的后置处理器 postProcessBeforeInitalization方法
5.4bean可以使用了
5.5当容器关闭时,调用bean的销毁方法
有关bean对象的补充
1、在构建IOC容器时就已经创建了配置文件中的所声明的bean对象
2、Bean对象默认情况下是单例的,多次调用getBean() 获取bean对象时是同一个bean对象
3、若将scope=”prototy”则在每次调用getbean()方法获取bean对象时 每次都是一个新的对象。
4、通过spring的Ioc容器创建实例对象,其中依赖注入是IOC的一种典型实现方式,Spring框架支持构造方法注入和set方法注入,不支持接口注入,因为会存在耦合性
5.简单说一下SpringMVC几个常用注解
@Controller 定义控制器
@RequestMapping 注解将URL映射到整个类或特定的处理方法上,还可以指定匹配方法
@PathVariable 注解方法参数并将其绑定到URI模板变量的值上
@RequestParam将请求的参数绑定到方法中的参数上(required=false)
@ResponseBody将返回类型直接输入到HTTP response body中。输出JSON格式的数据时用
@ModelAttribute作用添加一个或多个模型属性(model attributes)
@requestBody;@HttpEntity
6.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 更高些。
接下来,还要继续坚持练习敲代码,练习操作,让自己更熟练。并且每天都能够熟练掌握一些面试题。

猜你喜欢

转载自blog.csdn.net/m0_49528461/article/details/108042422
今日推荐