撩课-Java每天5道面试题第19天
126.Struts2中的拦截器有什么用?列举框架提供的拦截器名称?
)拦截器是struts2核心组成部分,
它提供了一种机制,使得开发者
可以定义一个特定的功能模块,
这个模块会在Action执行之前或者之后执行
也可以在Action执行之前阻止Action执行。 )常用的拦截器有: chain:在不同请求之间将请求参数在不同名字件转换,
请求内容不变 fileUpload:提供文件上传。 i18n:记录用户选择的区域环境 logger:输出Action的名字 params:将请求中的参数设置到Action中去。
127.Struts2有哪些优点?
)在软件设计上Struts2的应用
可以不依赖于Servlet API和struts API。
Struts2的这种设计属于无侵入式设计; )拦截器,
实现如参数拦截注入等功能; )类型转换器,
可以把特殊的请求参数转换成需要的类型; )多种表现层技术,
如:JSP、freeMarker、Velocity等; )Struts2的输入校验
可以对指定某个方法进行校验; )提供了全局范围、
包范围和Action范围的
国际化资源文件管理实现 ) 实现MVC模式,结构清晰,
使开发者只关注业务逻辑的实现。
有丰富的tag可以用,
大提高了开发效率。(简要)
128.ActionContext和ValueStack什么时候创建?是否是线程安全的?
明确:
动作类是多例的,
每次动作访问,
动作类都会实例化。
所以是线程安全的。
与Struts1的区别是,
struts1的动作类是单例的。 在每次动作执行前,
核心控制器StrutsPrepareAndExecuteFilter
都会创建一个ActionContext和ValueStack对象。
且每次动作访问都会创建。 这两个对象存储了整个动作
访问期间用到的数据。
并且把数据绑定到了线程局部变量
ThreadLocal上了。
所以是线程安全的。
129.一个请求在Struts2框架中的处理大概分为几个步骤?
) 客户端初始化一个
指向Servlet容器(例如Tomcat)的请求 )这个请求经过一系列的过滤器Filter
这些过滤器中有一个叫做
ActionContextCleanUp的可选过滤器,
这个过滤器对于Struts2和
其他框架的集成很有帮助,
例如:SiteMesh Plugin) )接着FilterDispatcher被调用,
FilterDispatcher询问ActionMapper
来决定这个请是否需要调用某个Action )如果ActionMapper决定需要调用某个Action,
FilterDispatcher把请求的处理交给ActionProxy )ActionProxy通过Configuration Manager
询问框架的配置文件,
找到需要调用的Action类 )ActionProxy创建一个ActionInvocation的实例。 )ActionInvocation实例使用命名模式来调用,
在调用Action的过程前后,
涉及到相关拦截器(Intercepter)的调用。 )一旦Action执行完毕,
ActionInvocation负责根据struts.xml中的配置
找到对应的返回结果。
返回结果通常是一个需要
被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中
继承的标签。
在这个过程中需要涉及到ActionMapper
130.介绍一下Struts的ActionServlet类
ActionServlet继承自
javax.servlet.http.HttpServlet类,
其在Struts framework中扮演的角色
是中心控制器。
它提供一个中心位置来处理全部的终端请求。
控制器ActionServlet主要
负责将HTTP的客户请求信息组装后,
根据配置文件的指定描述,
转发到适当的处理器。
按照Servelt的标准,
所有得Servlet必须在
web配置文件(web.xml)声明。
同样,ActoinServlet必须在
Web Application配置文件(web.xml)中描述
当用户向服务器端提交请求的时候,
实际上信息是首先发送到控制器ActionServlet,
一旦控制器获得了请求,
其就会将请求信息传交给一些辅助类(help classes)处理。
这些辅助类知道如何去处理与请求信息所对应的业务操作。
在Struts中,
这个辅助类就是org.apache.struts.action.Action。
通常开发者需要自己继承Aciton类,
从而实现自己的Action实例。
撩课-Java每天5道面试题第19天的更多相关文章
- 撩课-Java每天5道面试题第13天
撩课Java+系统架构点击开始学习 96.JDBC操作数据库的步骤 ? .加载数据库驱动 .创建并获取数据库链接 .创建jdbc statement对象 .设置sql语句 .设置sql语句中的参数(使 ...
- 撩课-Java每天5道面试题第15天
撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...
- 撩课-Java每天5道面试题第10天
撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...
- 撩课-Java每天5道面试题第9天
撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系 ...
- 撩课-Java每天5道面试题第8天
撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, applicat ...
- 撩课-Java每天10道面试题第7天
撩课Java+系统架构 视频 点击开始学习 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时(List.Set.Map), ...
- 撩课-Java每天10道面试题第4天
撩课Java+系统架构 视频 点击开始学习 31.静态变量和实例变量的区别? 静态变量也叫类变量, 这种变量前加了static修饰符. 可以直接用类名调用, 也可以用对象调用, 而且所有对象的同一个类 ...
- 撩课-Java每天5道面试题第17天
116.说下Struts的设计模式 MVC模式: web应用程序启动时 就会加载并初始化ActionServler. 用户提交表单时, 一个配置好的ActionForm对象被创建, 并被填入表单相应的 ...
- 撩课-Java每天5道面试题第24天
151.springMVC和struts2的区别有哪些? .springmvc的入口是一个servlet即前端控制器(DispatchServlet), 而struts2入口是一个filter过虑器( ...
随机推荐
- JS文件中的中文在网页引用时显示乱码的简单解决方式
今天把一个jquery方法从前台cshtml文件转移到单独的js文件中后执行不成功,调试发现if判断中的中文字符串变成了乱码,之前在前台文件中是可以正常显示的,所以判定可能是跟文件的编码方式有关系. ...
- c# WebApi创建及客户端调用
前段时间学习WebApi的创建与调用,网上的信息千奇百怪(知识有限,看不懂啊),通过查阅资料及借鉴博友实例分析后总结一下,总结一套简单完整的WebApi创建及实例 首先创建一个WebApi服务(流程就 ...
- C#6.0语言规范(十九) 文档注释
C#为程序员提供了一种机制,可以使用包含XML文本的特殊注释语法来记录他们的代码.在源代码文件中,具有特定形式的注释可用于指示工具从这些注释和它们之前的源代码元素生成XML.使用这种语法的注释称为文档 ...
- Redis---quickList(快速列表)
1. 概述 考虑到链表的附加空间相对太高,prev 和 next 指针就要占去 16 个字节 (64bit 系统的指针是 8 个字节),另外每个节点的内存都是单独分配,会加剧内存的碎片化,影响内存管理 ...
- 前端开发者不得不知的ES6十大特性
前端开发者不得不知的ES6十大特性 转载 作者:AlloyTeam 链接:http://www.alloyteam.com/2016/03/es6-front-end-developers-will- ...
- [LeetCode] 反转整数
题目: 给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注 ...
- SpaceSyntax【空间句法】之DepthMapX学习:第三篇 软件介绍与一般分析流程图
上篇讲啥来着?好像讲了数据的输入以及一些核心的概念.这篇讲软件长什么样,做那几种分析的步骤如何. 博客园/B站/知乎/CSDN @秋意正寒(我觉得这一篇肯定很多盗图的,那么我在版头加个本篇地址吧)ht ...
- Xamarin中 ios 修改Assets.xcassets 文件后 无法调试和编译
根本问题是因为 vs项目里面 没有包含 如果提示找不到对应png 请检查 iOS 项目卸载后 编辑 并找到对应文件检查 <ImageAsset Include="Assets.xcas ...
- STL简洁 && c++读取cfg文件
在c++工程中,往往需要修改一些变量来实现不同的功能效果,这是cfg文件的使用可以使得工程更加高效与便利,这篇文章介绍的就是c++读取cfg文件的相关内容,以便及时总结和日后回顾. STL即标准模板库 ...
- 输入两棵二叉树A,B,判断B是不是A的子结构(c++实现)
#include <iostream> #include <cstdio> #include <stdio.h> #include <string> # ...