supber

导航

struts2考试题目

struts2 提问: 

1.谈谈MVC设计模式,对我们开发带来了什么好处?   

   Model(模型分为数据模型(po,vo)和业务模型(dao,service)),   View(页面,常见的是jsp),   Controler(servlet,struts的action),  

   MVC是一种分层的代码组合模式, 给我们的项目带来了结构清晰,易读,易于后期维护的好处。

2. struts2的工作原理或者工作流程      

   一个HTTP请求过来之后,,首先被 filterDispatcher拦截(前置控制器), 然后struts2框架根据配置定位到action, 执行action方法之前, 先执行defaultStack拦截器栈, 然后执行action方法,然后返回result, 再经过拦截器, 构建响应内容,返回。

3. struts1和struts2,webwork之间的关系              

   struts2的大部分特性是来自于webwork的, struts1已经eof,  webwork和struts1两个社区合并之后变为struts2。

4. struts2中的action有几种实现方式      

  不继承任何类的Action,自定义一个Action   

  实现action接口,能够使用Action接口中预定的变量,实现规范编程   

  继承actionSupport类。        

5. 你对ThreadLocal模式的理解是什么? 请用简短的代码进行描述ThreadLocal能够做什么?   

    ThreadLocal不是一个线程,而是线程的一个局部变量。            

   为解决多线程并发提供了一种新的思路,为每个线程提供了一个独立的变量副本解决了变量并发访问的冲突问题。

   空间换时间 ,线程安全     main当中, new Thread

6. ActionContext对象是什么,里面包括了哪些信息? 谈谈ActionContext的设计为开发带来了什么好处?   

  ActionContext是action执行的上下文,上下文可以看做是一个容器,它存放是时Action在执行时需要的对象。     

  request,session, application, parameter,attr,action    

  actionContext采用threadLocal模式, 为我们共享信息, 这样我们可以在线程的任何地方获取到想要的数据,   结合ognl表达式,获取信息更加方便。

7. struts2当中的httpServletRequest对象和我们以前的request哪里不一样? 为什么产生这样的变化?    

    StrutsRequestWraper,在request的map中加入了valueStack, getAttribute方法被修改,可以获取valueStack中的信息。     

    为了让el获取到 所有actionContext的信息, 这样我们在struts2环境下,也可以使用el表达式,jstl等。 为了技术之间的兼容性。

8. Action是单例的吗?  单例有什么好处? 请写出常见的两种单例的实现方法?                       

    不是, 单例好处是 节省内存资源,控制了对象数量, 减少垃圾回收机制GC次数,提高了系统吞吐量。

9. ognl表达式和el表达式的不同?                                                                  

   一个c标签,一个s标签   

  ognl可以直接调用属性和静态方法。可以定义集合,可以实现sql语句的where条件过滤。  

    el表达式只能做输出和简单的运算。

10. 拦截器和过滤器的区别?    说说你用过的内置拦截器有哪些?                               

       区别:  

  1.拦截器和过滤器的概念非常类似。

  2.过滤器隶属于web容器,可以过滤掉一切请求(action,servlet,jsp,html....)      

  3.拦截器隶属于struts2,只能拦截action(无法拦截jsp页面请求)

  4.过滤器的内部属于函数回调实现,拦截器使用动态代理实现。      

11.  实现自定义拦截器有哪几种方式?  应该注意什么? 写出如何配置?                             

  1.直接或间接实现接口 com.opensymphony.xwork2.interceptor.Interceptor  

  2.继承    com.opensymphony.xwork2.interceptor.AbstractInterceptor       

  通过<interceptor>元素来定义拦截器,通过<interceptor-ref>元素来使用拦截器。  

  如果为Action指定一个拦截器,则系统默认的拦截器将失去作用,为了继续使用默认的拦截器,需要手动引入默认的拦截器栈。          

12.  如果用拦截器实现一个登录控制,用文字描述!!                                              

  1. 登陆时记录user到 session   

  2. 实现自定义拦截器, 并配置,修改默认拦截器栈引用, 在拦截器中 看session中是否有user    

  3. 如果没有user, 则判断是否是login请求, 是则进入, 不是则跳到登陆页面,并提示用户必须登录。

   

posted on 2013-08-07 21:12  supber  阅读(807)  评论(0)    收藏  举报