Struts2的面试知识点
来源:互联网 发布:app相册制作软件 编辑:程序博客网 时间:2024/06/05 05:56
框架(framework):是一个基本概念上的结构,用于去解决或者处理复杂的问题.其实就是一组组件,供选用完成自己的系统,简单说就是使用别人搭好的舞台,自己来表演.框架只能在待定的领域解决问题.框架的优点是:- 重用代码大大增加,软件生成效率和质量也得到了提高
- 使用框架开发,框架提供了统一的标准,大大降低了我们的后期维护.
- 重用代码大大增加,软件生成效率和质量也得到了提高
- 使用框架开发,框架提供了统一的标准,大大降低了我们的后期维护.
1.Struts2
概念:Struts2是一个基于MVC设计模式的web应用框架.本质上是一个Servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互Strut2=Struts1+webwork
Struts2的MVC:
Model---->javaBean
View----->jsp
Controller------->Servlet
Struts2的核心:
- 拦截器interceptor(提供功能)
- Action
- ognl与valuestack(值栈)
Struts2的执行流程:
- 浏览器发送一个请求
- 被StrutsPrepareAndExcuteFilter(前端控制器,核心控制器)拦截
- 调用Struts2框架默认的拦截器(interceptor)完成部分功能
- 在执行Action中操作
- 根据Action中方法的执行结果来选择跳转页面result视图.
Struts2框架封装数据方式:
- 属性驱动
直接在Action类中提供与请求参数匹配的属性,提供get/set方法
2. 模型驱动
- 让Action类实现一个指定接口ModelDriven
- 实例化模型对象,(就是需要先new出一个javaBean)
- 重写getModel方法将实例化的模型返回.
Struts2中获取Servlet API
1,从ServletActionContext中获取
2,采用注入的方式.
OGNL表达式
ognl是object-graph Navigation Language(对象图导航语言)
OGNL作用:
- 支持对象的操作,调用对象的方法
- 支持静态成员访问
- 支持赋值操作与表达式串联
- 访问OGNL上下文,访问ActionContext
- 操作集合对象
valueStack值栈
使用valueStack的主要目的是为我们action中产生的数据携带到页面上,也就是说valueStack是一个容器
当客户端向我们发送一个请求,服务器就会创建一个Action来处理请求,struts2中的action是一个多例,每一次请求都会有一个新的action对应,.所以action不存在线程安全问题.
一个请求对应一个action,对应一个actionContext,对应一个valueStack,对应一个OGNLvalueStack,对应一个SerletActionContext.
值栈(valuestack)实际上就是对OGNL的封装,OGNL主要的功能就是赋值与取值.Struts2正是通过ValueStack来进行赋值与取值的.
值栈的生命周期是一次请求,等同于request的周期
值栈的对象栈(root)实质上是List,保存Model.Action对象.上下文栈(context)实质上是Map,保存request,reponse,session.servletContext.attr.parameters等
Interceptor拦截器
struts2中的interceptor是基于spring aop(面向切面编程)思想,而aop思想本质上是通过动态代理来实现.我们struts2的拦截器主要是拦截action的操作,在action的执行前或者执行后进行一些其他的功能操作
拦截器与过滤器的区别:
- 拦截器是基于java反射机制的,而过滤器是基于函数回调的
- 拦截器不依赖于Servlet容器,而过滤器是依赖于Servlet容器的
- 拦截器只能对Action请求起作用.而过滤器则可以对几乎所有请求起作用
- 拦截器可以访问Action上下文.值栈里的对象,而过滤器不能.
- 在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次.
结论:struts2中可复用的代码功能都是基于Interdceptor(拦截器)来实现的.Strut2有很多内置拦截器,用来实现不同的功能.
Action是执行具体的业务逻辑代码的,在拦截器之后执行
Struts2和springMVC的区别:
SpringMVC的入口是一个Servlet即前端控制器,而Struts入口是一个Fileter过滤器.SpringMVC是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参.可以设计为单例或多例(建议单例).struts2是基于类开发的.传递参数是通过类的属性.只能设计为多例
Struts2采用值栈存储请求和响应的数据.通过OGNL存取数据.springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象.最后又将ModelAndView中的模型数据通过request域传输到页面.JSP视图解析器默认使用JSTL
阅读全文
0 0
- Struts2的面试知识点
- java面试的知识点
- 阿里面试的知识点
- 前端的面试知识点
- Struts2的学习知识点
- struts2的知识点
- [Java笔试面试知识点自整理系列]Struts1与Struts2的区别
- struts2的面试总结
- 面试知识点---数据库的索引
- IOS的一些面试知识点
- PHP面试的相关知识点
- 为了面试,准备的知识点
- 面试 知识点 学习的点点滴滴
- java进阶--面试的知识点
- 基础知识点的面试总结
- 关于面试的一些知识点
- android的面试知识点总结
- 面试知识点
- Linux开发工具(gcc gdb make shell)——GCC 三级优化
- 计算机图形学的数学基础
- CCF 201609-2 火车购票
- DrawerLayout的简单使用
- 微信小程序:支付系列合集(开发指南+精品Demo)
- Struts2的面试知识点
- Android应用商店——项目介绍
- 取得手机屏幕大小DisplayMetrics的应用
- java 接口类(排序)的简单实现
- iOS 一些常用的位运算
- 欢迎使用CSDN-markdown编辑器
- 自定义View实例——FlowLayout(流布局)的实现
- Unity移动障碍物设置
- 【已解决】Django传递数据到js提示Unexpected token