美文网首页
Struts2入门

Struts2入门

作者: pr0metheus | 来源:发表于2018-05-12 14:01 被阅读0次

    1. struts2历史简述

    struts出现已经很久了,2006年底~2007年初发布了2.0GA版(稳定版),struts1与struts2他们之间除了名字一样之外其它都不一样,struts2本身主要基于webwork,struts1与webwork合并成struts2,底层使用webwork

    现在企业如果用struts的话,基本只用struts2 ,(如果jsp/servlet原理掌握了之后学习MVC类的框架就很容易了)

    struts2依赖于其它很多库,例如XWORK(很核心的东西,在这基础之上进行扩展),还有OGNL语言

    struts2是一种前端到服务器端交互的一种框架,比较偏前端

    struts2不像servlet是单实例的,它是多例的

    2. struts2的作用

    我们都知道传统的servlet编程具有如下几个步骤:

    1. 获取请求参数值
    2. 封装到javaBean
    3. 调用service层服务
    4. 接收service层返回的数据,如果有必要的话对该数据进行加工
    5. 选择对应的视图来显示这些数据

    初步感觉,struts2的主要作用是起到了1、2、5。即接受请求数据并封装到javaBean,然后跳转到对应的视图来显示这些数据

    3. MVC优点

    1. 最重要的一点,多个视图能共享一个模型,同一个模型可以被不同的视图重用,大大提高了代码的可重用性,哪怕不是一个web项目,只是一个桌面应用,我们只需要将service层之上的东西改一下就可以了,service层之下的东西改都不用改

    2. 由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的组件,【例如:service层改了,根据需求把某个参数改了,对Dao层是不会有任何影响的,上层只是会访问下层给它提供的这种服务,下层是绝对不会访问上层的,对上层一无所知,也不知道是web应用还是桌面应用,严格单向依赖关系】

    3. 此外,控制器提高了应用程序的灵活性和可配置性,控制器可以用来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段

    4. 快速搭建struts2环境

    1. 首先在myeclipse中新建一个web工程

    2. 然后导入能成功启动struts2的最少jar包,如下图所示:

    struts2成功启动最少所需jar包.png
    1. 编写web.xml文件,因为struts2是以Filter的方式来将自己纳入到web应用中的:

      web.xml配置.png
    2. 编写一个login.jsp文件:

    login.jsp.png
    1. 编写一个action:
    LoginAction.png
    1. 在src目录下编写一个struts.xml文件,该文件是struts的核心文件:
    struts.xml.png
    1. 编写一个result.jsp文件,用于显示结果:
    result.jsp.png
    1. 测试:

    首先访问web应用并输入用户名和密码,如下图所示:

    测试_login.jsp.png

    点击提交后,显示如下结果:

    测试_result.jsp.png
    1. 至此,我们整个strust框架就简单的跑通了

    5. struts2的执行流程

    1. 由于struts2是通过Filter来将自己纳入到web应用中的,而Filter在web应用启动的时候就会被实例化,在这个时机里,struts2会去解析struts-default.xml、struts-plugin.xml以及struts.xml文件,为之后的请求处理做好充足准备

    2. 当客户端向服务器端发出一个http请求的时候,就会被struts2的StrutsPrepareAndExecuteFilter过滤器所拦截到, 然后它会去查看struts.xml文件,寻找与该请求所匹配的action

    3. 找到action后,将其实例化,并将请求参数值赋予到该action所对应的属性中(这里强调一点,是通过set方法来赋值的,所以与属性名无关,在参数传递之前会调用struts组件来进行类型转换,以便顺利调用方法

    4. 自动赋值完成后,会将这些参数值存入到request作用域中

    5. 调用action中的execute方法,获得一个字符串结果

    6. 通过该字符串结果,在struts.xml中寻找到与之对应的result,默认通过forward的方式进行跳转

    6. struts2中的package介绍

    一个package可以有多个action,一个struts可以有多个package,package作用和java中包的概念类似,起到分门别类的作用,package中的name属性只要起的有意义就行,而extends是一个很重要的属性,因为package也支持继承概念和java一样,struts-default也是一个package,它里面的东西也可以完全的被继承下来,之所以那些值能自动赋值是因为struts-default包下有一系列组件来完成该功能的,我们继承过来后,当前package就有此功能了

    7. 使用myeclipse生成struts2的帮助文档

    1. 首先新建一个java工程

    2. 导入struts2下的源码到myeclipse如下图所示:

    struts2源码位置.png myeclipse导入struts2源码.png
    1. 发现有一系列的报错,很正常,因为之前就讲过struts2依赖很多的库,因此我们要将struts2所依赖的jar包导入进来 (struts2-core-2.2.1.1除外,因为我们已经导入了该源码)
    导入struts2所依赖的jar.png
    1. 导入struts2所需依赖的jar包后的工程状态如下图所示:
    导入jar包后的工程状态.png

    还有一处报错,是因为该包下的类引用了HttpServletRequest类,而我们还没有导入该jar包,从tomcat\lib目录下找到servlet-api与jsp-api并将其导入到该工程下,这时候myeclipse对于该工程就没有提示任何报错了

    jar包导入完毕后的工程状态.png
    1. 使用myeclipse下的javadoc命令来生成帮助文档即可:
    自动生成doc.png

    8. struts2对于配置文件的解析顺序

    1. struts-default.xml
    2. struts-plugin.xml
    3. struts.xml

    这样的解析顺序也是非常符合逻辑的,因为我们自定义的struts.xml中一定会有个性化的配置,而托这解析顺序的福,我们可以将struts-default.xml中一些配置进行覆盖,从而来实现我们的需求

    9. 总结

    在学习struts框架之前一定要掌握jsp/servlet,否则会越学越慌张,越学越不知所措,勿在浮沙筑高台

    10. 内容引用来源

    <<张龙J2EE视频>>

    相关文章

      网友评论

          本文标题:Struts2入门

          本文链接:https://www.haomeiwen.com/subject/tbifdftx.html