零基础学Struts
上QQ阅读APP看书,第一时间看更新

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">
                  <! -- 定义loginActin,其实现类为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应用部署。