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

とりあえず, テキストエリアに文字を入力して, それを表示するってのを作ってみるかな.
それができたら, JSPWikiを参考に色々な記法を導入してみるってのをやってみるかな.
すこしづつできればいいな.


まずは文章を入力するinput.jspから.

<%@ page contentType="text/html; charset=EUC_JP" pageEncoding="EUC_JP" %>
<!-- テキストエリアに文字を入力 -->
<HTML>
<HEAD><TITLE>文章入力</TITLE></HEAD>
<BODY>
    <HR>
    何か文章を入力してください.<BR>
    <HR>
    <FORM method=POST action="/example/ProcessInputDataServlet">
        <TEXTAREA name="text" cols="80" rows="10"></TEXTAREA><BR>
        <INPUT name="" type="submit" value="送信">
    </FORM>
    <HR>
</BODY>
</HTML>

こいつを/jsp/test/textarea以下に配置.


次に処理するサーブレット.
当然, コンパイルしたらweb.xmlに登録しておかないといけない.

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 );      // セッションオブジェクトを取り出す


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

とりあえず受けとったものを直接, 文章を出力するjspファイルへ送る.
色々問題ありそうな気がする, なんとなく.


んで, 受け取った値を出力するoutput.jsp.

<%@ page contentType="text/html; charset=EUC_JP" pageEncoding="EUC_JP" session="true" %>
<!-- "textare"という名前を持つ値セッションオブジェクトから取り出す -->
<jsp:useBean id="textarea" scope="session" type="java.lang.String" />

<HTML>
<HEAD><TITLE>文章出力</TITLE></HEAD>
<BODY>
    入力した文章をいじらず, そのまま表示<BR>
    <% out.println( textarea ); %>
    <% session.invalidate(); %> <!-- なんとなくセッションの全削除 -->
</BODY>
</HTML>

これで受け取った値を直接出力してくれる.


問題多々有り.

  • 不等号の置き換えとかやってないので, どんなタグでも反映されちまう.
  • セッションオブジェクトtextareaが空だったとき, エラーページに飛ばすとかやってない.

などなど, いっぱいあると思う.


とりあえず明日はタグが全部反映されないようにしてみるかな.
できるかなあ.
昔組んだJSPのソースを見直さないと.
完全に忘れてる.
まあ, サーブレットは, 本のサンプルじゃない自分のオリジナルをやるのは初めてなんだけど.
(オリジナルっつーほどのソースでもないけど.)