【Java面试题】Struts2
七、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。
【Java面试题】Struts2的更多相关文章
- java笔试题13-11-21
中xxx科技公司java笔试题 今天去参加一个公司的面试,去先做了一份笔试题,妈的,太他妈难了(对于我来说,最后做完一个员工说你是不是投错简历了,都是空白,我说我做的大部分都对了..最后面试都没有,就 ...
- 一些常见的Java面试题 & 面试感悟
< 前言 > 近期在面试,深感这个行业的浮躁,一些菜不辣基的弱鸡开出的工资待遇要求,超过了我.不知道他们是怎么拿到那么高的工资的,难道是他在公司有亲戚朋友吗?有后台吗?是行业热钱真的过多了 ...
- 百度搜索 “Java面试题” 前200页(面试必看)
前言 本文中的题目来源于网上的一篇文章<百度搜索 "Java面试题" 前200页>,但该文章里面只有题目,没有答案.因此,我整理了一些答案发布于本文.本文整理答案的原则 ...
- Java面试题(全)--视频系列
此系列为面试笔试题的视频讲解,以下均为超链接,点击即可进入每个知识点的讲解. Java面试题01.面试的整体流程 Java面试题02.java的垮平台原理 Java面试题03.搭建一个java的开发环 ...
- 2018年Java面试题搜集
2018年Java面试题搜集 一.Servlet执行流程(浏览器访问servlet的过程容器) 客户端发起http请求,web服务器将请求发送到servlet容器,servlet容器解析url并根据w ...
- 超全面Java 面试题(2.1)
这部分主要是开源JavaEE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts2已经是明日黄花,在这里就不讨论Struts2的面试题,此外, ...
- Java面试题集(86-115)
Java程序员面试题集(86-115) 摘要:下面的内容包括Struts 2和Hibernate的常见面试题,虽然Struts 2在2013年6月曝出高危漏洞后已经显得江河日下,而Spring MVC ...
- 2019年 Java 面试题解析
2019年 Java 面试题解析 转载地址:https://www.cnblogs.com/Zz-maker/p/11193930.html 作者: Zz_maker 包含的模块: 本文分为十九个模块 ...
- 2018年最新Java面试题及答案整理(持续完善中…)
2018年最新Java面试题及答案整理(持续完善中…) 基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内 ...
- java面试题(一年工作经验)的心得
看面试题 正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐,如下: Java面试题全集(上) 很多基础的东西,建议先看. 各大公司Java后端开发面 ...
随机推荐
- Go 项目的文件布局
转自 kcq 的 https://github.com/golang-standards/project-layout https://github.com/golang-standards/proj ...
- 深入理解Go语言(04):scheduler调度器-GMP里结构体源码分析
在前面一节中简单介绍了golang的调度模型-GPM模型,介绍了他们各自的作用.这篇文章就来看看他们的源码结构. Go版本:go1.13.9 M结构体 M结构体是OS线程的一个抽象,主要负责结合P运行 ...
- linux系统优化命令--day03
用户管理与文件权限 给普通用户授权 root 用户 修改/etc/sudoers文件,文件非常重要, 不可以随意更改 vim /etc/sudoers 如果想要给用户赋予权限,我们要使用这个命令 vi ...
- MySQL和Redis基本安装和配置
MySQL 下载和安装 mysql官网下载:https://dev.mysql.com/downloads/mysql/ 下载后将目录下的bin路径加入到环境变量中 在安装目录下创建 my.ini 配 ...
- 2021 虎符杯hate num 注入题
前言 今天遇到个有意思的SQL盲注,花了不少功夫,也学到了新姿势,遂记录下来以备后续碰到相同场景使用. 题目 这是2021 虎符杯的一道web题,有一个目标站点且附带了源码. 源码内容包括: 主要逻辑 ...
- 在ABP的模块解决方案中使用BootstrapBlazor
1.为Study.Trade.Blazor.Server.Host引入两个包 成功后效果如下: 2.修改Study.Trade.Blazor.Server.Host的Pages目录下的_Host.cs ...
- 【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题
问题描述 Azure Cache for Redis 服务在传输和存储数据时是如何加密呢? 问题回答 一:关于Azure cache for Redis服务在数据传输过程中是如何加密的? 为了确保在A ...
- dart特殊符号语法(一)
许久没有写博客.浏览以往的博客,是那么稚嫩.就让它们当成成长的照片吧.重新开始操起这个记录的爱好,一方面把它当成可以查阅的资料,方便自己:另一方面希望有帮助于人.由于个人能力,认知有限,如读者发现有纰 ...
- 压测中TPS上不去的几种原因及分析?
1. 服务器资源限制:服务器的硬件资源(如 CPU.内存.磁盘)可能不足以处理大量的请求.在高负载情况下,服务器可能无法及时响应所有的请求,导致 TPS 上不去.解决方法可以考虑升级硬件资源或通过负载 ...
- Jmeter参数化-用户自定义变量
一 首先我们先来了解下jmeter 做参数化的目的: 1通过参数化来集中管理配置和测试数据 2通过参数化实现数据驱动测试 二 线程组添加配置元件中的用户自定义变量 添加变量名称,变量值 三 使用变量 ...