struts2 的主要作用是替代了servlet,之前通过servlet处理的消息现在通过定义的action(和链接匹配对应的各种方法)进行处理,它通过在web.xml配置自己的过滤器,将前端到来的请求拦截后进行处理。拦截器配置:
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
主要机制:通过struts.xml中的配置,让前端请求和定义的action方法绑定,配置如下:
<struts>
<package name="three" namespace="/file" extends="struts-default">
<action name="upload" class="com.UploadAction" method="execute">
<result name="success" type="dispatch">/login.jsp</result>
</action>
</package></struts>
解释:
package:struts2使用package来组织模块
namespace:对action 进行逻辑的划分,如果namespace不为空则前端访问时action前需要加上namespace,如http://localhost:8080/file/upload
extends:当前包继承哪个包,继承的,即可以继承其中所有的配置,默认继承struts-default,
action :对应一个action,name表示前端的请求如:http://localhost:8080/file/upload,
class:表示action所在的类
method:表示action绑定的方法名,默认为:exceute 可不显示显出
result:name 方法的返回值默认为success可不显示写出 type:结果执行类型,默认dispatch(转发) redirect(重定向) redirectAction(重定向到一个action) chain(转到一个action)
在action中通过ServletActionContext类中的方法可以获取servlet的一些对象,并获取页面信息
struts2对页面传递过来的数据可以很好的读取:
如果是普通的public类变量如果名字和页面传递过来的一致则strut2会自动的为变量赋值 ,非public 变量则需要生成set方法
如果是对象,则表单的数据名称要以定义的(对象.对象变量名)的方式传递到action中并且action中需要生成该对象的get和set方法
参考:http://blog.sina.com.cn/s/blog_76b2c48101019rf7.html