struts2工作原理面试(用Struts2开发和用jsp、servlet开发有什么区别(面试题,求详细答案,谢谢))

:暂无数据 2026-06-10 09:50:02 :0

struts2工作原理面试(用Struts2开发和用jsp、servlet开发有什么区别(面试题,求详细答案,谢谢))

本篇文章给大家谈谈struts2工作原理面试,以及用Struts2开发和用jsp、servlet开发有什么区别(面试题,求详细答案,谢谢)对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

用Struts2开发和用jsp、servlet开发有什么区别(面试题,求详细答案,谢谢)

使用纯jsp页面属于modal1开发模式也就是jsp+javabean,使用servlet就是modal2开发模式也就是jsp+servlet+javabean,struts2就是mvc2,struts充当控制器,开发速度更快,更易于维护。

面试题:谈一下你对struts2的认识用语言怎么组织比较即简单又全面呢

回答此类问题,通常是有规律可循的。
1、讲出这个东西的本质是什么
2、在应用程序架构中的位置是什么
3、能干什么
4、描述一下工作流程
5、说一下优缺点

demo:
他是一个mvc框架,介于发出请求和返回请求之间的一个mvc框架。
他分析请求路径和参数,调用业务逻辑处理程序,返回response
在分层系统中用于衔接页面输入和bo层的逻辑层面
可是系统层次结构分明,易维护、以扩展
另外自己可以扩展一些概念,整合视图层技术(可返回jsp、freemarker)、拦截器(过滤请求)

希望可以帮到你

java 关于struts框架一般面试提什么问题

一、说说Struts2的工作流程1、Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
1)核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。
2)业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。
Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。
2、基本简要流程如下:
1)客户端初始化一个指向Servlet容器的请求;
2)这个请求经过一系列的过滤器(Filter)
(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3)接着FilterDispatcher被调用,
FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4)如果ActionMapper决定需要调用某个Action,
FilterDispatcher把请求的处理交给ActionProxy
5)ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6)ActionProxy创建一个ActionInvocation的实例。
7)ActionInvocation实例使用命名模式来调用,
在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。 在这个过程中需要涉及到ActionMapper
9)响应的返回是通过我们在web.xml中配置的过滤器
10)如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。

struts2如何拦截请求,面试时一直被问到这个以及这方面的求一个标准答案啊

目测这是问struts2流程.
容器启动,加载web.xml,初始化FilterDispatcher,加载default.properties文件,根据struts.configration.files加载struts的三种配置文件。
客户端将请求提交到web容器,被filterDispatcher过滤到,将请求转发给ActionProxy,获取表示请求的字符串,提交给ActionInvocation;根据解析的字符串找到对应的action映射节点,实例化class属性指定的业务逻辑Action;在执行execute之前,查看action周围是否有拦截器引用,如果有,按照引用的顺序逐个执行;执行execute方法进行业务逻辑处理;处理完毕之后,根据方法的返回值,在action节点下查找对应的result节点,返回匹配的视图给客户端。

java面试 谈谈对ssh三大框架的理解

首先hibernate是一个持久层框架,轻量级(性能好),orm映射灵活,对表与表的映射关系处理的很完善,对jdbc做了良好的封装,使得我们开发时与数据库交互不需要编写大量的sql语句。
而struts是一个mvc的web层框架,底层是对servlet的大量封装,拥有强大的拦截器机制,主要负责调用业务逻辑Service层。

三大框架的大致流程jsp-》struts-》service-》hibernate。因为struts负责调用Service从而控制了Service的生命周期,使得层次之间的依赖加强,也就是耦合。
所以我们引用了spring,spring在框架中充当容器的角色,用于维护各个层次之间的关系。通过IOC反转控制DI依赖注入完成各个层之间的注入,使得层与层之间实现完全脱耦,增加运行效率利于维护。
并且spring的AOP面向切面编程,实现在不改变代码的情况下完成对方法的增强。比较常用的就是spring的声明式事务管理,底层通过AOP实现,避免了我们每次都要手动开启事物,提交事务的重复性代码,使得开发逻辑更加清晰。

这样应付面试应该可以了,不过他可能会细问,比如hibernate的懒加载,spring的AOP和IOC原理等,这个还需要在准备准备

Java问题《struts2、C/S、B/S》(学习+面试200分+额外分)

1.如果对mvc模式已经有所了解,那上网看看文档足以。实在闲得蛋疼就去买本书吧,孙鑫的Struts2深入详解貌似还可以。

2.两种情况:如果是刚毕业,那么框架大概知道一点就行,然后多多钻研数据结构和java的高级特性,像反射,代理什么的,现在的技术经理往往对算法精通,基础扎实的学生抱有好感。
如果已经工作几年了,那就多谈谈项目和业务吧,这种情况务实最重要。

3.c/s里最重要的是swing,现在做swing最好的ide应该是sun的netbeans吧
不过现在做swing的公司……真的太少了。

4.c/s不需要tomcat吧,tomcat是一个web容器,只有b/s才需要web容器。
b/s说白了就是网页系统,会做网页的那套东西就行了,javascript,jsp,servlet,html,css+div,jdbc数据库操作,一点点输入输出流的内容

关于struts2,hibernate2,spring3,面试时让我说下这三大框架的工作原理,东西太多了,应该侧重说哪些东西

先总体说说它们3个代表MVC开发模式中的哪一层..
struts2代表控制层,hibernate数据持久层,spring相当于容器,可以整合struts2,hibernate。
并且spring的aop可以在service层实现事物控制.
然后分别细说
先说struts2
struts2提供了众多拦截器,页面提交的参数会经过默认的18个拦截器的过滤...最终能把页面提交的参数自动转换成需要的类型.
能自定义拦截器,实现aop编程,实现如权限拦截等功能,
数据校验,能对指定方法校验,支持xml校验.
能实现国际化.
支持多种表现层技术,如:JSP、freeMarker、Velocity等
支持ajax,
模型驱动,能把参数封装到模型驱动里,模型驱动会把对象放置到栈顶,在页面通过ognl表达式,能够回显数据.
如果你对值栈了解很透彻的话...这里可以继续吹下去..比如OgnlValueStack 类包含两个重要的属性 一个root和一个context。
root实际上是一个ArrayList,root保存着调用Action的实例,
context是一个Map,context中又有一个默认顶层对象_root,它是属性root的复制,在页面访问它是不需要加#号的...后面可以继续..我懒得打了..
其它的比如Token令牌啊,怎么防止表单重复提交.....争取吹个半小时..如果面试官还没让你听的话
Ok
继续hibernate
hibernate是ORM框架,它对jdbc进行了封装,在分层结构中处于持久化层,
它能建立面向对象的域模型和关系数据模型之间的映射.
它大大简化了dao层的编码工作
然后就说说session中的缓存和快照表
也可以说说get和load获得方法有什么区别
在说说二级缓存...它是SessionFactory级别的缓存.是进程范围的..他有内置和外置..二级缓存就是指外置的....分别有4个...集合缓存,时间戳缓存..查询缓存..类级别的缓存....一般用于很少被修改的数据..允许偶尔的并发问题
...在其它的吹了那么几下.....什么?还没让你停?
ok
继续sping
这里先说说什么是IOC..DI..可以xml实现..也能注解...我一般都是用注解.
然后就重点说说aop就行了....什么切面.连接点...切入点.目标对象..通知...织入啊...拿个自己了解的吹吧..
在说说用aop怎么实现事物控制...
还没让你停?
就说说ssh整合吧.

.....打了...半个多小时...楼主你懂的....

java常见的面试题和面试技巧 谁能告诉我 谢谢

如果说是一个企业急需招人,我想那就得多准备一些框架方面的知识,毕竟做项目是用的框架!下面进入主题:大概的流程是这样吧 框架——》Java基础——》数据库相关点——》页面注意技巧
一:框架——》
1,)Struts2是如何实现MVC的?M(模型):这个一般不由Struts来做V (视图):视图也不算struts的强项,但是struts提供优秀的标签来支持视图的展示,利用标签,可以将数据合理的展示给用户控制器:struts的重要功能,提供struts的过滤器,拦截用户的请求,查找struts配置文件,为其匹配一个对应的Action,这个Action负责调用模型,获得数据,然后对数据做部分处理,接着Action再将处理后的数据,为其选择一个视图进行输出。

2) Struts工作机制?为什么要使用Struts? 工作机制: Struts的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程. (1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息; (2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中; (3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; (4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功; (5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法; (6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件; (7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用: JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件 Struts的validate框架是如何验证的? 在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。

3)spring工作机制及为什么要用? 1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象 6.视图对象负责渲染返回给客户端。为什么用: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。
IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用 其协作对象构造的。因此是由容器管理协作对象(collaborator)。

4)Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。2. Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many。

5)Hibernate的一级缓存与二级缓存的区别?
一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据。二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。(这个题想简答就可以了,但是如果想深入去多问几个问什么这里提供一个连接,写得较为详细:1)
另外一个关键点是:你要知道什么信息和什么操作,该调用什么级别的缓存!

6)如何优化Hibernate?(这个问题有些触及到这个框架的弱点了,那就得想办法应付)
1.使用双向一对多关联,不使用单向一对多 2.灵活使用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用Bag,多对多集合使用Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要怕多,自己再补充一点,上面说到的都是关于数据库设计 带来的优势,从而起到优化框架的效果,但是真正在实际操作中,我们只有尽量控制不使用懒加载“lazy

=true”,如果在涉及的尽量使用Hql语句

7)struts的核心是什么?(参考了这个回答:2)

FilterDispatcher也是Struts2的核心技术。FilterDispatcher核心控制器执行以下操作:(1)读取静态数据信息(2)决定需要转发或者导航的Action配置(3)创建Action的Context(4)创建Action代理(5)内存清理和性能优化拦截器:Interceptor 拦截器本身是一个普通的Java对象,它能动态拦截Action调用,在Action执行前后执行拦截器本身提供的各种个样的Web项目需求。 也可以阻止Action的执行,同时也可以提取Action中可以复用的部分。(1)在Action调用之前提供系统处理流程逻辑控制(2)和Action交互时,提供Ation执行时的一些初始信息(3)在Action结束后,一些事后的处理流程逻辑(4)修改Action中返回的Result信息(5)捕获异常栈是用ognl表达式存值的最初地方,即一个存值的栈 自己再补充一点:struts的标签库也算一个。

8)ssh 的工作流程(这个问题留作作业,它们之间的相互实现,相互调用从原理上理解就行了)

struts2面试经常问到的几个问题

1. Struts工作机制?为什么要使用Struts?
工作机制:
Struts的工作流程:
在web应用启动时就会加载初始化ActionServlet,ActionServlet从
struts-config.xml文件中读取配置信息,把它们存放到各种配置对象
当ActionServlet接收到一个客户请求时,将执行如下流程.
-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;
-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

2. Struts的设计模式
MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,
一个配置好的ActionForm对象被创建,并被填入表单相应的数据,
ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,
如果需要就调用ActionForm的 Validate()验证后选择将请求发送到哪个Action,
如果Action不存在,ActionServlet会先创建这个对象,
然后调用 Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,
ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,
ActionForward对象指定的jsp生成动态的网页,返回给客户。

关于本次struts2工作原理面试和用Struts2开发和用jsp、servlet开发有什么区别(面试题,求详细答案,谢谢)的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

struts2工作原理面试(用Struts2开发和用jsp、servlet开发有什么区别(面试题,求详细答案,谢谢))

本文编辑:admin

更多文章:


promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

各位老铁们,大家好,今天由我来为大家分享云备份,以及手机云备份是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 02:40

java遍历map的key(java Map 怎么遍历)

java遍历map的key(java Map 怎么遍历)

大家好,java遍历map的key相信很多的网友都不是很明白,包括java Map 怎么遍历也是一样,不过没有关系,接下来就来为大家分享关于java遍历map的key和java Map 怎么遍历的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月11日 02:20

微信xlsx文件怎么打开(苹果手机微信打开excel)

微信xlsx文件怎么打开(苹果手机微信打开excel)

大家好,关于微信xlsx文件怎么打开很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于苹果手机微信打开excel的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 01:10

reduce用法和短语(减少的英文短语有哪些)

reduce用法和短语(减少的英文短语有哪些)

其实reduce用法和短语的问题并不复杂,但是又很多的朋友都不太了解减少的英文短语有哪些,因此呢,今天小编就来为大家分享reduce用法和短语的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 00:40

最近更新

promote翻译(英语翻译倡导怎么说)
2026-10-11 06:30:03 浏览:0
热门文章

标签列表