JSP/Servletのお勉強メモ その9

とりあえず, 今日はHTMLタグを認識しなくした.
余計なのまで調べて, これだけですごく苦労した.


サーブレットソースにちょっとだけ手を加えた.

package test.textarea;

import javax.servlet.*;
import javax.servlet.http.*;

import java.io.*;

public class ProcessInputDataServlet extends HttpServlet
{
    public void doPost( HttpServletRequest request, HttpServletResponse response )
        throws ServletException, IOException
    {
        // リクエストパラメータの文字エンコーディング名をセット
        request.setCharacterEncoding( "EUC_JP" );

        String      textarea = request.getParameter( "text" );  // テキストエリアの値を取り出す
        HttpSession  session = request.getSession( true );      // セッションオブジェクトを取り出す

        StringBuffer text = new StringBuffer( textarea );
        for( int i=0; i<text.length(); i++ ){
            char c = text.charAt(i);
            if( c == '&' ){
                text.deleteCharAt( i );
                text.insert( i, "&amp;" );
            } else if( c == '>'  ){
                text.deleteCharAt( i );
                text.insert( i, "&gt;" );
            } else if( c == '<'  ){
                text.deleteCharAt( i );
                text.insert( i, "&lt;" );
            } else if( c == '\"' ){
                text.deleteCharAt( i );
                text.insert( i, "&quot;" );
            }
        }
        textarea = text.toString();

        session.setAttribute( "textarea", textarea );
        request.getRequestDispatcher( "/jsp/test/textarea/output.jsp" ).forward( request, response );
    }
}

これで不等号やダブルクォーテーションをちゃんと変換する.


Wikiのソース見てたら, 何かパーサを使ってるみたいだった.
自分も使ってみようと調べてみたけどだめだった.
いきなりパーサに飛んでも分かりゃしねえ.
ゆっくりやってこう. ゆっくり.