2.3 在Eclipse中开发Struts 2
在Eclipse中开发Struts 2应用同Struts 1类似,惟一不同的是MyEclipse插件中没有提供添加Struts 2支持的插件,因此必须手动添加Struts 2框架的核心类库和手动添加Action以及配置资源文件。
2.3.1 为项目添加Struts 2支持
目前还没有Eclipse插件能提供对Struts 2的支持。因此只能通过手动的方式将Struts 2框架的核心类库复制到Web应用的lib目录下,从而为Web应用添加Struts 2支持。
下面演示如何通过Eclipse来开发Struts 2应用。
步骤如下。
(1)新建Web项目,项目名为“Struts2Demo01”,如图2.7所示。
(2)将struts-2.0.11.1中的lib文件夹下的“common-logging-1.0.4.jar”、“freemarker-2.3.8.jar”、“struts2-core-2.0.11.1.jar”、“xwork-2.0.4.jar”和“ognl-2.6.11.jar”类库复制到Web项目的WEB-INF/lib目录下,如图2.8所示。
图2.7 新建项目文件结构
图2.8 项目文件结构
(3)配置核心Filter,编辑Web项目中的“web.xml”配置文件,在配置文件中增加Struts 2核心Filter的配置。编辑后的“web.xml”配置文件代码如下。
<? xml version="1.0" encoding="UTF-8"? > <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <! --定义核心Filter FilterDispatcher --> <filter> <! -- 定义核心Filter的名称 --> <filter-name>struts2</filter-name> <! --定义核心Filter的实现类 --> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <! --核心Filter的名称 --> <filter-name>struts2</filter-name> <! --使用该核心Filter来接受所有的Web请求 --> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
经过上面的几个步骤,就成功地在Eclipse中为Web项目添加上了Struts 2框架支持。
2.3.2 添加控制器Action
因为缺少Eclipse插件的支持,所以只能通过在Eclipse中添加普通Java类方式来添加Struts 2中的控制器Action。下面来介绍如何在Eclipse中添加控制器Action。
步骤如下:
(1)选择“File”→“New”→“Class”命令,或者在src目录下选择“File”→“New”→“Class”命令,打开“New Java Class”对话框,在“Package”文本框中输入包名“net.hncu. struts2.action”,在“Name”文本框中输入类名“LoginAction”,如图2.9所示。单击“Finish”按钮完成控制类的创建。
(2)为Action添加属性。Struts 2的Action包含的多个属性用来封装用户请求的参数。通过用户请求的参数添加对应的属性代码如下所示。
package net.hncu.struts2.action; public class LoginAction { private String uname; private String upassword; }
(3)可以通过Eclipse来自动生成属性的setter和getter方法。在文本编辑窗口中单击鼠标右键,选择“Source”→“Generate Setters and Getters”命令,弹出“Generate Getters and Setters”对话框,如图2.10所示。
在以上对话框中选择相应属性前的复选框就可以为该属性添加setter和getter方法。如果需要选择所有的属性,则可以单击右边的“Select All”按钮,然后再单击“OK”按钮完成添加。添加setter和getter方法后代码如下。
图2.9 “New Java Class”对话框
图2.10 ”Generate Getters and Setters”对话框
package net.hncu.struts2.action; public class LoginAction { private String uname; private String upassword; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getUpassword() { return upassword; } public void setUpassword(String upassword) { this.upassword = upassword; } }
(4)在Action中添加execute()方法并抛出异常,代码如下所示。
public String execute() throws Exception { //new一个LoginCheck对象 LoginCheck lc = new LoginCheck(); //调用业务逻辑组件的判断功能来判断 if(lc.isLogin(getUname(), getUpassword())){ //如果为合法用户,在request范围中添加属性login,其属性值为true. ServletActionContext.getRequest().setAttribute("login", "true"); //返回success字符串 return "success"; }else{ //返回failure字符串 return "failure"; } }
因为MyEclipse插件暂时还没有提供支持基于Struts 2框架的开发,所以只能手动添加Action。不过这种手动的添加也非常简单,容易掌握。
2.3.3 添加并配置struts.xml
在Struts 1中使用配置文件“struts-config.xml”来配置Action以及ActionForm。但是在Struts 2中不再有“struts-config.xml”文件,取而代之的是“struts.xml”。
“struts.xml”必须配置到WEB-INF的classes目录下,因此在Eclipse开发环境下可以选择在src目录下新建“struts.xml”文件,这样Eclipse会自动保存到classes目录下。
在“struts.xml”文件中配置Action,其中包括指定Action的实现类,以及Action处理结果(返回的字符串)与视图资源文件之间的映射。下面的“struts.xml”文件中配置了LoginAction,代码如下所示。
<? xml version="1.0" encoding="UTF-8" ? > <! DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <! -- struts为配置文件根元素--> <struts> <! -- Action必须放在指定的包名空间中--> <package name="struts2" extends="struts-default"> <! -- 定义login的Actin,其实现类为net.hncu.struts2.action.LoginAction--> <action name="login" class="net.hncu.struts2.action.LoginAction"> <! -- 定义处理结果与视图资源之间的关系--> <result name="success">/login_success.jsp</result> <result name="failure">/login_failure.jsp</result> </action> </package> </struts>
2.3.4 增加视图资源并部署Web应用
首先将业务逻辑组件LoginCheck复制到src目录下,注意应该为LoginCheck添加包名。然后将3个JSP文件复制到项目的WebRoot目录下。
部署Struts 2应用和Struts 1完全相同,具体步骤如下。
(1)在MyEclipse主界面中单击部署Web应用的工具按钮。
(2)在弹出的对话框的“Project”下拉列表中选择需要部署的Web应用。单击右边的“Add”按钮,将打开用来选择Web服务器的对话框。
(3)在“Server”下拉列表中选择开始配置好的“Tomcat 6.x”服务器,其他选项采用默认配置。单击“Finish”按钮,完成服务器的配置,页面回到Web应用部署对话框,单击“OK”按钮完成Web应用部署。