JSPの中で、

 <% HttpSession session = request.getSession(); %>
をしたいのですが、文字化けをしたエラーがでます。
request変数を知らないからですか??
どうすればsessionを取得できるんでしょうか?
どなたか教えて下さい。

A 回答 (1件)

エラーが分からないと何とも言えませんが、実際に欲しいのは、session ではなく、


そこに保持しているインスタンスですよね。jsp:useBean を使いましょう。

参考URLのサンプルはどうですか?
的が絞ってあって、わかりやすいと思うんですけど。

少なくとも、request 変数は、JSP のどこでも使えます。

# 状況が良く分からないので、自信無し、としておきます

参考URL:http://www02.u-page.so-net.ne.jp/qa2/masa_o/tsjs …
    • good
    • 0
この回答へのお礼

<%= request.getSession().getAttribute("myName") %>
と書いたら、ちゃんと欲しいものが表示されました。
なんだったんでしょう???(^^;
でも、よかったです!ありがとうございました。

お礼日時:2002/01/16 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QJSPの<% %>の部分で困っています。

JSPでsession.setAttribute("", "")の第二引数の部分に、ラジオボタンの選択結果を入れたいのですが、どう入力すればよいでしょうか? お願い致します。
<html:radio property="addressradio" value="check1"/>
<html:radio property="addressradio" value="check2"/>

Aベストアンサー

こんにちは。

<%
String value = request.getParameter("addressradio");
session.setAttribute("radio_value", value );
%>
でセットされると思いますが。
(ただし、このjspのsubmit先がこのjspである必要があります)

セッションに選択された値を格納するには一度サーバ上に送信する必要があります。
strutsを使ってるとしたら送信先のアクションクラスでフォームを受け取ってそこの値をセッションにセットします。

Qを <%= %>で出力。コンパイルエラー

<bean:define>を <%= %>で出力するのは、だめですか?

 <bean:define id="maxnum" name="ActionForm" property="num" type="java.lang.String"/>
 alert('<bean:message key="A00011" arg0="<%=num%>" />');
                               ^^^↑ここ

実際に動かすと正常に動くのですが、
WebSphereDeveloperでビルドをすると、
 JspCompile: シンボルを解決できません。; シンボル: 変数 num;
といわれます。

どうすれば、エラーがでないように出来ますか?

Aベストアンサー

<bean:define>タグが、alertの前で />で閉じているのが気になりますが。。。

<jsp:attribute>タグを利用してみるとか。

<bean:define id="maxnum" name="ActionForm" property="num" type="java.lang.String">
 alert('<bean:message key="A00011">
<jsp:attribute name="arg0"><%= num %></jsp:attribute></bean:message>');
</bean:define>

参考URL:http://www.techscore.com/tech/J2EE/JSP/3-6.html

QJSPでsession変数が勝手に書き換えられる

お世話になっています。
JSPを使ってプログラミングをしていますが、画面遷移の途中でsession変数の内容が空になってしまう現象に悩まされています。

画面遷移は、
■入力画面
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■確認画面(ここで、前の画面で入力された値をsessionに保存)
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■申し込み完了画面(入力された値をDBに保存)
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />

ここで、申し込み完了画面になるとapplyという変数の中が全部nullになっています。

念のため暗黙のsession変数からgetId()でセッションIDを画面に出してみると<%=session.getId()%>

申し込み画面:585C94623773F49C0708E050C95E20D2
確認画面:5C35DCF1B68850A762D531CAF2F9700E
完了画面:7D1035FD035C7767C8CEB1D938325D60

と、毎回セッションIDが変わっています。

 ちなみに、テスト環境ではこの問題は起こらず、本番環境のみで発生します。
 同様の問題を経験したことがあるかたはいらっしゃいませんでしょうか。

構成は
■テスト環境:
os:WindowsXP SP2
server:Tomcat 4.1
Java: 1.4.2

■本番環境:
os:FreeBSD 6.1-RELEASE-p6
server:Tomcat 4.1
Java: 1.4.2

 よろしくお願いいたします。

お世話になっています。
JSPを使ってプログラミングをしていますが、画面遷移の途中でsession変数の内容が空になってしまう現象に悩まされています。

画面遷移は、
■入力画面
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■確認画面(ここで、前の画面で入力された値をsessionに保存)
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■申し込み完了画面(入力された値をDBに保存)
<jsp:useBean id="apply" scope="session" class...続きを読む

Aベストアンサー

>私の今までの考えですと、ブラウザからのリクエストがHTTPServletRequestに格納されて、そこに入っているセッションIDがHTTPServetResponseオブジェクト(のどこか)に(自動的に)格納されてブラウザに返り、次のリクエストでまた同じセッションIDが送られてきて……というように、ブラウザを閉じない限りセッションIDは同一のものが使われるのだと思っていました。
>そうではない、ということですね?

 そうですね。
 時には手動でセッションIDをレスポンス内に明示する必要があります。
 そうしないと、その後のアクセスでブラウザはセッションIDを返さないので、Tomcatは新しいセッションIDを再発行する事になります。

> たとえば、そもそもTomcatがCookieを使ったセッション管理をしない設定ならブラウザは関係がなくなります。

>これはつまり、可能性として
>・テスト環境のTomcatは、クッキーを使ったセッション管理を自動的にしてくれるので、今まで動作していた。
>・本番環境のTomcatではそういう設定になっていないため、明示的にセッション管理をしないと、その都度セッションが切れてしまう

>ということが原因という可能性がある、というように考えていいのでしょうか。

 そうです。
 ちなみに、Contextに、cookies="false"という属性がセットされているならクッキーによるセッション管理は無効化されています。

 あと面白いページを見つけました。
 こんな問題もあるんですね。参考URLに乗せておきます。
 考慮すべき点が色々あって難しいです。

 

参考URL:http://blog.utils.jp/2008/06/tomcat.html

>私の今までの考えですと、ブラウザからのリクエストがHTTPServletRequestに格納されて、そこに入っているセッションIDがHTTPServetResponseオブジェクト(のどこか)に(自動的に)格納されてブラウザに返り、次のリクエストでまた同じセッションIDが送られてきて……というように、ブラウザを閉じない限りセッションIDは同一のものが使われるのだと思っていました。
>そうではない、ということですね?

 そうですね。
 時には手動でセッションIDをレスポンス内に明示する必要があります。
 そうしないと...続きを読む

Q&= ~0x0c; &= ~0x03; |=1;

JavaScriptで分からないコードがあるので教えてください。


■変数設定
var hoge = 0;


■変数格納
・キーを押した時の条件分岐
  ~なら hoge |= 1;
  または hoge |= 2;
  または hoge |= 3;
  または hoge |= 8;

・キーを離した時の条件分岐
  ~なら hoge &= ~0x0c;
  または hoge &= ~0x03;


■変数使用
・swithch文の条件分岐に利用
  (hoge&0x03)
  (hoge&0x0c)


■質問
・どういう意味でしょうか?
・文字コード?
・ビット演算?

Aベストアンサー

ビット演算してるわね

x = x + a

x += a
って書くことができるの

つまり
hoge |= 1

hoge = hoge | 1
のことね

~はNOTのこと

0x
はアスキーコードの16進数表記ねきっと

0x0c は改ページを意味していて
0x03 は文章の最後を意味している
と思われるわ
全文がないので推測だけど

QJSPからパラメータを取得してサーブレットに遷移する際文字化けしてしまいます。

オールインワンEclipse3.4
tomcat5.5
上記の環境で、サーブレットの参考書に沿ってサンプルを作成していたのですが、パラメータボックスに日本語を入力すると文字化けしてしまい、ブラウザに日本語で表示することができません。
英文字では問題なく表示できるので、エンコード・デコードのどこかで間違っているのだと思うのですが、参考書に書いてあることを試しましても、うまくいきません。
どなたかご指導お願いいたします。
----------
echo.jsp
----------
<%@page contentType="text/html; charset=Windows-31J"       pageEncoding="Windows-31J"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<body>

<h2>EchoServletの入力</h2>

<form action = "/basic2/EchoServlet2">
<input type="text" name="message">
<input type="submit" value="表示" >
</form>
</body>
</html>
---------------------
EchoEchoServlet2.java
---------------------
package input;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EchoServlet2 extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{

request.setCharacterEncoding("Windows-31J");
String msg = request.getParameter("message");
System.out.println("msg =" + msg);//確認用

//response.setContentType("text/plain; charset=Windows-31J");

PrintWriter out = response.getWriter();
System.out.println("out = " + out);//確認用
out.println("message=" + msg);
}
}
--------------------------------
tomcatの保存されているserver.xml
--------------------------------
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8000"
maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
useBodyEncodingForURI="true"←ボディのエンコードを使う指定を追加しました
/>


よろしくお願いいたします。

オールインワンEclipse3.4
tomcat5.5
上記の環境で、サーブレットの参考書に沿ってサンプルを作成していたのですが、パラメータボックスに日本語を入力すると文字化けしてしまい、ブラウザに日本語で表示することができません。
英文字では問題なく表示できるので、エンコード・デコードのどこかで間違っているのだと思うのですが、参考書に書いてあることを試しましても、うまくいきません。
どなたかご指導お願いいたします。
----------
echo.jsp
----------
<%@page contentType="text/html; charset=...続きを読む

Aベストアンサー

拙者宅の環境でテストすると、
●ケース1
> useBodyEncodingForURI="true"
を記述した場合、 EchoServlet2クラスにて受け取れるパラメータが既にUnicodeに
エンコーディング済みになってましたよ。
ですから、Unicodeパラメタに
> request.setCharacterEncoding("Windows-31J");
とすると、当然文字化けしました。(UnicodeはWindows-31Jじゃないですからね)

●ケース2
> useBodyEncodingForURI="true"
を指定しない場合には、EchoServlet2クラスにて受け取れるパラメータはWindows-31J
となっています。
ですから、
> request.setCharacterEncoding("Windows-31J");
を使って、正しくエンコーディング出来ました。

確認環境:
Windows2000Pro
JDK1.6.0_04
Tomcat5.5.12
Firefox2.0,0.17

拙者宅の環境でテストすると、
●ケース1
> useBodyEncodingForURI="true"
を記述した場合、 EchoServlet2クラスにて受け取れるパラメータが既にUnicodeに
エンコーディング済みになってましたよ。
ですから、Unicodeパラメタに
> request.setCharacterEncoding("Windows-31J");
とすると、当然文字化けしました。(UnicodeはWindows-31Jじゃないですからね)

●ケース2
> useBodyEncodingForURI="true"
を指定しない場合には、EchoServlet2クラスにて受け取れるパラメータはWindows-31J
となってい...続きを読む


人気Q&Aランキング

おすすめ情報