JavaEE eclipse+struts2开发环境搭建

struts简介

Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEE Web应用的MVC架构模式的应用框架,是MVC经典架构模式中的一个经典产品。

struts下载

关于JDK和eclipse的安装不再敖述,访问Apache Struts官网:http://struts.apache.org/download.cgi,选择下载Struts 2.5.X版本。这里有如下下载选项:
struts_download

建议选择Full Distribution选项,它包含struts2的核心库、源代码、文档和实例等。

下载完成后,将压缩包解压到任意目录下,打开struts-2.5.X文件,它有一个lib子目录,里面的文件就是我们进行Web应用开发所需的struts2核心jar包和struts插件jar包。

如果不清楚哪些jar包是struts的核心jar包的话,可以在下载struts2时选择Essential Dependencies Only选项,它就是struts2的核心jar包的压缩包。

struts-2.5.8的核心jar包有如下几个:
struts_core_jar

使用struts

在eclipse里创建一个动态Web项目,将struts2的核心jar包(如果需要其它struts2插件的支持,可以另外导入插件的jar包)拷贝到Web项目的WebContent\WEB-INF\lib目录下,此时的项目结构如下:
struts_project_structure

现在就可以在eclipse中使用struts2的API了。

第一个基于struts2的Web应用

下面编写一个基于struts2的Web应用。

在web.xml里配置Filter

第一步,需要在web.xml文件里配置struts2的Filter,如下所示:

<!-- web.xml -->

  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

StrutsPrepareAndExecuteFilter的配置和普通的Filter一样,只是<filter-class>需要使用struts2的Filter类。

这里需要注意,由于struts2的版本更新,有些包名有所改变,StrutsPrepareAndExecuteFilter所在的包也发生了变化,如下图:
struts_package_update

详细情况可以在Apache Struts的官网上找到:http://struts.apache.org/docs/version-notes-25.html

在eclipse中创建stru.xml配置文件

eclipse里默认是不会自动生成struts.xml文件的,这个文件主要是用来配置struts的,包括常量配置、action配置等,它非常重要。

在eclipse中,想要创建struts.xml,只能先创建一个XML格式的文件,然后在里面配置struts,这样非常不方便而且容易出错,下面提供了一个更好的方法:
1. 点击菜单栏的Window选项,依次选择PreferencesXMLXMLCatalog,在弹出的窗口中点击右侧的Add
2. 在Location处填写%STRUTS_HOME%/src/core/src/main/resources/struts-2.X.dtd,在Key type处选择Public ID,在Key处填写-//Apache Software Foundation//DTD Struts Configuration 2.X//EN,在Alternative web address处填写http://struts.apache.org/dtds/struts-2.X.dtd,,点击OK,如下图:
struts_add_dtd
3. 点击OK完成DTD的添加,下面就可以在eclipse中创建struts.xml文件了;
4. 右击项目(或项目的子目录,一般将struts.xml文件放在src目录下),选择New-Other-XML-XML File,输入文件名(我们输入struts.xml),Next,选择Creat XML file from a DTD fileNext,选择Select XML Catalog entry,在出现的XML文本选择下拉框中选择-//Apache Software Foundation//DTD Struts Configuration 2.X//ENNextFinish,如下图:
struts_xml_create
5. struts.xml文件就新建好了,现在的项目结构如下:
struts_project_structure2

编写jsp页面和国际化资源文件

下面编写一个简单的登录程序,它包含三个页面:登录页面、欢迎页面和错误页面。

首先,先在.properties文件中定义Label使用的资源(后期修改Label时只需要修改资源文件):

# mess.properties

loginPage=登录页面
errorPage=错误页面
succPage=成功页面
failTip=对不起,您不能登录!
succTip=欢迎,{0},您已经登录!
user=用户名
pass=密  码
login=登录

由于此文件中包含中文字符,要让Web应用可以使用这份资源文件,首先需要使用native2ascii工具对其进行转码,有关native2ascii工具的内容可以参考这篇文章:《native2ascii Java的一个文件转码工具(properties文件汉字转换)》

转码完成后,得到mess_zh_CN.properties文件,同样还可以提供一份mess_en_US.properties文件(此文件不需要使用native2ascii工具进行转码),此时的项目结构如下所示:
struts_project_structure3

注意这里将资源文件放在src目录下是因为eclipse会自动把src目录下的非.java文件拷贝到classes目录中。

然后编写登录页面:

<!-- login.jsp -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title><s:text name="loginPage"/></title>
</head>
<body>
<s:form action="login">
  <s:textfield name="username" key="user"/>
  <s:textfield name="password" key="pass"/>
  <s:submit key="login"/>
</s:form>
</body>
</html>

这里使用了struts2的自定义标签库,它提供了许多标签供我们使用。其他两个页面和登录页面类似,这里不再给出。

在运行Web应用之前,还需要在struts.xml文件中添加如下内容:

<!-- struts.xml -->

<constant name="struts.custom.i18n.resources" value="mess"/>
<constant name="struts.i18n.encoding" value="GBK"/>

struts.custom.i18n.resources属性指定了全局国际化资源文件,struts.i18n.encoding属性指定了国际化编码所使用的字符集,设定此属性相当于执行HttpServletRequest.setCharacterEncoding方法。

运行Web应用,在浏览器地址栏输入http://localhost:8080/StrutsDemo/first/login.jsp,可以看到登录页面(login.jsp在first目录下):
struts_login

可以看到,登录页面中的Label成功显示了资源文件中定义的字符串。

使用action作为控制器

上面的jsp页面仅仅作为“视图”呈现给用户,为了与用户进行交互,还需要添加action作为控制器。

定义LoginAction类,它继承自com.opensymphony.xwork2.ActionSupport类:

// LoginAction.java

public class LoginAction extends ActionSupport {
    private String username;
    private String password;
    private static final long serialVersionUID = 1L;

    public String getUsername() { return username; }
    public String getPassword() { return password; }
    public void setUsername(String u) { username=u; }
    public void setPassword(String p) { password=p; }

    @Override
    public String execute() throws Exception {
        super.execute();

        if(getUsername().equals("张三") && getPassword().equals("123456")) {
            ActionContext.getContext().getSession().put("user", getUsername());
            return SUCCESS;
        }
        else
            return ERROR;
    }
}

在struts.xml文件中配置此action:

<!-- struts.xml -->

    <package name="zzw" extends="struts-default">
        <action name="login" class="com.zzw.action.LoginAction">
            <result name="input">/first/login.jsp</result>
            <result name="success">/first/welcome.jsp</result>
            <result name="error">/first/error.jsp</result>
        </action>
    </package>

现在就可以使用这个及其简单的Web应用了。

最终的项目结构如下:
struts_project_structure4

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值