Struts 2

1、準備工做及實例

1.解壓struts-2.1.6-all.zip

apps目錄:struts2自帶的例子程序
docs目錄:官方文檔。

lib 目錄:存放全部jar文件。

Src 目錄:源文件存放地

2.六個基本包

struts2-core-2.1.6.jar :開發的核心類庫
freemarker-2.3.13.jar :struts2的UI標籤的模板使用freemarker編寫
commons-logging-1.0.4.jar :日誌包
ognl-2.6.11.jar :對象圖導航語言,經過它來讀寫對象屬性
xwork-2.1.2.jar :xwork類庫,struts2在其上進行構建
commons-fileupload-1.2.1.jar:文件上傳組件,2.1.6版本後必須加入此jar包

特別須要說明的是目前strust2的最新版本是struts-2.1.6,它做爲2.1X的正式版。特別要注意導入commons-fileupload-1.2.1.jar包,在此jar包中包含了RequestContext類,若是不導入該jar包將會報異常。

3.初識struts2配置文件

(1).web.xml文件   須要配置過濾器

主要完成對StrutsPrepareAndExecuteFilter的配置(在之前的版本中是對FilterDispatcher配置,新版本一樣支持用FilterDispatcher配置),它的實質是一個過濾器,它負責初始化整個Struts框架而且處理全部的請求。這個過濾器能夠包括一些初始化參數,有的參數指定了要加載哪些額外的xml配置文件,還有的會影響struts框架的行爲。除了StrutsPrepareAndExecuteFilter外,Struts還提供了一個ActionContexCleanUp類,它的主要任務是當有其它一些過濾器要訪問一個初始化好了的struts框架的時候,負責處理一些特殊的清除任務。

(2).struts.xml文件

框架的核心配置文件就是這個默認的struts.xml文件,在這個默認的配置文件裏面咱們能夠根據須要再包括其它一些配置文件。在一般的應用開發中,咱們可能想爲每一個不一樣的模塊單獨配置一個struts.xml文件,這樣也利於管理和維護。這也是咱們要配置的主要文件。

(3).struts.properties(參default.properties)

在Struts框架使用了不少屬性,咱們能夠經過改變這些屬性來知足咱們的需求。要改變這些屬性,只需在struts.properties文件中指定屬性的key和value便可。屬性文件能夠放在任何一個包含在classpath中的路徑上,可是一般咱們都把它放在/WEB-INF/classes目錄下面。咱們能夠在struts-default.properties文件中找到一個屬性的列表。

(4)struts-default.xml

此文件是struts2框架默認加載的配置文件,它定義了struts2一些核心bean和攔截器,它會自動包含(included)到struts.xml文件中(實質是經過<package  extends="struts-default">),併爲咱們提供了一些標準的配置。咱們能夠在struts2-core.jar中找到這個文件。

(5)其它配置文件

velocity.properties,struts-default.vm,struts-plugin.xml

4.讓MyEclipse提示xml信息

當咱們在編寫struts.xml時,發現eclipse並不會給出幫助提示,那是由於MyEclipse默認並不支持struts2,因此咱們須要手工導入dtd以支持提示。步驟:[window][preferences][MyEclipse][Files and Editors][XML][xml Catelog]而後在右邊點add添加:location爲dtd文件所在的位置(struts-2.0.dtd文件struts2-core-2.1.6.jar中能夠獲得),KeyType選擇URI,Key爲struts-2.0.dtd文件中文檔聲明的內容(http://struts.apache.org/dtds/struts-2.0.dtd),在struts.xml文件中也有此key值。

5.如何使用alt+/提示

在MyEclipse6.5中,默認的提示爲Ctrl+Space,而它會與咱們的輸入法切換衝突,使提示失效。找到key,先取消Content Assist命令的綁定,再用「alt+/」來綁定。

6.實例

步驟一,新建myStruts2項目,並導入struts2的六個基本jar包。
步驟二,創建LoginAction文件,主要代碼以下:
package com.asm;

import com.opensymphony.xwork2.Action;

public class LoginAction implements Action {

    private String username;

    private String password;

...省略get/set方法

    public String execute() throws Exception {

        if (username.equals("struts2")) {

            return "loginSuccess";

        } else {

            return "loginFailure";

        }

    }

}
說明:實現了Action接口,主要是爲了保證execute的正肯定義,其實咱們也能夠不實現此接口,只要能保證execute方法書寫的正確書寫(方法名,返回值)。

步驟三,在struts.xml文件中註冊LoginAction。此配置文件要放在src目錄下,實質就是成爲classpath環境變量下的文件。主要代碼以下:
<?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>

    <package name="myFirst" namespace="/" extends="struts-default">

        <action name="login" class="com.asm.LoginAction">

            <result name="loginSuccess">/success.jsp</result>

            <result name="loginFailure">/failure.jsp</result>

        </action>

    </package>

</struts>


說明:package後面會有詳細說明。action元素中的name屬性值指定了此action所指定的請求路徑爲「login.action」。後面login.jsp中的<form action=...>屬性值就會參照此name屬性。

步驟4、提供jsp頁面
login.jsp主要代碼:
<body>

        <form action="<%=request.getContextPath()%>/login.action" method="get">

        戶名:<input type="text" name="username"><br>

        密碼:<input type="password" name="password"><br>

        <input type="submit" value="login">

        </form>
</body>
failure.jsp主要代碼

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s" %>
<html>

    <body>

        登陸失敗,錯誤的用戶名:<s:property value="username"/><br>

        <a href="<%=request.getContextPath()%>/login.jsp">返回</a>

    </body>
相關文章
相關標籤/搜索