Struts详细归纳知识点

来源:互联网 发布:下载神圣计划软件 编辑:程序博客网 时间:2024/05/01 14:24

Struts重点题

1.     MVC(Model,View,Controller)是一种强制性地将应用程序的输入,处理和输出分开的设计模式。

2.     MVC的优点:降低耦合度,增强程序可扩展性。

3.框架的优点:框架封装了大量的底层操作,能更快的开发应用程序

                            为程序提供清晰的结构,并增强程序的内聚性

                            可以使代码更容易测试

4. struts是实现MVC设计模式的优秀框架,它定义了通用的控制器,通过配置文件与视图,以Action概念对用户请求进行封装,使代码更清晰易读。

5. Hiernate是一个数据持久化框架,能够使开发者以面向对象的方式操作关系型数据库,极大地提高了数据层的开发效率。

6. spring是一个轻量级的框架,主要作为依赖注入容器与AOP实现存在,spring相当于一个大型工厂,创建并管理应用程序中的组件,降低了组件间的依赖性,实现了低耦合,提高了应用程序的可维护性,可扩展性。

7. struts1框架中有两种控制器:核心控制器ActionServlet和业务逻辑控制器Action。

8.Action的execute()方法,通过ActionMapping对象的findForward()方法返回ActionForward对象转发至具体的JSP页面。

9. Struts1中的Action是业务逻辑控制器,用于处理单个业务逻辑。

10.Struts1的缺点:struts1与JSP/Servlet紧密耦合,所以导致了很多不可避免的设计缺陷。

11.Struts2使用了WebWork的设计核心,Struts2体系结构主要包括三个部分:Struts2控制器组件(FilterDispathcher)、Struts2配置文件、Struts2标签库。

12. 为什么要用struts?

JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

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

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

14. 7. 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组件生成动态网页,返回给客户;

15. struts2中配置包时需要继承自Struts-default;

       ActionContext对象以解耦的方式访问Servlet API ;

       ServletActionContext对象以耦合的方式访问Servlet API;

       继承自ActionSupport类可以实现Struts2的数据校检功能;

16. 动态方法调用格式:ActionName!methodName.action  ;

17. Struts2的默认结果类型是:dispatcher结果类型;

18.拦截器是动态拦截Action调用的对象,它提供了一种机制,使开发者可以定义在一个Action执行的前后执行的代码,也可以在一个Action执行前阻止其执行。创建自定义拦截器必须实现Interceptor接口。

19. 拦截器的应用场合:拦截器一般应用于权限访问控制,事务管理以及日志记录等场合。

20.什么是值栈?

值栈(Value Stack)是Struts 2框架的核心概念。所有核心组件都以某种方式与之进行交互,它提供对上下文信息和执行环境中元素的访问机制。

21. OGNL表达式例子(值栈是OGNL的根)

OGNL示例

    

address.postcode

调用getAddress().getPostcode()时返回的值。这种存取模式就是圆点符号,通过这个方式,用句点将每个属性名分开以提供对象图内部的导航机制

#session['user']

从HTTP会话中获得用户对象

!required

如果调用isRequired()方法的返回值为false,则本表达式返回true

required && result.size()>1

先调用isRequired()方法,然后执行result集合的元素个数是否大于1的逻辑运算,然后返回两个调用结果进行逻辑“与”运算后的结果

hasActionErrors()

返回hasActionErrors()方法的调用结果

[2].id

调用值栈里第3个元素(栈最上面的索引是0)的getId()方法。当你知道值栈里的准确内容时,该方法非常有用。使用该方法寻找属性对象比通过索引在值栈中查找对象更加有效和准确

top

返回值栈最顶层对象

results.{name}

调用结果集合中所有元素的getName()方法,所有方法返回值构成一个返回集合。这种操作称为投影(projection

role in {'admin','user'}

role not in {'admin','user'}

确定getRole()方法返回的值是否在'admin''user'构成的集合中

@com.static.Constants@getRoles()

调用Constants类的静态方法getRoles(),返回其值

@com.static.Constants@USER_NAME

返回Constants类的静态属性USER_NAME的值

 

22.Struts2的标签库

一、数据访问标签

       <s:property>标签用于输出指定的值

       <s:set>用于创建一个变量,并放入某个范围中

       <s:bean>用于创建javaBean实例

       <s:date>用于格式化输出一个日期

二、控制标签

       (条件标签)<s:if><s:else><s:elseif>来实现分支流程控制(<s:if>标签可以单独使用,<s:else>和<s:elseif>必须与<s:if>标签结合使用)

四、迭代标签

<s:interator>对集合进行迭代

五、表单标签

<s:form>用于生成一个HTML form表单

<s:submit><s:reset>生成HTMl中的提交按钮和重置按钮

<s:textfield><s:password>创建表单上的输入框,和密码框

<s:select>生成HTML中的<select>元素

<s:doubleselect>用于生成两个用于级联的<select>下拉框元素

<s:checkboxlist>创建多个复选框

六、非表单标签

       <sx:datetimepicker>标签用于弹出日历选择框

       <sx:tree><sx:treenode>结合使用可以生成树形结构

       

原创粉丝点击