第一次发帖,第一次学习struts,和大家一起学习,昨晚本来写好了,保存到草稿,今天才发现没有了,why?
1.创建web工程
俺使用的是Myeclipse6.0.1,file->new->web project
2.增加struts2的支持
添加struts2框架所必须的包:Commons-logging-1.0.4.jar、freemarker-2.3.8.jar、ognl-2.6.11.jar、struts2-core-2.0.11.jar、xwork-2.0.4.jar(后面可能因为版本不同会有略小的差距),下载地址: http://struts.apache.org/2.x ,下载的文件夹lib下包含了Struts2的核心类库,以及Struts2的第三方插件,从lib下找到这这五个包复制到WEBROOT->WEB-INF->lib里。
3.配置web.xml文件
打开WEBROOT->WEB-INF->web.xml文件,代码如下:
4.编写LoginAction.java
在src目录下新建new一个名为action的package,在action里新建一个java类,名为LoginAction,代码如下:
5.添加并配置struts2的struts.xml配置文件
在src根下新建文件struts.xml(不能改名)文件,代码如下:
6.创建jsp页面,在WEBINF下新建login.jsp,success.jsp,fail.jsp,login.jsp的代码如下:
7.运行调试
启动tomcat,输入http://localhost:8080/struts1/login.jsp,这个各个服务器的端口设置不一样,8080是俺MyEclipse自带的tomcat的端口,不知道为啥Firefox里面出现Not found错误,IE好使。
8.总结
总结下struts2的基本流程:
struts2的框架由三个部分组成,核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件,struts2框架为我们提供了核心控制器FilterDispatcher,而我们需要实现的是业务控制器和用户实现的业务逻辑组件。
a.核心控制器FilterDispatcher
我们在第三步配置的web.xml里面就配置了FilterDispatcher,它负责拦截所有的用户请求,也就是说我们输入url访问login.jsp的时候,拦截器发现login.jsp里面的<s:form action="/login.action">,它就会根据这个login.action去调用名为login的Action来处理该请求,而struts应用的Action都被定义在我们第五步时配置的struts.xml里面,<action name="login" class="action.LoginAction">
,name决定该Action处理哪个用户请求,而class属性决定了该Action的实现类,所以name就是login,class就是LoginAction
b.业务控制器
业务控制器就是用户实现的Action类的实例,Action类包含了一个execute方法,该方法返回一个字符串,该字符串就是逻辑视图名,当业务控制器处理完用户的请求后,根据处理的结果不同,execute方法返回不同字符串,每个字符串对应一个视图,也就是LoginAction中如果return "success",由于struts中定义了,<result name="success">success.jsp</result>,就会跳转到success.jsp页面,fail同理,事实上struts会定义很多的action,然后根据不同的action返回不同的字符串就可以响应不同的请求了。
c.处理流程
源码下载地址:http://download.youkuaiyun.com/source/1860862