アプリ版:「スタンプのみでお礼する」機能のリリースについて

『基礎からのサーブレット/JSP』第3版のP185

<%@page contentType="text/html; charset=Windows-31J"%>
<%@page import="reqattr.SampleBean"%>
<HTML>
<BODY>
<H2>値をうけとるJSP</H2>
<%
SampleBean bean = (SampleBean)request.getAttribute("bean");
String message = bean.getMessage();
out.println(message);
%>
</BODY>
</HTML>


このスプリクトレット<% SampleBean bean =~~ %>の部分で

SampleBean bean = (SampleBean)request.getAttribute("bean");
String message = bean.getMessage();

これらをJSPでの記述にすると
どういう書き方になるのでしょうか?
よろしくお願いします。

A 回答 (1件)

今日日、JSPでリクエスト属性等を扱うには、式言語 (EL, Express Language)を使うのが一般的かと。


式言語は ${ 式 } という形式で簡単な処理を記述できるものです。

<%= ((SampleBean) request.getAttribute("bean")).getMessage(); %>

と同じことをするには↓になります。

${bean.message} もしくは ${requestScope.bean.message}

http://www.ne.jp/asahi/hishidama/home/tech/java/ …
http://www.javaroad.jp/opensource/js_taglibs3.htm


ただし、上記の書き方では getMessage() の戻り値に何が含まれていてもそのまま書き出します。
もし Javascprit が含まれていればそれがブラウザ上で実行される事も起き得ますので、場合によっては脆弱性の原因ともなりえます。
getMessage() の戻り値の中のHTML特殊文字をエスケープして表示するにはJSTLのc:outを使うのが便利です。

例)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out value="${bean.message}" />

http://www.javaroad.jp/opensource/js_taglibs4.ht …
http://struts.wasureppoi.com/jstl/00_jstl.html
    • good
    • 0

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