marunomaruno-memo

marunomaruno-memo

JSP で表示するための一工夫 (2)

2009年11月18日 | Java
JSP で表示するための一工夫 (2)
================================================

■Map のデータを展開して表示

あるスコープに属性 mapdata がある。
キーが商品で、値がその個数とする。
これを、JSTL で展開する場合、つぎのように記述する。

---
<c:forEach var="item" items="${mapdata}" varStatus="status">
    <c:set var="product" value="${item.key}"/>      <!-- (1) -->
    <c:set var="quantity" value="${item.value}"/>   <!-- (2) -->
    <c:out value="${product.name}"/>
    <fmt:formatNumber value="${quantity}"/>
</c:forEach>
---


□(1), (2)

set タグを使って、key と value に対して名前を指定すると、
この後、EL を使いやすい。


以上



leJOS 0.8.5 で超音波センサーが動かない -> ポート4以外に接続で動く

2009年11月17日 | LEGO
leJOS 0.8.5 で超音波センサーが動かない -> ポート4以外に接続で動く
=========================================================

leJOS 0.8.5 を使うと、超音波センサーからの値(getDistance()
メソッドの返り値)がつねに 255 のままになる。なぜだろう?

PC の環境は以下のとおり。
WindowsXP SP2
JavaSE1.6

leJOS のフォーラムには、以下の記事があった。
「.8.5 on NXT2.0- Ultrasonic/Color Sensor don't return
values.」
http://lejos.sourceforge.net/forum/viewtopic.php?t=1706
これによると、超音波センサーだけではなく、色センサーでも
同じ現象が起きているようだ。
この現象の対処は、ポート4 ではなく、別のポートにセンサー
をつなげればよい。

上記のプログラムも、ポート4 以外につなげたところ、センサー
は働くことを確認できた。


なお、NXT に、leJOS 0.8.0 に入れなおしたところ、超音波
センサーからの値はちゃんと読み取れるようになった。
ちなみに、このプログラムは leJOS 0.6.0、leJOS 0.7.0 のい
ずれでも動作する。


確認プログラムは以下のとおり。
---
import lejos.nxt.Button;
import lejos.nxt.LCD;
import lejos.nxt.Sound;
import lejos.nxt.UltrasonicSensor;

public class USSensor01 {

    public static void main(String[] args) {

        // 超音波センサーオブジェクトをポート4で生成する。
        UltrasonicSensor ultrasonicSensor = 
                     new UltrasonicSensor(SensorPort.S4);
        
        while (!Button.ESCAPE.isPressed()) {
            LCD.refresh();
            
            // 超音波センサーの値の表示
            LCD.drawString("US = " +
                     ultrasonicSensor.getDistance(), 0, 3); 
        }
        Sound.pause(1000);
    }
}
---


以上



JSP で表示するための一工夫

2009年11月16日 | Java
JSP で表示するための一工夫
================================================

■自分自身の Web アプリケーションのパス

リンクの href 属性や、フォームの action 属性など
で URL を指定するときに、自分自身の Web アプリ
ケーションのパスを動的に取得します。

□使い方の例
---
  <form action="${pageContext.request.contextPath}/cart" method="post">
---


${pageContext.request.contextPath} は、
HttpServletRequest インターフェースの
getContextPath() メソッドで取得できるので、EL で
は、これを利用しています。


■クロスサイトスクリプティング対策

基本的には、表示するところで山括弧「<」「>」など
をエスケープします。これをサニタイジングといいま
す。
このための JSTL のタグとして、out タグがあります。

□使い方の例
---
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    :
  <c:out value="${product.name}"/>
---


単純に ${product.name} だけにすると、この name
の中に HTML のタグがあった場合、意図したとおりの
表示になりません。
out タグを使うことで、「<」「>」「&」「'」「"」
をそれぞれ「&lt;」「&gt;」「&amp;」「&apos;」
「&quot;」にエスケープします。


■数値をフォーマットして表示

数値 3桁区切りにしたり、通貨記号をつけて表示しま
す。

□使い方の例
---
  <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
      :
  <fmt:formatNumber value="${product.price}" 
                    type="currency" currencySymbol="" 
                    maxFractionDigits="0"/>
---


□表示結果 (price が 12345 のとき)
---
   12,345
---


この formatNumber タグは、JSTL のコアタグではな
く、国際化タグなので、コアタグの taglib ディレク
ティブとは別に、fmt タグに対する taglib ディレク
ティブを指定する必要があります。

□属性の補足

type "currency" を指定すると、通貨の形式(3桁
区切りで小数点以下第2位まで表示)

currencySymbol 通貨単位。「」を表示する場合は、
「」のようにエスケープする。

maxFractionDigits 小数点以下の最大の桁数。円の
ときは、小数点以下がないのが
普通なので、0 を指定しておく。


以上


Java プログラムでロボットを動かそう

2009年11月05日 | LEGO
ロボットが目覚める! 『中学生からはじめるプログラミング』

対象: 中学生から社会人まで

STEP2.
Java プログラムでロボットを動かそう

開催日 <集中コース>
‘09 年11 月21 日(土) A カリキュラム
‘09 年11 月28 日(土) Bカリキュラム

時間/会場 9 時30 分~17 時 シェアグリッド研修室

受講料
日間お申込み \12,600(税込)
2 日間お申込み \20,160(税込)

カリキュラム

●A カリキュラム
<目標>: JAVA の決まり事を学ぶ
■プログラムとJava を知ろう
■センサーを使って動きを制御しよう
■プログラムを極めよう!<同じ動きを繰り返す>
●Bカリキュラム
<目標>:自分でプログラムを組む
■プログラムを極めよう!<状況判断して動かす>
■イレギュラー(異常事態)も対処しよう
■ロボットを思い通りに動かそう

お申込・お問合せ
045・350・5661
info@enjoy-robo.com
http://www.enjoy-robo.com
有限会社シェアグリッド
横浜市中区山下町252
グランベル横浜ビル6 階
※教材のロボットは、教育用レゴ マインドストームNXT を使用します。