每天五个java相关面试题(1)--struts2部分

好啦 好啦。过不了多久我要参加社招啦,每天在博客更新五个java方面的面试题以及参考回答的答案。

最近先来框架部分。

首先是struts2;

开始!

1.Struts2工作机制?

答:

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;

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。

2.使用Struts的好处?为什么要使用Struts?

答:

1.它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;

2.其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;

3.是它对其他技术和框架显示出很好的融合性。

基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件

3.Struts的validate框架是如何验证的?

答:

在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。

具体校验以及详解:http://perfectplan.iteye.com/blog/1561805

4.说下Struts的设计模式

答:

MVC模式(Model-View-Controller 模型-视图-控制器)

Struts主要担当了控制器的作用

5.Action 的实现通集成常用那种方法?

答:

一种是直接实现自己的Action;另一种是实现Action的接口继承ActionSupport

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 21:47:11

每天五个java相关面试题(1)--struts2部分的相关文章

每天五个java相关面试题(10)--java基础详解篇2

好勒好勒.一起加油 一.HashMap和Hashtable的区别. 答: HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许. HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey.因

每天五个java相关面试题(8)--spring篇

首先呢,假设有从事前端开发的大神或者准备从事前端开发的小伙伴无意看到我这篇博客看到这段文字欢迎加我的QQ:[ 845415745 ].即将走入社会的菜鸟大学生有关于前端开发的职业问题想请教或者一起探讨一下,谢谢谢谢. 今天依然不变的每日五个 1使用Spring框架的优点是什么? 答: 轻量: Spring 是轻量的,主要的版本号大约2MB. 控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖.而不是创建或查找依赖的对象们. 面向切面的编程(AOP): Spring支持面向切

每天五个java相关面试题(6)

今天七夕节,苦逼的我还在写网页看面试题...早点看完睡觉拜拜啊 开始吧 1.forward 和 redirect 的区别 答: forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址. redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都

每天五个java相关面试题(4)

每天五个题咯 今天继续: 1. int和Integer有什么区别? 答: int是JAVA八大基本数据类型(byte,shor,int,long,char,boolean,float,double)之一. JAVA语言为八大基本数据提供了包装类,Integer对应是int类型的包装类,就是把int类型包装成Object对象. 2.DOM解析与SAX解析的不同? 答: SAX:只能读,不能修改,只能顺序访问,适合对大型的XML的解析,解析速度快! DOM:不仅能读,还能修改,而且能够实现随机访问,

每天五个java相关面试题(2)

这次主要是mybatis部分的 1.Mybatis基础: #{-} 和 ${-} 的区别 答: MyBatis将 #{-} 解释为JDBC prepared statement 的一个参数标记.而将 ${-} 解释为字符串替换.理解这两者的区别是很有用的, 因为在某些SQL语句中并不能使用参数标记(parameter markers). 比如,我们不能在表名(table name)的位置使用参数标记. 假设有下面的代码: Map<String, Object> parms = new Hash

每天五个java相关面试题(7)--线程篇

首先关于线程能够先看我之前这篇博文熟悉一下线程生命周期的图示以及文字说明 好開始了: 1.java 中有几种方法能够实现一个线程? 答:有两种实现方法.各自是继承 Thread类与实现Runnable接口. 1.线程类继承Thread类的语法: (public) class 类名 extends Thread{ public void run(){//这里写线程的内容}} 2.线程类实现java.lang.Runnable类的语法: (public) class 类名 implements Ru

每天五个java相关面试题(3)

1. Servlet的生命周期是什么? 答: 第一次请求: 构造方法->init() -> service() -> doGet()/doPost() 以后的请求:service() -> doGet()/doPost(); Servlet是单实例的. 2. 说出ArrayList,Vector, LinkedList的存储性能和特性HashMap和Hashtable的区别 答: ArrayList Vector:以数组的方式存储,增.删慢,查.改快 ArrayList:线程不安全

每天五个java相关面试题(5)--主要关于网络协议(重点)

今天主要是网络线程方面的,内容有点多慢慢记...但是是面试中非常重要的知识点.所以需要多加记忆和理解. 1.OSI七层模型,每一层的功能 (osi开放式系统接口) 答: 物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化为1.0,也就是我们常说的数模转换与模数转换).这一层的数据叫做比特. 数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问.这一层通

Java相关面试题总结

本文分为十九个模块,分别是: Java 基础.容器.多线程.反射.对象拷贝.Java Web .异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring Cloud.Hibernate.MyBatis.RabbitMQ.Kafka.Zookeeper.MySQL.Redis.JVM ,如下图所示: [Java基础] 1. JDK 和 JRE 有什么区别?2. == 和 equals 的区别是什么?3. 两个对象的 hashCode() 相同,则 equals