SSH-struts 2の異常処理

6787 ワード

j 2 seを学習する際にjavaのexceptionクラスを利用して異常を処理することを学習したことがある.struts 2フレームワークでは異常に対する処理も提供されており、簡単に言えばActionに異常が発生した場合、struts 2.xmlファイルで構成し、ページのジャンプを調整し、ユーザーにより人間的なフィードバックを与えることができる.
struts 2の例外処理では、グローバルな2つの例外処理に分けられます.1つは、すべてのActionに例外が発生してもこのページにジャンプできます.もう1つはローカル:アクション例外を指定してこのページにジャンプします.
ローカル例外処理struts 2.xmlでexception-mappingノードでresult属性名を指定します.Exceptionプロパティでは、exceptionを継承する例外クラスを指定します.resultノードでは、nameプロパティと、例外が発生した後にジャンプするページを指定します.
<?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="struts2" extends="struts-default">
        <action name="login" class="com.syq.struts2.LoginAction" >
            <exception-mapping result="usernameInvalid" exception="com.syq.exception.UsernameException"></exception-mapping>
            <exception-mapping result="passwordInvalid" exception="com.syq.exception.PasswordException"></exception-mapping>

            <result name="success">/result.jsp</result>
            <result name="usernameInvalid">/UsernameInvalid.jsp</result>
            <result name="passwordInvalid">/PasswordInvalid.jsp</result>
        </action>
    </package>

</struts>

グローバル例外処理global-resultsノードで異常ジャンプを指定するページ;global-exception-mappingsで異常クラスを指定します.
<?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="struts2" extends="struts-default">
        <global-results>
            <result name="usernameInvalid">/UsernameInvalid.jsp</result>
            <result name="passwordInvalid">/PasswordInvalid.jsp</result>
        </global-results>
        <global-exception-mappings>
            <exception-mapping result="usernameInvalid" exception="com.syq.exception.UsernameException"></exception-mapping>
            <exception-mapping result="passwordInvalid" exception="com.syq.exception.PasswordException"></exception-mapping>
        </global-exception-mappings>

        <action name="login" class="com.syq.struts2.LoginAction" >
            <result name="success">/result.jsp</result>
        </action>
    </package>

</struts>

つまり、Actionで例外と結果を定義したり、グローバルの例外と結果を定義したりすることができます.ローカルの優先度はグローバルより大きく、グローバルを定義すればすべてのActionに共通することができますが、ローカルの例外と結果は現在のActionでしか享受できません.