IT技術Labo - HouseTect

Javaフリーエンジニアとしての苦悩や、アーキテクトになるための努力の軌跡を掲載しています。.NETとJavaに力を入れた技術情報発信ブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

font-familyの使い方

font-familyfontとは違って単純に文字フォントを指定するCSSプロパティです。

なお、指定したフォントがユーザーの環境にインストールされていない場合には、ブラウザで設定されたデフォルトのフォントで表示されます。

■使い方
さまざまなフォント(serif)

さまざまなフォント(sans-serif)

さまざまなフォント(cursive)

さまざまなフォント(fantasy)

さまざまなフォント(monospace)


上記のソースは続きから。
続きを読む...
スポンサーサイト

<input type="image">タグと<img>タグの違い

<input type="image">タグと<img>タグのどちらを採用するかは、
結果的にやりたいことに依存します。

・tabindex属性について
始めに言うと以下のHTMLは文法エラーになる。
IEとかでは怒られることはないが、誤動作する原因に繋がるので注意が必要である。

まず、<img>タグには「tabindex」属性が存在しない。
その代わり「<input type="image">」には「tabindex」属性が存在します。

ここら辺でも使い方が分かれますね。
たとえば、ImageButtonとして使いたい場合は、きっちり「tabindex」属性を指定するケースが多々あるとおもうので、
その場合は、「<input type="image">」を使いましょう。

・onclickイベントについて
<img>タグでonclickイベントを使う場合、Enterを押下又は、マウスでクリックの2つになります。
スペースの押下ではイベントが反応しません。

<input type="image">ではEnterでもスペースでもイベントが反応します。



<script>
  function JS_Click(){
    alert("クリック");
  }
</script>

<img src="aaa.jpg" tabindex="1" onclick="JS_Click();">
<br>
<img src="aaa.jpg" tabindex="2" onclick="JS_Click();">
<br>
<input type="image" src="aaa.jpg" tabindex="3" onclick="JS_Click();">
<br>
<img src="aaa.jpg" tabindex="4" onclick="JS_Click();">


TomcatでSessionタイムアウトを発生させる方法

Sessionタイムアウトを発生させるためには、以下の記述をweb.xmlに記述するだけです。

今「60」となっているところが、その実際の時間です。
ここは分単位なので、「1」と記述すれば1分になります。

【web.xml】

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
 <session-config>
  <session-timeout>60</session-timeout>
 </session-config>
</web-app>



Sessionをサーブレット側で切りたい場合は、以下のように
「session.invalidate()」を呼びます。

【Servlet】
//HTTP リクエストの処理
public void service(HttpServletRequest request,
          HttpServletResponse response)
          throws ServletException, IOException {

// セッションを取得します
HttpSession session = request.getSession(false);
// セッションが存在する場合
if (session!=null) {
 // セッションを無効にします
 session.invalidate();
}

response.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>セッション終了</title>");
out.println("<meta http-equiv=\"Pragma\" content=\"no-cache\">");
out.println("<meta http-equiv=\"Cache-Control\" content=\"no-cache\">");
out.println("<meta http-equiv=\"Expires\" content=\"-1\">");
out.println("</head>");
out.println("<body onLoad=\"focus()\">");
out.println("セッションを終了しました");
out.println("</body>");
out.println("</html>");
}

トランザクション内でのDML処理は自動でロックを取得している

1トランザクション内でUPDATEなどのDMLを実行し、
さらに同じトランザクションで同じレコードをUPDATEするような場合があるだろう。

例:
▼トランザクション開始
①KUBUN = '1'

処理によって
②KUBUN = '2'
▲トランザクション終了

しかも、ロックなどの処理が以下のような場合

★前処理で排他シーケンスを取得する。(※1)

▼トランザクション開始

・1回目のUPDATE
 →排他シーケンスを見る。
 →同じだったら、ダレも更新していないので、自分が更新する。

・2回目のUPDATE(1回目と同レコード)
 →排他シーケンスを見ないで更新。

▲トランザクション終了


排他シーケンスのような連番をロック用に指定していて、
誰かが更新していたら排他シーケンスがインクリメントされているような処理を行っていた場合、

上記でKUBUNを1にして、その後にKUBUNを2に変更するこの間でダレかが更新していたらどうだろう。

ダレかが更新したレコードに対して、さらに2回目のUPDATEで上書きしてしまう。

なんてことを1時間ほど考えていたら、OracleではUPDATEなどのDMLが実行されたら、
Commitされるまでそのレコードのロックを取得しているので、他の人は更新かけられないことを思い出した!笑
でもこうやっていろいろ考えるのもまた大切なのかもしれない。


※1 排他シーケンスとは?

ここでは単純に例だが、更新処理のときの楽観ロックとして、日付を見るのが基本だが、
たまに、このようなどんどんインクリメントしていくシーケンシャルなカラムを使用する場合がある。

Strutsでサニタイジングするには?

Strutsを使用しているWebシステムで、サニタイジングを考慮するシチュエーションは多々あると思います。

本来ならばHTMLをレンダリングする直前(サーバーからデータがクライアントに帰る直前)にサニタイジングを実施するのですが、その辺の面倒な部分はある程度Strutsが提供しているカスタムタグを使用すると自動的にやってくれるようです。

<bean:write>タグがまさにそうです。
このタグを使用して画面に出力すれば「<」や「>」などの基本的なHTMLタグは置換されて表示されます。

現時点で検証済みなのは、
<bean:write>タグ
<html:text>タグ

Strutsの提供している機能には本当にビックリします!笑

HTMLでdisabledにスタイル指定したい場合

実際このような場合は少ないですが、下記のようにすればうまくいくみたいです。
ただし主要のブラウザで使えないため、やっぱり使う機会は少なそうです。
参考までに。

<!-- disabledにしたテキストボックスの文字の色の指定 -->
<!-- IE6 sp2 × まったく設定できない
Netscape 7.1 ○
Opera 8.5 背景色は設定できたが、文字色が設定できない(bug?)
FireFox 1.0.7 ○
-->
<style>
 input[disabled] {color:red;}
</style>

<input class="aaa" type="text" disabled="true" readonly="readonly" value="aaaaaaaa">

ブラウザでENTERキーを押されてもSubmitしないようにする方法

Webシステムの開発仕様にもよりますが、ENTERキーを押された場合に勝手にSubmitされるのが嫌な場合があります。

そんなときは、BODYのonKeyDownイベントに以下のメソッドを追加するだけ。

これでENTERキーをTABキーの動きに変更することができます。

/**
* Enterキーが押されたときに「TABキーが押された」イベントにする
* メソッド
*/
function entryTab() {
 if (event.keyCode == 13)
  event.keyCode = 9;
}

OracleのTO_CHARの桁数を超えた場合は#に置換される

ちょっとハマりましたが、TO_CHARする第二引数で、
TO_CHAR( NO, 'FM0.0' )
こんな風にフォーマットを指定するカラムの値が「10.0」だった場合は桁数分で「####」と置換されてSELECTされてしまう。

TO_DATEの時刻式まとめ

20070302155402.jpg


[via]
Caché SQL リファレンス Static Version

String型からInt型、又はInt型からString型

Javaでよく使う2つのキャスト方法です。
FormBeanから値を取ってきて、それをFor文でまわす~。
みたいなときに重宝しています。

■String型からInt型
int val = 12345;

//int型をString型に変換
String str = String.valueOf(val);

■Int型からString型
String str = new String("12345");

//String型をint型に変換
int i = Integer.parseInt( str );

HTMLイベント onchange()とonblur()の呼ばれる順番

onchangeイベントでfocus()がうまく動かない症状が出たので、
実際の処理はonchange()で処理し、その後のフォーカス移動に関しては、
onblur()で実行するようにした。

<html>
 <head>
 </head>
 <body>
  <input type="text" onchange="alert('onchangeです。');" onblur="alert('onblurです。');"
 </body>
</html>

上記のソースで、テキストボックスに値を入れ、Tabキーを押すと、
onchange()が実行され、
その後にonblur()が実行される。

Pickup Link!

COUNTER



RSSの登録はこちらからどうぞ。
RSS

ブログ内の検索

Google

プロフィール

Hisasann

Author:Hisasann
かなり走り書きなブログで申し訳ないです。個人のメモ程度に使っていますが、よかったら参考にしてくださいね。メールまってま~す。

相互リンク募集しています。 下記メアドまでメールください。
Rastaman@Mixi
Rastaman@コトノハ
Rastaman@テクノラティ

アクセスランキング

ブログパーツ

ブログランキング



ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。