忍者ブログ
19 March

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

29 November

【Java/Struts】エラー→ログアウト。エラーを判定したActionでログアウト後用のメッセージを付けたい。

お久しぶりのブログ更新です。Javaにスキルチェンジなう。今回はその勉強中の覚書です。

***

前提として、このActionは、session.invalidate()するのが主な目的です。
リダイレクトは、リクエストを引き継がないし、session.invalidate()しちゃったら、引き継ぐためのメモリがなくなっちまうし、どうしようってなもんです。

ログアウトすべきエラーを各Actionでキャッチしたら、LogoutActionのインスタンスを紐づけたログアウト用のアクションに、リダイレクトするようにしています。

リダイレクト手前で、ログアウト後のページに表示したいエラーをsaveErrors(session, errors)してます。

そうすると、session.getAttribute("org.apache.struts.action.ERROR")で、そのエラーが取り出せるって寸法です。getAttributeNames属性で、それっぽいのを使っただけです。

LogoutAction.java(パッケージ名は適当)

import jp.suppa.co2;

import javax.servlet.http.*;
import org.apache.struts.action.*;

public class LogoutAction extends Action {
// メッセージID(「ログアウトしました」)
private static final String MESSAGE_ID = "message.XXX";

@Override
public ActionForward execute(ActionMapping mapping,
                                                ActionForm form,
                                                HttpServletRequest request,
                                                HttpServletResponse response)
                                                throws Exception {

    /*
    * 別ページでセッションに保存されたメッセージを取り出し、
    * リクエストに保存しなおす。
    */
    HttpSession session = request.getSession();
    ActionErrors errors =                             (ActionErrors)session.getAttribute("org.apache.struts.action.ERROR");                     saveErrors(request, errors);

    /*
    * セッション情報を畳む。
    */
    if (session != null) {
        session.invalidate();
    }

    /*
    * 「ログアウトしました」の文言を付ける
    */
    ActionMessages massages = new ActionMessages();
    massages.add("massages.logout", new ActionMessage(MESSAGE_ID));
    saveMessages(request, massages);

    // ログアウトページへ
    return new ActionForward(mapping.getForward());
}

}

拍手

PR
25 June

【ExcelVBA】EverNoteのテキストだけノートをテキストファイルにする。

3月ごろから、テキスト作成環境が、携帯からポメラに移行した。
エバーノートに入っているテキストをポメラに移動させたくなった。


vba上で、ACSⅱで保存できないものかと思ったのだが、StrConv掛けてももともとSfit-JISだぜとばかりに文字化けするのに、テキストストリームで書きだそうとすると、Unicodeを指定しないとエラーを吐く始末。

仕方ないので最後の仕上げは手作業になってしまったところが無念である。

↓は空白が飛んでるので、スタイル指定の部分の除去で、StrPtnにセットしている部分は該当行の内容を 貼りなおしてください。
----------------------------
' エバーノートからエクスポートしたフォルダを
' CELL_TARGET_DIR
' に書き込んでから実行
' Write By m_o_co
'要)Microsoft ActiveX Data Objects
Public Sub Go_HtmlToTextCov()

'========================
' 宣  言
'========================
' 定数
Const strTgExe As String = ".html"
Const cnvExe As String = ".txt"

' 変数
Dim strTgDir As String ' ディレクトリ
Dim strBufDir As String
Dim FSO As Object
Dim FLS As Object ' FileSystemObject.Folder.Files
Dim bufFIL As Object

Dim aTS As Object ' UTF8読み込み用インスタンス

Dim TS As Object ' TextStream
Dim RE As Object ' RegExp
Dim strBuf As String ' テキスト加工用
Dim strPtn As String ' 検索文字列

' 対象ディレクトリ
strTgDir = Range("CELL_TARGET_DIR").Value

' 正規表現準備
'□ 除去 <.*>
strPtn = "<.*>" ' 今回、正規表現は1個なので、先にセットしちゃう
Set RE = CreateObject("VBscript.RegExp")
With RE
.Pattern = strPtn ' 正規表現パターンのセット
.IgnoreCase = True '大/小文字無区別
.Global = True '全体検索
End With


' FSO準備
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FLS = FSO.GetFolder(strTgDir).Files
Set aTS = CreateObject("ADODB.Stream")

' ストリームオプション
With aTS
.Type = adTypeText ' テキスト形式
.Charset = "UTF-8" ' キャラセットを指定
.Open ' インスタンス
End With


'========================
' 開  始
'========================
For Each bufFIL In FLS

If bufFIL.Type = "Chrome HTML Document" Then

' 対象テキストをゲット
aTS.LoadFromFile bufFIL.Path
strBuf = aTS.ReadText(adReadAll)

'■ 置換(改行) </div> → vbcrlf
strPtn = "</div>"
strBuf = Replace(strBuf, strPtn, vbCrLf)


'■ 除去 <.*>
' strPtn = "<.*>" ' セット済み
With RE
' .Pattern = strPtn ' 正規表現パターンのセット
strBuf = .Replace(strBuf, "") ' 置換
End With


'■ 除去
' body, td {
' font-family: メイリオ;
' font-size: 10pt;
' }
strPtn = " body, td {" & vbCrLf & _
" font-family: メイリオ;" & vbCrLf & _
" font-size: 10pt;" & vbCrLf & _
" }"

strBuf = Replace(strBuf, strPtn, "")

' 書き込み
Set TS = FSO.OpenTextFile(Replace(bufFIL.Path, strTgExe, cnvExe), 2, True, -1) ' 書き込み/新規作成する/Unicode
With TS
.Write strBuf
.Close
End With

Set TS = Nothing

End If

Next

aTS.Close: Set aTS = Nothing
Set bufFIL = Nothing
Set FLS = Nothing
Set RE = Nothing

End Sub
----------------------------

拍手

25 December

【AccessVBA】ヘボンローマ字変換用パーツ

これまた自分用。確か、2003で開発。
クラスのなりしてますが、セッターとか諸々不完全で、お見せするのが恥ずかしいんですが。
後ろの方にある、ヘボン式変換のアルゴリズムを作り直すのが激しく面倒なんです…。

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "c_Chg_Hebon"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Compare Database
Option Explicit
'=======================================================
'
'       *** c_Chg_Hebon  *** by m_o_co
'
'=======================================================
' 渡されたテキストをヘボン式に変換するGet_Hebon_Romaと
' そのヘボン式変換用ライブラリ配列のクラス

拍手