365日アプリケーションブログ

一日一アプリケーションを構築することを目指すブログです。アプリケーションの種類は基本的に気まぐれです。

【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

f:id:mocomei:20140419232026p:plain

elapesedtime.jsp

f:id:mocomei:20140419232046p:plain

【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>

実行結果

f:id:mocomei:20140418002815p:plain

「選択されたフレームのみを印刷する」が選択されている。

URL

フレーム印刷

【20140416】【Java】SAXを使ってXMLの出現要素数を調べる

お題

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

【20140414】【jQueryMobile】ルーレットを作る

お題

ルーレットを作る

プログラム概要

テキストボックスに何かを入力して登録ボタンを押すと

リストに追加される。

ルーレットを押すとルーレットが開始される。

 

ルーレット

【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