简单例子
先做一个最简单的struts的例子在浏览器中请求一个action然后返回一个字符串到jsp页面上显示出来
第一步把struts最低配置的jar包加入的项目中
commonsloggingjar
freemarkerjar
ognljar
strutscorejar
xworkjar
第二步在webxml中加入拦截器配置
<filter>
<filtername>struts</filtername>
<filterclass>orgapachestrutsdispatcherFilterDispatcher</filterclass>
</filter>
<filtermapping>
<filtername>struts</filtername>
<urlpattern>/*</urlpattern>
</filtermapping>
第三步把空的strutsxml配置文件放到项目src下面
<struts>
</struts>
第四部编写自定义的action类
package test;
import comopensymphonyxworkActionSupport;
public class HelloAction extends ActionSupport {
private String str;
public String hello() {
thisstr = hello!!!;
return success;
}
public String getStr() {
return str;
}
public void setStr(String str) {
thisstr = str;
}
}
第五步编写strutsxml配置文件
<struts>
<package name=test namespace=/np extends=strutsdefault>
<action name=hello class=testHelloAction method=hello>
<result name=success>/hellojsp</result>
</action>
</package>
</struts>
第六步编写hellojsp文件
<%@ page language=java contentType=text/html; charset=UTF pageEncoding=UTF%>
<%@ taglib prefix=s uri=/strutstags%>
<!DOCTYPE html PUBLIC //WC//DTD HTML Transitional//EN>
<html>
<head>
<meta httpequiv=ContentType content=text/html; charset=UTF>
<title>Test</title>
</head>
<body>
<h><s:property value=str/></h>
</body>
</html>
第七步启动tomcat在浏览器中访问
hello 是项目名字
np 命名空间对应namespace里面的字符串
helloaction 其中hello对应action里面的字符串action表示请求的是一个action
运行机制
)客户端在浏览器中输入一个url地址
)这个url请求通过http协议发送给tomcat
)tomcat根据url找到对应项目里面的webxml文件
)在webxml里面会发现有struts的配置
)然后会找到struts对应的strutsxml配置文件
)根据url解析strutsxml配置文件就会找到对应的class
)调用完class返回一个字String根据strutsxml返回到对应的jsp
struts流程
上图来源于Struts官方站点是Struts 的整体结构
一个请求在Struts框架中的处理大概分为以下几个步骤
) 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
) 这个请求经过一系列的过滤器(Filter)
) 接着FilterDispatcher被调用FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
) 如果ActionMapper决定需要调用某个ActionFilterDispatcher把请求的处理交给ActionProxy
) ActionProxy通过Configuration Manager询问框架的配置文件找到需要调用的Action类
) ActionProxy创建一个ActionInvocation的实例
) ActionInvocation实例使用命名模式来调用在调用Action的过程前后涉及到相关拦截器(Intercepter)的调用
) 一旦Action执行完毕ActionInvocation负责根据strutsxml中的配置找到对应的返回结果
Struts的核心就是拦截器Strutsxml中所有的package都要extends=strutsdefault同理与所有的Java类都要extends自Object一样strutsdefaultxml里面就是要做以上事情