1. 程式人生 > >java--Struts2入門示例教程(五)

java--Struts2入門示例教程(五)

今天在做一個Struts2的簡單例項,樓主看的是大學教科書-《JavaEE基礎實用教程》第三章的例子。
由於書有些老了,加上Struts框架又做了一些更新。所以有些地方需要拿出來說下,讓新人夥伴們能少走點彎路,更不要~~因為執行後的報錯會灰心喪氣放棄學習的信心~
配置:win8+myeclipse10+tomcat7

步驟二. 建立一個web專案
開啟myeclipse-File-new-Web Project-Struts2.0

步驟三. 載入Struts2基本類庫
書上原話是:先下載Struts的jar包(myeclipse10已經對Struts內部集成了,其實是可以直接系統匯入的,這裡我們先按原始方法來)。書上介紹的是要用到Struts2的5個主要類庫:

  • commons-logging-1.1.1.jar
  • freemarker-2.3.19.jar
  • ognl-3.0.6.jar
  • struts2-core-2.3.14.jar
  • xwork-core-2.3.14

時過境遷,2016了都。再用這5個我們就會發現報了一堆的錯誤~,上網查閱了一下,基礎包變多了~
這裡寫圖片描述
這張圖是基於我的程式新增的包,小夥伴們遇到報錯也不用慌,報錯資訊複製下,看百度上說少什麼包~~匯入什麼包就成了。真不行一個笨方法~把Struts-lib下面所有的包都放進去。至於包的匯入方法,我建議直接把要匯入的包,ctrl-c複製後,來到專案的-WebRoot-WEB-INF-lib,點lib–ctrl-v,應該會跳出來一個提示,建議選擇直接copy,不要複製路徑~。配置環境的坑爹工作做完了。下面來看~程式碼

步驟四. 修改web.xml檔案(專案建立預設有web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    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_3_0.xsd"
>
<display-name></display-name> <welcome-file-list> <welcome-file>hello.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

這裡面填入的類, 2.1.3版本後改用

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

2.13之前的版本用的還是,請夥伴們考慮清楚~

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilterand StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one..即,從Struts 2.1.3起FilterDispatcher已被標註為過時的,改用StrutsPrepareAndExecuteFilter。

步驟五. 建立hello.jsp檔案(WebRoot-new-jsp-hello.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>Struts2應用</title>
  </head>
  <body>
    <form action="struts.action" method="post">
    請輸入姓名:<input type="text" name="name"/><br>
    <input type="submit" value="提交" /> 
    </form>
  </body>
</html>

步驟六. Action實現類(src-new-class,PackageName:org.action–className:StrutsAction)

package org.action;

import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class StrutsAction extends ActionSupport {
    private String name;
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public String execute() throws Exception{
        if(!name.equals("helloworld")){
            Map request = (Map)ActionContext.getContext().get("request");
            request.put("name",getName());
            return "success";
        }else{
            return "error";
        }
    }

}

步驟七. 建立並配置struts.xml檔案
配置strust2要呼叫的action。直接新建在src目錄下,那樣部署的時候會自動釋出到WEB-INF/classes目錄下,或者直接建立在WEB-INF/classes目錄下面。

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
    "http://struts.apache.org/dtds/struts-2.3.dtd">   
    <struts>  
        <package name="default" extends="struts-default">  
            <action name="struts" class="org.action.StrutsAction">  
                <result name="success">/welcome.jsp</result> //成功跳轉welcome.jsp
                <result name="error">/hello.jsp</result>//錯誤轉到welcome.jsp
            </action>  
        </package>  
    </struts>  

其中,package元素,作用類似於Java包的機制,他是用於分門別類的一個工具,extends屬性如他的名字一樣,它繼承了struts-default這個包的所有資訊,一般我們自己建立一個包最好都繼承它,因為他為我們提供了絕大部分的功能,你可以在struts2-core的jar包中的struts-default.xml檔案中找到這個包。action元素對應與你的表單,例如你的表單的action=”welcome”,那麼該表單提交後就會將引數交予action的name=”welcome”的實現類處理。result元素為action的結果,它由動作類返回的控制欄位選擇。

步驟八.建立welcome.jsp

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

<!-- @taglib表明引用標籤 prefix="s" 引用的名稱在頁面可以使用,就像java中生成的一個物件名,以後呼叫的時候直接使用<s:xxx/>就可以了,uri="/struts-tags"%表示標籤庫的路徑。相當於import一個具體的類 --%>

<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE>
<html>
  <head>
    <title>strust2應用</title>
  </head>

  <body>
    hello <s:property value="#request.name"/>!
  </body>
</html>

步驟九. 部署和執行
部署後執行tomcat,”http://localhost:8080/Struts2.0/hello.jsp“.
這裡寫圖片描述
- 輸入helloworld會重新回到hello.jsp
- 輸入非helloworld的數值,會跳轉到welcome.jsp.
這裡寫圖片描述
引用文獻:
Struts2入門示例教程
——————————-我是分割線———–2016.3.24午—————

至此,簡單的Struts2例項的步驟方法介紹完畢.(具體語法,小白樓主研究後會慢慢添加註釋~)
有疑問的小夥伴,歡迎留言~