struts2理论简答题

理论简答题

1、 请简述MVC开发程序的优势

开发优势:

MVC分成三层Moder(模型)View(视图)Controller(控制),提高了代码的复用性,减少了代码的维护量。

  MVC分为三层,使项目结构更清晰,由于不同的层各司其职,使项目便于分工和管理。

 

2、 为什么使用struts开发程序

1Struts2是一个MVC模式的实现,模块化程序设计,是项目便于分工和管理,提高了代码的可复用性。

2Struts2简化了客户请求,包括参数的自动封装和类型转换,文件上传,数据验证,信息国际化的显示和响应操作。

3)响应操作:Struts2通过dojo封装ajax(异步访问数据),通过封装ognl提供ValueStack(值栈)丰富了view层访问数据的方式。

 

 

3、 请简述stuuts初始化过程

客户端发送一个请求到达web服务器,web服务器加载web.xml,创建strutspreparedandexecutefilter类,调用dispatcher.init(初始化)方法 ,    根据ActionMapper查找相对应的action,FilterDispatcher就把控制权委托给ActionProxy。ActionProxy使用了框架配置文件管理器,该管理器通过struts.xml文件来初始化。然后,ActionProxy创建ActionInvocation,它负责实现命令模式。ActionInvocation进程调用所需的拦截器,然后调用Action。                                                  createDispatcher

 

 

4、 用图文并茂的方式描述struts的执行过程

  

 

5、 请写出常用struts标签以及应用

<s:select>生成下拉选择框

<s:set>设置一个新变量

<s:checkboxlist>可以一次创建多个复选框

<s:radio>生成多个单选框

<s:combobox>生成下拉输入框

<s:iterator>对集合进行迭代输出

<sx:div> 创建一个div区域,可以通过ajax加载内容,实现局部刷新

<sx:a>:通过Ajax更新某个元素的内容或提交表单

<sx:submit>通过Ajax来更新某个元素的内容或提交表单

<s:property> 获取值

<s:text>指定的name属性,可访问国际化资源文件中的key属性

<s:fieldError>获取到数据验证文件中的message信息

<s:textField> 文本框

<s:form>form表单

 

 

 

6、 请写出10中常用的拦截器并说明作用,在什么情况下用户需要自定义拦截器和拦截器栈,如何实现用户自定义拦截器以及拦截器的部署。

1)i18n Interceptor            信息国际化的显示  

2)exception Interceptor       捕获异常,并且将异常映射到用户自定义的错误页面

3)validation Interceptor       数据验证 

4)fileUpload Interceptor       文件上传 

5)Params Interceptor         负责将请求参数设置为action属性

6)servletConfig Interceptor    将源于servletAPI的各种对象注入到action

7)checkbox Interceptor       checkbox的自动处理

8)Workflow Interceptor            调用action的validation方法,一旦有错误返回,重新定位到input

9)ConversionError Interceptor     类型转换错误

10)debugging Interceptor            调试错误

 

当用户遇到有关于逻辑相关的通用功能(一个方法被很多地方用到),如(登录验证等),则可以通过自定义拦截器实现。

当几个拦截器要被多个action用到时,就可以单独为每个action配置这些拦截器,则可通过拦截器栈实现。

 

实现用户自定义拦截器以及拦截器的部署:

  首先自定义一个实现interceptor接口(或者继承AbstractInterceptor)的类,重写其中的intercept方法,然后在struts2.xml中配置所应用的拦截器。

拦截器的部署:

  在<interceptors/>标签对内使用<interceptor/>标签对,引入具体拦截器,需要指定该拦截器的名称和类。

  根据需要可通过<interceptor-stack/>标签对,部署拦截器栈。

 

7、 请简述什么是国际化,struts2实现国际化的步骤

国际化是指应用程序运行时,可根据客户端请求来自的国家、地区、语言的不同而显示不同的界面。

 

步骤:

   1)首先提供一个不同语言的资源文件,基名-国家代码-.xml

2)使用ResourceBundle根据Locale加载对应语言环境的资源文件,

3)根据指定key取得已加载语言资源文件中对应的字符串。

8、 请简述struts2中定义action的三种方式和如何获取servlet对象的三种方式

定义action的三种方式

1、实现Action接口

2、继承ActionSupport

3、普通的java类,写execute方法

 

获取servlet对象的三种方式

1、耦合:servletActionContext

2、解耦:ActionContext

3、实现接口:

servletRequestAware,servletResponseAwareSessionAware,ApplicationAware

 

9、请简述jstlel表达式与ognl的区别,以及ognl访问数据的过程

Jstl和el表达式只可以访问作用域里面的对象,取代页面中Java脚本,而ongl简化了数据访问和EL表达式语言,不仅可以访问作用域对象还可以直接当前Action中的属性,且ognl在访问根元素的时候直接访问,访问非根元素需要加”#”。

 

Ongl访问数据的过程:

 

 

 

 

 

 

 

 

10struts1struts2的区别

1、

i. struts1线程不安全、效率高,Struts1是一个action类,处理所有请求;

ii. 线程是安全的,效率低;struts2每发出一次请求,就创建一次action,不能及时释放文件中垃圾。

2、

i. Struts1依赖于web服务器,struts1Action的处理方法时RequestResponse来自于web服务器,因而依赖web服务器;

ii. struts2不依赖于web服务器;struts2可调用newIstance()方法,得到action对象,允许action被单独测试。

3、Struts1是不透明的(不可进行修改),Struts2用户可以自己定义自己需要的拦截器;

4、Struts2通过dojo封装了ajax

5、Struts2过封装ognl提供ValueStack(值栈)丰富了view层访问数据的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值