Struts
Struts作为MVC2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为成功的Web框架,Struts自然拥有着众多的优点:
但是,所谓“金无赤金,人无完人”,Struts自身也有不少的缺点:
这些缺点随着Web的发展越来越明显。这就促生了Struts 2.0,它的诞生能很好的解决上述问题。 好啦,废话就不多说了,现在就让我们在深入剖析一下struts的工作原理!
1. 什么是Struts2核心功能
(1)允许POJO(Plain Old Java Objects)对象 作为Action
(2)Action的execute 方法不再与Servlet API耦合,更易测试
(3)支持更多视图技术(JSP、FreeMarker、Velocity)
(4)基于Spring AOP思想的拦截器机制,更易扩展
(5)更强大、更易用输入校验功能
1.用户发送一个HttpServletRequest请求
2.请求会经过一系列的过滤器来传递
3.调用filterdispatcher,询问actionMapper是否需要调用某个action,如果需要就把请求转交给actionproxy
4.actionproxy会根据配置文件struts.xml文件找到具体的action
5.actionproxy会在actionivocation的前后,调用action有关的拦截器interceptor
6.action执行完,根据配置文件struts.xml找到具体的返回结果
7.最后,httpServletreponse响应通过web.xml文件中配置的过滤器返回
2.从MVC角度理解struts框架
1.filterDispatcher—控制层:
负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作action,让这个action来处理用户的请求
2.Action—模型层:
负责把用户请求中的参数组装成合适 的数据模型,并调用相应的业务逻辑进行真正的处理,然后产生一个视图展示所需要的数据
3.Result—视图层:
视图层主要与用户进行交互,将控制层的数据以合适的形式展示给用户
* 一、后台子控制器获取jsp所传递的参数的几种形式
* 1、implements ModelDriven
* 2、通过set/get获取jsp页面的值
* 3、通过对象导航的方式获取jsp页面的值
*
* 二、后台子控制器向jsp传递结果的几种形式
* 1、通过传统的作用域传值(与j2ee容器进行传值)
* 就是需要获取到四大作用域即可
* 2、通过值栈进行传值
* 只需要在子控制器提供set、get方法,即可实现传值功能(calAction)
2、Struts1 与 Struts2的关系:
两者语法完全不相同。Struts2是基于WebWork2框架开发的,只是应用了Struts1的原理和模式,可以将Struts2看作是换了品牌的WebWork2
域对象: page request session application
3、Struts2的下载和安装
http://struts.apache.org/download.cgi 去下载Struts2 最新版
struts2目录结构
apps 该文件夹包含了基于struts2 的示例应用,这些示例应用对于学习者是非常有用的
docs 该文件夹下包含了struts2 相关文档,包括struts2 快速入门、struts2的文档以及API文档等
lib 该文件夹下包含了Struts2框架和核心类库,以及struts2第三方插件类库
src 该文件夹下包含了Struts2框架的全部源代码
开发时没必要将lib目录下jar文件全部复制到项目中
Struts运行必要jar包
struts2-core-2.3.1.1.jar:Struts 2框架的核心类库
xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xwork
ognl-3.1.15.jar:对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.26.jar:Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar:ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.3.3.jar: 文件上传组件,2.1.6版本后需要加入此文件
commons-io-2.5.jar:传文件依赖的jar包
commons-lang3-3.6.jar:对java.lang包的增强
开发中为了方便导入,可以使用app/struts2-blank.war 携带jar包
4、Struts2的环境搭建:
1.导入工程jar包
2.配置Struts2核心过滤器(web.xml)
3.准备Struts2的配置文件(Struts.xml) 可能配置文件无提示,原因是缺少了对应的约束文件,可自行设置(Struts2下载文件中有)
注意:配置文件时引入dtd可能会出现不生效,无提示等问题,我做了详细的解决步骤,步骤如下:
打开Window------->preferences------->搜索xml-------->找到XML Catalog------->add------->File System找到根目录下的dtd文件
然后在Key type中选中URL------>Key里面填写http://struts.apache.org/dtds/struts-2.5.dtd(这里你dtd什么版本就填写什么版本)路径------>然后点击OK同步就好了
5、配置web.xml
打开web.xml,修改配置参数,修改后的具体配置如下。
1009_struts_01
struts
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
struts
/*
配置web.xml的
6、配置struts.xml
首先我们在src目录下建立文件夹专门放struts.xml等一些文件,当然你也可以直接在src目录下建立,为了好区分,我这建立文件夹
7、编写Action处理访问Struts2框架请求
package com.zking.one.web;
public class helloAction {
public String execute() {
System.out.println("hello struts");
return "success";
}
}
8、 编写JSP页面
helloword.jsp (发起请求页面)
9、部署运行
在Tomcat中运行该项目,然后打开浏览器,在地址栏中输入:http://localhost:8080/1009_struts_01/demo1.jsp
效果就会出来了!
点击helloword就会进入成功回调secess页面 就会弹出跳转成功!
好了,我的struts介绍就到这里了,希望能够帮助到你们!