Struts2基础学习(一)

Struts是什么?

翻译:支柱,支干,来源于旧建筑和旧式飞机使用的金属支架
Struts是流行和成熟的基于MVC设计模式的Web应用程序框架。

使用Struts的目的

为了帮助我们减少在运用MVC设计模型来开发Web应用时间。
MVC模式
JSP+JavaBean=Model-1:适用于小型网站的开发
JSP+Servlet+JavaBean=Model-2:最典型的MVC模式
MVC是模型(Model)、视图(View)和控制器(Controller)的缩写;MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。在Struts中,Controller就是action,JSP为View,JavaBean为Model。

image.png

Struts实例程序创建步骤

(工具Myeclipse10+tomcat7+jdk1.8)
1、创建Web Project

2、导入jar包,在src下建立struts.xml
可在下面网址下载jar包
Struts官方网站:http://struts.apache.org/
历史版本:http://archive.apache.org/dist/struts/

image.png

向工程中导入jar包
Struts2的基础包
1.、commons-fileupload(上传下载包);
2、commons-io(输入输出包);
3、commons-lang 3-3.2(基础包);
4、commons-logging(日志包);
5、freemarker(模板引擎,通过模板生成文本输出的通用工具);6、structs2-core(核心包);
7、xwork-core(一些类基于xwork);
8、ognl(表达式);
9、javassist-3.11.0.GA.jar(解析java类文件的一个包)
image.png

3、打开web.xml,添加


    [过滤器名]
       
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    


    [过滤器名]
    /*
    

image.png

4、打开struts.xml,假如文档类型定义DTD(用myeclipse直接添加struts可以不用添加jar包)

image.png

image.png

image.png

如果使用的是上面添加的2.3的jar包版本DTD为
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">

5、创建action,新建class(命名hello)继承ActionSupport类,默认执行ActionSupport的execute() 执行成功返回SUCCESS.


image.png

6、在struts.xml中配置action



    
        /result.jsp
        
    

image.png

7、在WebRoot下创建result.jsp

8、发布运行项目,打开浏览器访问http://localhost:8080/[项目名]/hello.action。

Struts2工作原理

1.客户端通过httpservletrequest向servlet容器,也就是tomcat提交一个请求,

2.这个请求,会经过一些列的过滤器,如ActionContentClearUp过滤器,最终被struts核心过滤器过滤,
也就是FilterDispatcher

3.从struts2.1.3版本以后struts的核心控制器发生了变化,变成了PrepqreAndExecuteFiletr,核心过滤器过滤以后,可以让用户在准备和执行之间写一些自己的过滤器

4.调用访问ActionMapping,决定是否调用某一action,

5.如果action请求的是jsp页面或者是其他资源,不会调用某一action,

6.如果决定调用某一action,ActionMapping会将控制权委派给ActionProxy也叫action代理,

7.这是action代理会通过一个Configuration Manager也就是配置管理器对象加载struts核心配置文件,也就是struts.xml。

8.如果在struts.xml找到需要创建的action,ActionProxy会创建一个Action Invocation实例,action Invocation包括一些列的拦截器和action,

9.先顺序执行一系列的拦截器,然后执行action处理,

10.返回一个结果,通过result返回一个视图或者调用另外某个action。

11.当返回这个视图以后,将之前执行过的拦截器反向执行一遍,

12.然后通过response响应客户端的请求。

image.png

你可能感兴趣的:(Struts2基础学习(一))