第一个Struts2程序,我们需要完成下面的事项:
l 在web.xml中增加Filter(过滤器)配置
l 编写Action
l 编写Struts2的配置文件
l 编写JSP
引入依赖包
我们的第一个Struts2应用程序,将基于最新的struts2版本:struts2.2.1版本。我们首先创建一个Web应用程序,引入下列依赖包:
这些依赖包,可以从Struts2.2.1的解压目录下的apps/struts2-blank-2.2.1.war文件中获得。
Commons-fileupload和commons-io是文件上传必须的依赖包。
Freemarker是struts2中的HTML相关标签库(taglib)的依赖包
Javassist和ognl是OGNL相关依赖包(OGNL是Struts2中的表达式语言,非常核心的依赖包)
Struts2-core就是struts2本身的类库
Xwork-core是struts2非常核心的依赖包,正是它确定了请求处理的基本过程(它原本属于webwork)。
在web.xml中增加过滤器配置
1 <filter> 2 3 <filter-name>struts2</filter-name> 4 5 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 6 7 </filter> 8 9 10 11 <filter-mapping> 12 13 <filter-name>struts2</filter-name> 14 15 <url-pattern>/*</url-pattern> 16 17 </filter-mapping>
这个过滤器要过滤所有的请求。
编写Action类
这个Action类已经是简单到不能再简单了!
增加Struts2的配置文件
1 public class FirstAction { 2 3 public String hello(){ 4 5 //每次调用,都是不同的对象! 6 7 System.out.println("世界,你好"+this); 8 9 return "success"; 10 11 } 12 13 }
在类路径的根目录下,添加一个名为struts.xml的文件,内容如下:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 3 <!DOCTYPE struts PUBLIC 4 5 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 6 7 "http://struts.apache.org/dtds/struts-2.0.dtd"> 8 9 10 11 <struts> 12 13 <package name="test" namespace="/test" extends="struts-default"> 14 15 <action 16 17 name="hello" 18 19 class="cn.com.leadfar.struts2.action.FirstAction" 20 21 method="hello" 22 23 > 24 25 <result name="success">/first.jsp</result> 26 27 </action> 28 29 </package> 30 31 </struts> 32 33
Package中的name属性是必须的,它可以是随意的一个名称,namespace是用来定义访问Action的URL地址前缀(马上就介绍如何访问这个Action),它必须以“/”开头;extends表示本配置是继承另外一个package中的配置信息(struts-default是struts2中的默认package)。
Action配置中的name是用来定义如何访问Action的;class当然就是对应的action类了;method表示访问action的哪个方法;result定义的是这个action调用的返回值代表的是转向哪里!
编写JSP
请随意编写一个JSP:first.jsp,并放置在web应用部署的根目录下。
访问Action
请在浏览器地址栏输入:
1 http://localhost:[端口]/[Context Path]/test/hello.action