【Java面试题】Struts2
54)Struts2 执行流程
客户端发送请求,请求到达服务端,由 struts 的核心控制器ActionServlet拦截请求。
核心控制器调⽤ action 映射器匹配请求路径和映射路径,判断映射路径是否存在。
核心控制器调⽤ actionProxy 代理器,actionProxy 代理调⽤配置管理器,配置管理器解析 struts.xml,匹配要 访问的 action,返回结果给 actionProxy 。
actionProxy 代理调⽤对应的 action,执⾏业务逻辑操作,调⽤之前执⾏⼀系列的拦截器(封装请求参 数,数据校验等操作)。
action 返回 string 字符串,配置管理器确定返回结果,倒着执⾏⼀系列的拦截器。
返回结果给客户端。
55)列举 Struts2 中引入的一些有用的注释?
@Action 创建动作类 @Actions 为多个动作配置单个类 @Namespace 和@Namespaces 用于创建不同的模块 @Result 用于结果页面 @ResultPath 用于配置结果页面位置
56)SpringMVC 和 Struts2 的区别?
-
Struts2 是类级别的拦截, 一个类对应一个 request 上下文,SpringMVC 是方法级别的拦截, 一个方法对应一个 request 上下文,而方法同时又跟一个 url 对应,所以说从架构本身上SpringMVC 就容易实现 restful url。
-
由于 Struts2 需要针对每个 request 进行封装,把 request,session 等 servlet 生命周期的变量封装成一个一个 Map,供给每个 Action 使用,并保证线程安全,所以在原则上,是比较耗费内存的。
-
拦截器实现机制上,Struts2 有以自己的 interceptor 机制,SpringMVC 用的是独立的 AOP方式
-
SpringMVC 的入口是 servlet,而 Struts2 是 filter
-
区别:
-
servlet流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在业务处理之前进行控制;
-
filter流程是线性的,url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter,servlet接收等,而servlet处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要是用来主导流程。
-
filter可用来进行字符编码的过滤,检查用户是否登陆的过滤,禁止页面缓存等。 (此处引用自)原文链接:https://blog.csdn.net/weixin_42669555/article/details/81049423
-
-
-
SpringMVC 集成了 Ajax,使用非常方便,只需一个注解@ResponseBody 就可以实现,然后直接返回响应文本即可。
-
Spring MVC 和 Spring 是无缝的。
-
设计思想上,Struts2 更加符合 OOP 的编程思想, SpringMVC 就比较谨慎,在 servlet 上扩展。
-
SpringMVC 开发效率(几乎可以认为0配置)和性能高于 Struts2。
好看请赞,养成习惯:) 本文来自博客园,作者:靠谱杨, 转载请注明原文链接:https://www.cnblogs.com/rainbow-1/p/16318709.html
欢迎来我的51CTO博客主页踩一踩 我的51CTO博客
文章中的公众号名称可能有误,请统一搜索:靠谱杨的秘密基地