strutsでセッションから値を取得する方法を徹底解説。取得した値をJSPに表示するには?

strutsでJSPで入力した値をセッションに登録することで、前の画面に戻った時に元のデータをセッションから取得し初期値として入力することができます。

今回はJSPで入力した値をセッションに登録したり、取得する方法を解説してから実際にアプリケーションを作成し、画面にセッションの値を描画してみようと思います。

まずはセッションから値を取得して表示する動きを確認してみましょう。

セッションから値を取得して表示するまでの流れ

次の流れでセッションに値を取得して表示をしています。

①JSPから性別をサーバに送信し、サーバはセッションに値を登録する。

②次画面でクライアントは名前をサーバに送信する。

③最後に結果を表示する画面でセッションに登録してある性別を取得して表示をする。

値をセッションに登録するには?

strutsで値をセッションの登録するには次のように記述します。

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession httpsession = request.getsession();

httpsession.setAttribute("sessionKey",SessionDTO);

値をセッションから取得するには?

HttpServletRequest request = ServletActionContent.getRequest();

HttpSession httpsession = request.getsession();

httpsession.getAttribute("sessionKey");

使用するクラスとメソッドの解説

クラス名 概要
HttpServletRequest フォームなどで設定されたパラメータの取得やクッキーなどの情報などリクエストに含まれている情報を取得するオブジェクト
ServletActionContext このクラスは、アクション名、値スタックなどのようなものへのアクセスを提供するActionContextをサブクラス化します。このクラスは、サーブレットパラメータ、リクエスト属性、HTTPセッションのようなWebオブジェクトへのアクセスを追加します。
 HttpSession  セッション識別子、作成時刻、最終アクセス時刻などの、セッションに関する情報の参照および操作

 

メソッド名 概要
getRequest()
クライアントからのリクエストを取得するメソッド
getsession() リクエストからセッションの情報を取得するメソッド
getAttribute(“sessionKey”) セッションのキーを元に、セッションに登録されているパラメータを取得するメソッド。
setAttribute(“sessionKey”,”sessionDTO”) セッションに登録したいパラメータを設定する。また、セッションから値を取得する時のキーとなる値を一緒に設定する。

 

上で解説したセッションの登録の流れを実装してみるとこんな感じになります。

MyForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>マイフォーム</title>

</head>

<body>

<s:form action="transmit">

<select name = "myFormEntity.sex">

<option value = "M"></option>

<option value = "F"></option>

</select>

<s:submit value="送信" />

</s:form>

</body>

</html>

MyFormAction.java

package action;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import entity.MyFormEntity;

public class MyFormAction {

MyFormEntity myFormEntity = new MyFormEntity();

public String transmit() {

String sessionKey = "myFormEntity";

HttpServletRequest req = ServletActionContext.getRequest();

HttpSession httpSession = req.getSession();

httpSession.setAttribute(sessionKey, myFormEntity);

return "MyFormAction2";

}

public MyFormEntity getMyFormEntity() {

return myFormEntity;

}

public void setMyFormEntity(MyFormEntity myFormEntity) {

this.myFormEntity = myFormEntity;

}

}

MyFormAction2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>MyFormAction2</title>

</head>

<body>

<s:bean name="entity.MyFormEntity">

性別:<s:property value = "myFormEntity.sex"/>

</s:bean>

<s:form action = "goNext">

名前:<input type = "text" name = "myFormAction2Entity.name">

<s:submit value= "次へ" />

</s:form>

</body>

</html>

MyFormAction2.java

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>MyFormAction2</title>

</head>

<body>

<s:bean name="entity.MyFormEntity">

性別:<s:property value = "myFormEntity.sex"/>

</s:bean>

<s:form action = "goNext">

名前:<input type = "text" name = "myFormAction2Entity.name">

<s:submit value= "次へ" />

</s:form>

</body>

</html>

MyFormAction3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>MyFormAction2Entity</title>

</head>

<body>

<p>入力内容を確認してください。</p>

<s:bean name = "entity.MyFormAction2Entity">

性別:<s:property value = "myFormAction2Entity.sex"/><br>

名前:<s:property value = "myFormAction2Entity.name" />

</s:bean>

</body>

</html>

struts.xml

<?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="default" extends="struts-default">

        <!-- Hello worldのサンプルアクション -->

        <action name="transmit" class="action.MyFormAction" method="transmit">

        <result name ="MyFormAction2">/view/sample/MyFormAction2.jsp</result>

        </action>

        <action name="goNext" class="action.MyFormAction2" method="goNext">

        <result name ="MyFormAction3">/view/sample/MyFormAction3.jsp</result>

        </action>

    </package>

</struts>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

某私立有名大学に在学中、有名ポータルサイト企業のハッカソン出場経験複するが、周囲とのプログラミングや技術力の差を実感する。 大学卒業時の就職活動で技術力をアピールするためプログラミングの学習をひたすら行い、現在某有名企業でWebアプリケーションエンジニアとして活躍中。これからは自分が経験した学習方法を発信してプログラミングが分かる楽しさを伝えていきたいと思っています!