Struts2浅谈
Struts2是基于struts 和WebWork的技术基础上的服务于Web的一种MVC框架 ,Struts 2以WebWork为核心 ,采用拦截器的机制来处理用户的请求 ,业务逻辑控制器能够与Servlet API完全脱离开 。
Struts2框架的大概处理流程如下:
1、加载类(FilterDispatcher)
2、读取配置(struts配置文件中的Action)
3、派发请求(客户端发送请求)
4、调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action )
5、启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)
6、处理业务(回调Action的execute()方法)
7、返回响应(通过execute方法将信息返回到FilterDispatcher)
8、查找响应(FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROR,将跳转到哪个jsp页面)
9、响应用户(jsp--->客户浏览器端显示)
Struts2优点:
相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大
Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的pojo。
Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。Struts2中的Action不再依赖于Servlet API。
ActionSupport基类:
ActionSupport基类实现了Action等其它一些接口。其中定义了五个标准的返回值 ,当然我们可以自己随意定义返回的名字
String SUCCESS = "success"; //默认是 SUCCESS 类型
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";
Mvc模型:
Struts2是基于mvc开发模式的,那什么是mvc模式:
模型(M): Model层实现系统中的业务逻辑,通常可以用JavaBean来实现
视图(V):View层用于与用户的交互,通常用JSP来实现
控制器(C):Controller层是Model与View之间沟通的桥梁,它分派用户的请求并选择恰当的视图以用于显示
Struts配置:
1.新建web工程
2.下载struts-2.3.3-all.zip,解压,将里面的相关包copy到WEB-INF的lib目录下
3.在src目录下新建struts.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""HTTP://struts.apache.org/dtd/struts-2.0.dtd">
<struts>
</struts>
4.在web.xml文件中添加如下代码:
<filter>
<filter-name>Struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5.运行项目。如若不报错这配置成功可以开始做项目。
注意:
1.刚开始测试时会出现很多问题 那是因为该导入的包没有导入
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
struts2-core-2.3.3.jar
xwork-core-2.3.3.jar
试着将这些包都导入 如果还不行再导入其他包
2.报错:The markup in the document following the root element must be well-formed.
检查一下web.xml文件中所有的标签是否都放到<web-app></web-app>里面了
3.struts.xml要求必须在WebRoot下WEB-INF的classes目录下。我们可以在src下建立 struts.xml文件,在src根目录下建立的文件eclipse都会自动编译到classes目录下,
系统运行时解析的是classes目录下的文件而不是src下的文件。
4.报错 Could not find action or result
There is no Action mapped for namespace [/] and action name [login] associated with context path [/Struts2]. - [unknown location]
如果struts.xml文件位置没错的话 那就是因为文件的内容有误 仔细检查每个单词 每个字母 肯定能找出错误。