前言
之前在学校里面也有学过Struts2,由于一直迷恋在.net方向,上课也没有认真听。现在由于工作需要,要学会使用Struts2。在学习之前,了解一下Struts2还是有必要的。
详细的介绍百度百科里面都有,我也就不去复制过来了。但是,工作原理还是得详细了解了解。
一个请求在Struts2框架中的处理大概分为以下几个步骤
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类 ,这里,我们一般是从struts.xml配置中读取。
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
以上工作原理资料并非原创,本人只是复制过来方便查看。
创建JavaWeb项目
这个很简单,开发环境都搭建好的,点几下菜单,输入项目名称就OK了。MyEclipse — File — New — Web Project
引入Struts2架包
下载好Struts2的包之后,解压... 到了这步的时候,我深深的迷茫了,解压完毕看到lib文件夹里面二三十个jar包,我到底应该引入哪些呢,难道要全部引入?我找了找度娘,有人就给出方案了,就是打开Struts2带的那些例子(apps文件夹),把struts2-blank解压出来,就引入WEB-INF - lib 文件夹下面的jar包就是了。
为了以后简单一点,自己创建一个User Library。MyEclipse — Window — Preferneces — Java — Bulid Path — User Libraries
然后,在项目里面引入User Libraries,右击项目 — Build Path — Add Library — User Library — 选择刚刚创建的User Library吧。
新建Action
右击项目 — New — Class,Class要继承自com.opensymphony.xwork2.ActionSupport,要重写execute方法。
HelloAction.java代码如下:
1 package com.haijun.action; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class HelloAction extends ActionSupport { 6 public String execute() throws Exception{ 7 return SUCCESS; 8 } 9 }
web.xml和struts.xml配置
web.xml给加上struts2拦截器配置
1 <filter> 2 <filter-name>struts2</filter-name> 3 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>struts2</filter-name> 7 <url-pattern>/*</url-pattern> 8 </filter-mapping>
struts.xml如下(hello.jsp随便新建一个):
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 <package name="default" extends="struts-default"> 8 <action name="hello" class="com.haijun.action.HelloAction"> 9 <result>/hello.jsp</result> 10 </action> 11 </package> 12 </struts>
运行结果
以上这些流程都做过之后,一个HelloWorld项目就没问题了。现在来试试看,debug一下。右击项目 — Debug As — MyEclipse Server Application — Tomcat 6.x。然后打开浏览器,输入http://localhost:8080/HelloStruts2/hello,能成功跳转到hello.jsp表示成功。
我的开发环境为:MyEclipse 6.0.1,Struts 2.3.8,Tomcat 6.0,jdk 1.6