【20140418】【Java】Singletonパターンを使う
お題
Singletonパターンを使う
プログラム概要
Singletonクラスにmain.jspに最初にアクセスした時間を保持しておく。
その後、elapesedtime.jspにアクセスするとSingletonクラス内の時間と
現在の時間の差を計算し画面に表示させる
ソース
GetDate.java(Singletonクラス)
package jp;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
public class GetDate {
private static Date date;
private static GetDate fileDate = new GetDate();
private GetDate(){
date = new Date();
System.out.println("コンストラクタが呼ばれました");
}
public static GetDate getInstance() {
return fileDate;
}
public Date getDateTime() {
return date;
}
}
main.jsp
<%@page import="jp.GetDate"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>日付取得</title>
</head>
<body>
<% GetDate gd = GetDate.getInstance(); %>
<span>起動時の日時は<%= gd.getDateTime().toString() %>です</span>
</body>
</html>
elapsedtime.jsp
<%@page import="java.util.Date"%>
<%@page import="jp.GetDate"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>日付取得</title>
</head>
<body>
<% GetDate gd = GetDate.getInstance(); %>
<% Date currentDate = new Date(); %>
<span>起動からの経過時間は<%= (currentDate.getTime() - gd.getDateTime().getTime())/1000 %>秒です</span>
</body>
</html>
実行結果
main.jsp
elapesedtime.jsp
【20140417】【Javascript】Framesetのframe毎の印刷
お題
Framesetのframe毎の印刷ボタンを作成する
プログラム概要
各フレームの印刷ボタンを押すと、印刷ダイアログが出力される。
その時、そのフレームのみが印刷対象となるようにする。
ソース
framemain.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="ja" />
<title>フレーム印刷</title>
</head>
<frameset cols="30%,*">
<frame src="frame1.html" name="frame1"/>
<frame src="frame2.html" name="frame2"/>
</frameset>
</html>
frame1.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="ja" />
<title>フレーム印刷</title>
</head>
<frameset cols="30%,*">
<frame src="frame1.html" name="frame1"/>
<frame src="frame2.html" name="frame2"/>
</frameset>
</html><!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title></title>
<script type="text/javascript">
function framePrint() {
/* frame1にフォーカスを当てる */
parent.frame1.focus();
/* frame1を印刷 */
parent.frame1.print();
}
</script>
<style type="text/css">
body { background-color:#ffffcc; }
</style>
</head>
<body background="">
<span>frame1</span>
<input type="button" value="印刷" onclick="framePrint()">
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<span>frame1 end</span>
</body>
</html>
frame2.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title></title>
<script type="text/javascript">
function framePrint() {
// frame2にフォーカスを当てる
parent.frame2.focus();
// frame2を印刷
parent.frame2.print();
}
</script>
<style type="text/css">
body { background-color:#ffcccc; }
</style>
</head>
<body background="">
<span>frame2</span>
<input type="button" value="印刷" onclick="framePrint()">
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<span>frame2 end</span>
</body>
</html>
実行結果
「選択されたフレームのみを印刷する」が選択されている。
URL
【20140416】【Java】SAXを使ってXMLの出現要素数を調べる
お題
プログラム概要
XMLの要素の出現件数をMAPに格納しておき、
最後に要素ごとの出現件数を表示する
ソース
SAXSampleMain
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import java.util.*;
public class SAXSampleMain {
public static void main(String[] args) {
// SAXを準備する
SAXParserFactory spf = SAXParserFactory.newInstance();
try {
SAXParser sp = spf.newSAXParser();
// ハンドラを準備する
Handelr1 h1 = new Handelr1();
// 文書を読み込む
sp.parse(new FileInputStream("sample.xml"), h1);
// 各エレメントの数を表示
System.out.println("");
System.out.println("Summary=========");
for(Map.Entry<String, Integer> e : h1.map.entrySet()) {
System.out.println(e.getKey() + " : " + e.getValue());
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
System.exit(1);
} catch (SAXException e) {
e.printStackTrace();
System.exit(1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
}
}
Handelr1
import java.util.HashMap;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
// ハンドラクラス
public class Handelr1 extends DefaultHandler {
public HashMap<String, Integer> map = new HashMap<String, Integer>();
// 文書の開始
public void startDocument() {
System.out.println("Start document");
}
// 文書の終了
public void endDocument() {
System.out.println("End document");
}
// 要素の開始
public void startElement(String namespaceURI, String localName, String qName, Attributes attrs) {
System.out.println(" Start " + qName);
if(map.containsKey(qName)) {
Integer cnt = map.get(qName);
cnt++;
map.put(qName, cnt);
} else {
map.put(qName, 1);
}
}
// 要素の終了
public void endElement(String namespaceURI, String localName, String qName) {
System.out.println(" End " + qName);
}
// 要素内のテキストを表示
public void characters(char[] ch, int start, int length) {
String str = new String(ch, start, length);
System.out.println(" " + str);
}
}
sample.xml
<hoge> <piyo>PIYOTEXT</piyo> <foo></foo> <bar>BARTEXT</bar> <foo></foo> </hoge>
実行結果
Start document Start hoge Start piyo PIYOTEXT End piyo Start foo End foo Start bar BARTEXT End bar Start foo End foo End hoge End document Summary========= hoge : 1 foo : 2 bar : 1 piyo : 1
【20140412】【jQueryMoblie】お気にいりサイトを登録するアプリ
お題
お気に入りサイトを登録するアプリを作る
アプリ概要
お気に入りを追加すると、初期画面にお気に入り一覧が表示される。
(デフォルトで表示されるサイトあり)
初期画面ではタイトルでフィルタすることも可能。
※登録して戻るボタンで戻ると反映されていないというバグがあるが今日はここまでとします。
サイト
下記のサイトにアクセスしてください。
20140411 自分だけのお気に入りサイトを作る
お題
jQuery Mobileで自分だけのお気に入りサイトを作る。
プログラム概要
登録されたサイトへのリンクをクリックするとそのサイトに移動する。
Filterボックスを用意しておき、そこに文字列を入力すると検索して、
対象のサイトだけを表示する。
ソース
<!DOCTYPE html>
<html>
<head>
<title>お気に入り</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<link rel="stylesheet" href="css/jquery.mobile-1.4.2.css"/>
<link rel="stylesheet" href="css/custom.css"/>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="js/jquery.mobile-1.4.2.js"></script>
<script src="js/custom.js"></script>
<style>
.ui-page {
background: #fff url(images/background.jpg);
background-size: cover;
}
</style>
</head>
<body>
<div data-role="page" id="p-listview-filter" data-theme="b" data-add-back-btn="true" data-back-btn-text="戻る">
<div data-role="content">
<h3>お気に入りサイト</h3>
<ul data-role="listview" data-inset="true" data-filter="true">
<li><a href="http://yahoo.co.jp/" data-theme="a">Yahoo!</a></li>
<li><a href="http://google.co.jp/" data-theme="a">Google</a></li>
<li><a href="https://www.facebook.com/" data-theme="a">Facebook</a></li>
<li><a href="http://www.amazon.co.jp/" data-theme="a">Amazon</a></li>
<li><a href="http://gunosy.com/" data-theme="a">Gunosy</a></li>
<li><a href="http://www.rakuten.co.jp/" data-theme="a">楽天</a></li>
</ul>
</div>
</div>
</body>
</html>
URL
http://www4386up.sakura.ne.jp/itiapp/okiniiri/favorite_page1.html