创建用户库
将Struts2所需的包建成用户库,可以更加方便地进行管理和使用,这是一个好的习惯——编程从习惯开始。
1.选择菜单Window->Preferences->Java->Build Path->User Libraries。如图4:
(图4)
2.点击右侧的New…按钮,创建一个新的用户库,弹出如图5所示对话框:
(图5)
3.输入用户库的名称,如:Struts2,点击OK按钮,该对话框自动关闭。结果如图6所示:
(图6)
此时,右侧的按钮被点亮。
4.点击“Add JARS…”按钮,添加用户库所需的库文件,在Struts2中,至少要包含上文中提到的5个库文件。添加后效果如图7所示:
(图7)
5.点击“OK”完成。
开发第一个Struts2应用程序——世界,你好
开发WEB应用程序,本文使用了MyEclipse插件。该插件为收费软件,目前提供英文版和日文版,不同的版本可以运行在Windows、Linux等操作系统上。为了方便用户,MyEclipse有一个Full版,连同Eclipse一起安装,对于初学者而言,可以减少很多麻烦和困扰。
读者可自行去http://www.myeclipseide.com/网站下载该软件的共享版本。建议读者下载MyEclipse5.5(这也是笔者使用的版本),这个版本相对比较稳定,MyEclipse6.0还处于测试之中。
入门教程总是以HelloWorld作为学习的第一步,自然笔者也不例外。本示例从游览器输入网址,提交请求后在页面中显示“世界,你好”的信息。
1.新建WEB工程,如图8所示:
(图8)
2.点击“Next”,输入工程名,如图9所示:
(图9)
3.点击“Finish”完成。
4.现在将Struts2的库导入到工程中,右击工程名称弹出快捷菜单,选择Build Path->Add Libraries…,如图10所示。
(图10)
5.从弹出的对话框中选择“User Libraries”,如图11所示。
(图11)
6. 单击下一步,我们看到,上文中创建的用户库出现在列表中,在“Struts2”前的复选框上打勾,点击“Finish”完成。如图12。
(图12)
7.将Struts2所带的过滤器org.apache.struts2.dispatcher.FilterDispatcher配置到工程的web.xml文件中,默认情况下,该过滤器拦截请求字符串中以.action结尾的请求,并将该请求委托给指定的Action进行处理。最直观的表现就是调用Action的execute()方法。代码如下:
代码清单1:web.xml
8.创建包com.lizanhong.action,并在该包中创建HelloWorldAction类,该类继承自com.opensymphony.xwork2.ActionSupport。理论上,Action可以不继承任何类或实现任何接口,以增强程序的可测试性,这也是和Struts1.X不同的地方。但是,继承自ActionSupport可以减少更多的编码工作。
在ActionSupport中,定义了方法execute(),当用户向该Action发送请求时,会自动调用。程序代码如下:
代码清单2:HelloWorldAction.java
在工程类路径下创建struts.xml文件,这是Struts2的配置文件,类似于Struts1.x中的struts-config.xml,在struts.xml文件中可以配置Action、Bean、Interceptor等组件。
代码清单3:struts.xml
代码清单3中涉及到很多标签,以下是简单的解释:
9.result.jsp是一个非常简单的jsp页面,输出“世界,你好”。
代码清单4:result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'result.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
世界,你好. <br>
</body>
</html>
10.发布工程,在浏览器中输入:http://localhost:8081/Struts2Demo/helloworld.action,在控制台输出“Action执行了。”
11.在浏览器的结果