Struts2理解

    Struts2是一个基于MVC设计模式的Web应用框架,在MVC设计模式中Struts2作为控制器(Controller)来建立模型与视图的数据交互。 Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,使业务逻辑控制器与Servlet API完全脱离开。

struts2运行原理如下:


<1>当WEB容器收到一个请求时,它将请求传递给一个标准的过滤器链(如ActionContentCleanUp)。

<2>FilterDispatcher被调用,它调用ActionMapper确定请求调用哪个Action,ActionMapper返回一个收集了Action信息的ActionMapping对象

<3>FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager)从配置文件中读取配置信息,然后创建ActionInvocation对象,ActionInvocation被创建的同时,填充了需要的所有的对象和信息,它在调用Acton之前会依次调用所用配置的拦截器(Intercepter)。

<4>一旦Action执行返回结果字符串,ActionInvocation负责根据struts.xml中的配置查找结果字符串对应的Result,然后执行这个Result,一般Resul会调用一些模板(JSP)来呈现页面。

<5>之后拦截器会被再次执行(顺序和Action执行之前相反),最后响应被返回给在web.xml中配置的哪些过滤器(FilterDispatcher等)。

Struts2的优缺点:


优点:

        (1)  实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。

        (2)  丰富的标签库,大大提高了开发的效率。

        (3) Struts2提供丰富的拦截器实现。

        (4) 通过配置文件,就可以掌握整个系统各个部分之间的关系。

        (5) 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。


        (6) Struts2的可扩展性高。Struts2的核心jar包中由一个struts-default.xml文件,在该文件中设置了一些默认的bean,resultType类型,默认拦截器栈等,所有这些默认设置,用户都可以利用配置文件更改,可以更改为自己开发的bean,resulttype等。因此用户开发了插件的话只要很简单的配置就可以很容易的和Struts2框架融合,这实现了框架对插件的可插拔的特性。

        (7) 面向切面编程的思想在Strut2中也有了很好的体现。最重要的体现就是拦截器的使用,拦截器就是一个一个的小功能单位,用户可以将这些拦截器合并成一个大的拦截器,这个合成的拦截器就像单独的拦截器一样,只要将它配置到一个、Action中就可以。

 

缺点:

        (1) Struts2中Action中取得从jsp中传过来的参数时还是有点麻烦。可以为Struts2的Action中的属性配置上Getter和Setter方法,通过默认拦截器,就可以将请求参数设置到这些属性中。如果用这种方式,当请求参数很多时,Action类就会被这些表单属性弄的很臃肿,让人感觉会很乱。还有Action中的属性不但可以用来获得请求参数还可以输出到Jsp中,这样就会更乱。假设从JSP1中获得了参数money=100000,但是这个Action还要输出到JSP2中,但是输出的格式却不同,money=100,000,这样这个Action中的money中的值就变了。

       (2) 校验还是感觉比较繁琐,感觉太烦乱,也太细化了,如果校验出错的只能给用户提示一些信息。如果有多个字段,每个字段出错时返回到不同的画面,这个功能在Strut2框架下借助框架提供的校验逻辑就不容易实现。
       (3) 安全性有待提高。Struts2曝出2个高危安全漏洞,一个是使用缩写的导航参数前缀时的远程代码执行漏洞,另一个是使用缩写的重定向参数前缀时的开放式重定向漏洞。这些漏洞可使黑客取得网站服务器的“最高权限”,从而使企业服务器变成黑客手中的“肉鸡”。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值