<!DOCTYPE html>
<html>
<head>
<meta charset="BIG5">
<title>Insert title here</title>
<script type="text/javascript" src="json.js"></script>
<script>
var people =
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]
};
alert(people.programmers[0].firstName);
var stuents=new Object();
stuents.name="egg";
stuents.scope=100;
alert(stuents.toJSONString());
</script>
</head>
<body>
</body>
</html>
2013年9月29日 星期日
2013年9月27日 星期五
login流程設計&分析
1.login的機制要完成
登入成功:帳號要存在變數,將isLogined=true
登入失敗:免做
2.是否要記住帳號 :
沒勾==>>勾選-->立即檢查islogined -->true:立即存帳號
-->false:沒事,等登入鈕按下-->再存
勾選 ==>>沒勾:show對話框-->NO:沒事
-->YES:delete file(或刪內容)
3.離開程式,再執行:檢查,A.有無勾選狀態要儲存B.若有勾選,id.setText("先前帳號'),否則沒事。
登入成功:帳號要存在變數,將isLogined=true
登入失敗:免做
2.是否要記住帳號 :
沒勾==>>勾選-->立即檢查islogined -->true:立即存帳號
-->false:沒事,等登入鈕按下-->再存
勾選 ==>>沒勾:show對話框-->NO:沒事
-->YES:delete file(或刪內容)
3.離開程式,再執行:檢查,A.有無勾選狀態要儲存B.若有勾選,id.setText("先前帳號'),否則沒事。
補充JAVA檔案API
JAVA檔案API
1.分兩大類:
A.檔案管理:
向name、size、datetime、attribute、delete
B.檔案讀寫:
以甚麼單位讀寫 、採覆蓋()或銜接模式
2.重點:
A.不論FILE或FOLDER皆已File類別宣告
B.宣告File不代表已建立folder、file
C.建folder,須以mkdirs()或mkdir()。
建file,須以createNewFile()。
D.File建構子可填絕對路徑(EX:C:\books)
或相對路徑 (EX:.\books【本身一層】 或..\books【上一層】)
E.常用API有exists()、isDirectory()、getName()、isFile、remaneTo()、list()、lastModified()、length()。
1.分兩大類:
A.檔案管理:
向name、size、datetime、attribute、delete
B.檔案讀寫:
以甚麼單位讀寫 、採覆蓋()或銜接模式
2.重點:
A.不論FILE或FOLDER皆已File類別宣告
B.宣告File不代表已建立folder、file
C.建folder,須以mkdirs()或mkdir()。
建file,須以createNewFile()。
D.File建構子可填絕對路徑(EX:C:\books)
或相對路徑 (EX:.\books【本身一層】 或..\books【上一層】)
E.常用API有exists()、isDirectory()、getName()、isFile、remaneTo()、list()、lastModified()、length()。
監聽器的三種基本用法
1.以所在的類別實作監聽器
2.宣告一個【具名類別】並加以實體化(紅色字體)
3.宣告一個【匿名類別】並加以實體化
package com.example.onclick_1;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class OnClick extends Activity {
int count =0;
Button bt1;
// 2. 實作 OnClick 監聽器 step #1
// class MyOnClickListener implements OnClickListener {
//
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// count++;
// setTitle(count+"");
// }
// }
// MyOnClickListener listener = new MyOnClickListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_on_click);
bt1 = (Button) findViewById(R.id.button1);
// 1. 註冊 OnClick 監聽器
// bt1.setOnClickListener(this);
// bt1.setOnClickListener(listener);
bt1.setOnClickListener( new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
count++;
setTitle(count+"");
}} );
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.on_click, menu);
return true;
}
// 2. 實作 OnClick 監聽器 step #2
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// count++;
// setTitle(count+"");
// }
}
2.宣告一個【具名類別】並加以實體化(紅色字體)
3.宣告一個【匿名類別】並加以實體化
package com.example.onclick_1;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class OnClick extends Activity {
int count =0;
Button bt1;
// 2. 實作 OnClick 監聽器 step #1
// class MyOnClickListener implements OnClickListener {
//
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// count++;
// setTitle(count+"");
// }
// }
// MyOnClickListener listener = new MyOnClickListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_on_click);
bt1 = (Button) findViewById(R.id.button1);
// 1. 註冊 OnClick 監聽器
// bt1.setOnClickListener(this);
// bt1.setOnClickListener(listener);
bt1.setOnClickListener( new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
count++;
setTitle(count+"");
}} );
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.on_click, menu);
return true;
}
// 2. 實作 OnClick 監聽器 step #2
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// count++;
// setTitle(count+"");
// }
}
2013年9月25日 星期三
上課筆記-findViewByID( *** )重點
1.此為ANDROID指令,為在JAVA和調色板之間做溝通。
2.***為ID參數,用法為R.id.[]
R:在gen/R.java,此為自動產生的檔案,勿修改。
.id為R的內部靜態類別。
[]為調色板內所定義的id代號。
3.用法:et1=(EditText) findViewById(R.id.editText1);
(EditText) =>多形的應用,可轉成對應的子類別。
findViewById=>原本傳回父類別View。
2.***為ID參數,用法為R.id.[]
R:在gen/R.java,此為自動產生的檔案,勿修改。
.id為R的內部靜態類別。
[]為調色板內所定義的id代號。
3.用法:et1=(EditText) findViewById(R.id.editText1);
(EditText) =>多形的應用,可轉成對應的子類別。
findViewById=>原本傳回父類別View。
DOM的寫法-
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<jsp:useBean id="mylist" scope="page" class="com.shaojung.shopping.CategoryDAO" />
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
pageContext.setAttribute("catlist", mylist.getlistbyMainID(0));
%>
<!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>Insert title here</title>
<script language="javascript" type="text/javascript">
var request = new XMLHttpRequest();
function funclick()
{
var id = document.getElementById("MainID").value;
request.open("GET", "GetSubCategory.jsp?ID=" + id, false);
request.onreadystatechange = updatePage;
request.send(null);
}
function updatePage() {
if (request.readyState == 4)
if (request.status == 200)
{
var ops = request.responseText.split('|');
var selectbox=document.getElementById("SubID");
for (var j=ops.length-1;j>=0;j--)
{
selectbox.remove(j);
}
for (var i=0;i<ops.length;i++)
{
var new_option = new Option(ops[i], i);
selectbox.options.add(new_option);
}
}
// document.getElementById("show").innerHTML = request.responseText;
}
</script>
</head>
<body>
<p>
<label for="MainID">分類</label>
<select name="MainID" id="MainID" onchange="funclick()">
<c:forEach items="${catlist}" var="item">
<option value="${item.ID}">${item.CName}</option>
</c:forEach>
</select>
</p>
<p><span id="show"></span></p>
<label for="SubID">子分類</label>
<select name="SubID" id="SubID">
</select>
</body>
</html>
pageEncoding="utf-8"%>
<jsp:useBean id="mylist" scope="page" class="com.shaojung.shopping.CategoryDAO" />
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
pageContext.setAttribute("catlist", mylist.getlistbyMainID(0));
%>
<!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>Insert title here</title>
<script language="javascript" type="text/javascript">
var request = new XMLHttpRequest();
function funclick()
{
var id = document.getElementById("MainID").value;
request.open("GET", "GetSubCategory.jsp?ID=" + id, false);
request.onreadystatechange = updatePage;
request.send(null);
}
function updatePage() {
if (request.readyState == 4)
if (request.status == 200)
{
var ops = request.responseText.split('|');
var selectbox=document.getElementById("SubID");
for (var j=ops.length-1;j>=0;j--)
{
selectbox.remove(j);
}
for (var i=0;i<ops.length;i++)
{
var new_option = new Option(ops[i], i);
selectbox.options.add(new_option);
}
}
// document.getElementById("show").innerHTML = request.responseText;
}
</script>
</head>
<body>
<p>
<label for="MainID">分類</label>
<select name="MainID" id="MainID" onchange="funclick()">
<c:forEach items="${catlist}" var="item">
<option value="${item.ID}">${item.CName}</option>
</c:forEach>
</select>
</p>
<p><span id="show"></span></p>
<label for="SubID">子分類</label>
<select name="SubID" id="SubID">
</select>
</body>
</html>
2013年9月23日 星期一
sql-convert語法
SELECT 訂單.訂單序號,convert(char,訂單.日期,111),客戶.客戶名稱 from 訂單 inner join 客戶 on 訂單.客戶編號=客戶.客戶編號
convert有三個引數,
convert有三個引數,
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
style是用數字代表,可用google用msql convert關鍵字查詢:
11 = yy/mm/dd
111 = yyyy/mm/dd
2013年9月17日 星期二
JSP語法-連結資料庫
<%@ page language="java" contentType="text/html; charset=BIG5"
pageEncoding="BIG5"%>
<%@page import="java.sql.*"%>
<!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=BIG5">
<title>Insert title here</title>
</head>
<body>
<%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost:1433;"
+ "databaseName=Students;user=sa;password=123456;";
Connection con = DriverManager.getConnection(connectionUrl);
if (con.isClosed()) {
out.println("jdbs is closed!關閉中");
} else {
out.println("jdbs is opened!開啟中");
}
con.close();
if (con.isClosed()) {
out.println("jdbs is closed!");
} else {
out.println("jdbs is opened!");
}
%>
</body>
</html>
pageEncoding="BIG5"%>
<%@page import="java.sql.*"%>
<!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=BIG5">
<title>Insert title here</title>
</head>
<body>
<%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost:1433;"
+ "databaseName=Students;user=sa;password=123456;";
Connection con = DriverManager.getConnection(connectionUrl);
if (con.isClosed()) {
out.println("jdbs is closed!關閉中");
} else {
out.println("jdbs is opened!開啟中");
}
con.close();
if (con.isClosed()) {
out.println("jdbs is closed!");
} else {
out.println("jdbs is opened!");
}
%>
</body>
</html>
2013年9月16日 星期一
SQL語法--表格關聯、條件篩選 、排列順序、群組
SELECT 訂單.訂單序號, 訂單.日期, 客戶.客戶名稱 FROM 訂單 inner join 客戶 on 客戶.客戶編號=訂單.客戶編號 where 客戶名稱='一品書店' order by 訂單.訂單序號 asc;
表格關聯
from 表格1名稱 inner join 表格2名稱 on 表格1.客戶編號欄位=表格2.客戶編號欄位
條件篩選 (客戶名稱為一品書局):
where 客戶名稱='一品書店'
排列順序(訂單序號排序):
order by 訂單.訂單序號 ----由小到大
order by 訂單.訂單序號 desc ----由大到小
群組(Sum.....GROUP BY...)
SELECT 訂單.客戶編號, Sum(明細加小記.小記) AS 小記之總計
FROM 明細加小記 INNER JOIN 訂單 ON 明細加小記.訂單序號 = 訂單.訂單序號
GROUP BY 訂單.客戶編號;
表格關聯
from 表格1名稱 inner join 表格2名稱 on 表格1.客戶編號欄位=表格2.客戶編號欄位
條件篩選 (客戶名稱為一品書局):
where 客戶名稱='一品書店'
排列順序(訂單序號排序):
order by 訂單.訂單序號 ----由小到大
order by 訂單.訂單序號 desc ----由大到小
群組(Sum.....GROUP BY...)
SELECT 訂單.客戶編號, Sum(明細加小記.小記) AS 小記之總計
FROM 明細加小記 INNER JOIN 訂單 ON 明細加小記.訂單序號 = 訂單.訂單序號
GROUP BY 訂單.客戶編號;
2013年9月14日 星期六
JSP-javaBean、setProperty演練:改寫登入流程
登入流程:login.jsp--->check.jsp--->ok.jsp或fail.jsp
check.jsp使用ChkLogin.java這支程式。
login.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="check.jsp">
<p>
<label for="username">帳號:</label>
<input type="text" name="username" id="username" value="${cookie.username.value}"/>
</p>
<p>密碼:
<input type="password" name="password" id="password" />
</p>
<p>
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
</html>
check.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="objCheck" scope="page" class="t0915.ChkLogin" />
<jsp:setProperty name="objCheck" property="userName" param="username" />
<jsp:setProperty name="objCheck" property="pwd" param="password" />
<%
if (objCheck.check())
{
session.setAttribute("login", "ok");
session.setAttribute("username", objCheck.getUserName());
Cookie myCookie = new Cookie("username", objCheck.getUserName());
myCookie.setMaxAge(60);
response.addCookie(myCookie);
response.sendRedirect("ok.jsp");
}
else
{
response.sendRedirect("fail.jsp");
}
%>
ChkLogin.java
package t0915;
public class ChkLogin {
private String name;
private String pwd;
public ChkLogin()
{
}
public void setUserName(String u)
{
name = u;
}
public String getUserName()
{
return name;
}
public void setPwd(String p)
{
pwd = p;
}
public String getPwd()
{
return pwd;
}
public boolean check()
{
if (name.equals("abc") && pwd.equals("123"))
return true;
else
return false;
}
}
check.jsp使用ChkLogin.java這支程式。
login.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="check.jsp">
<p>
<label for="username">帳號:</label>
<input type="text" name="username" id="username" value="${cookie.username.value}"/>
</p>
<p>密碼:
<input type="password" name="password" id="password" />
</p>
<p>
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
</html>
check.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="objCheck" scope="page" class="t0915.ChkLogin" />
<jsp:setProperty name="objCheck" property="userName" param="username" />
<jsp:setProperty name="objCheck" property="pwd" param="password" />
<%
if (objCheck.check())
{
session.setAttribute("login", "ok");
session.setAttribute("username", objCheck.getUserName());
Cookie myCookie = new Cookie("username", objCheck.getUserName());
myCookie.setMaxAge(60);
response.addCookie(myCookie);
response.sendRedirect("ok.jsp");
}
else
{
response.sendRedirect("fail.jsp");
}
%>
ChkLogin.java
package t0915;
public class ChkLogin {
private String name;
private String pwd;
public ChkLogin()
{
}
public void setUserName(String u)
{
name = u;
}
public String getUserName()
{
return name;
}
public void setPwd(String p)
{
pwd = p;
}
public String getPwd()
{
return pwd;
}
public boolean check()
{
if (name.equals("abc") && pwd.equals("123"))
return true;
else
return false;
}
}
2013年9月13日 星期五
stil-fmt<標籤函式庫>
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date"/>
<p><fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/></p>
<p><fmt:formatDate value="${now}" type="date" dateStyle="medium"/></p>
<p><fmt:formatDate value="${now}" type="date" pattern="MM-dd-YYYY"/></p>
</body>
</html>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date"/>
<p><fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/></p>
<p><fmt:formatDate value="${now}" type="date" dateStyle="medium"/></p>
<p><fmt:formatDate value="${now}" type="date" pattern="MM-dd-YYYY"/></p>
</body>
</html>
jstl-functions標籤函式庫
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
${fn:contains("this is a test","ths")}
<P>${fn:substring("abcdefg",2,5)}</P>
<P>${fn:substringAfter("this is a test","a")}</P>
<P>${fn:substringBefore("this is a test","a")}</P>
</body>
</html>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
${fn:contains("this is a test","ths")}
<P>${fn:substring("abcdefg",2,5)}</P>
<P>${fn:substringAfter("this is a test","a")}</P>
<P>${fn:substringBefore("this is a test","a")}</P>
</body>
</html>
jstl-編碼問題設定
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<c:set value="OK" var="login" scope="session"/>
<fmt:requestEncoding value="utf-8"/>
<c:choose>
<c:when test="${param.username != '' && param.password !=''}">
${param.username}
<c:redirect url="ok.jsp"/>
</c:when>
<c:otherwise>
<c:redirect url="fail.jsp"/>
</c:otherwise>
</c:choose>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<c:set value="OK" var="login" scope="session"/>
<fmt:requestEncoding value="utf-8"/>
<c:choose>
<c:when test="${param.username != '' && param.password !=''}">
${param.username}
<c:redirect url="ok.jsp"/>
</c:when>
<c:otherwise>
<c:redirect url="fail.jsp"/>
</c:otherwise>
</c:choose>
stil-for&forEach& for Tokens迴圈演練
綠色字體是for迴圈,輸出為1~10
紅色字體是 forEach,透過script定義陣列變數,用request參數設定內容。輸出為a,b,c,d。
紫色字體是 forEach,輸出為b,d。
藍色字體是 for Tokens,輸出為台北 高雄 屏東 林口 台中 台東
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String[] myarray={"a","b","c","d"};
request.setAttribute("myarrays",myarray);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<c:forEach var="myitems" begin="1" end="10" >
${myitems}
</c:forEach>
<c:forEach items="${myarrays}" var="myitems2">
<P> ${myitems2}</P>
</c:forEach>
forEach2:
<c:forEach items="${myarrays}" var="myitems3" begin="1" end="3" step="2">
<P> ${myitems3}</P>
</c:forEach>
for Tokens:
<c:forTokens var="myitems4" items="台北,高雄,屏東,林口,台中,台東" delims=",">
<P> ${myitems4}</P>
</c:forTokens>
</body>
</html>
2013年9月12日 星期四
stil-choose改寫if..else法
choose內的when.....otherwise類似於script的if...else 。
原有程式
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("abc") && password.equals("123"))
{
session.setAttribute("login", "ok");
response.sendRedirect("ok.jsp");
}
else
{
response.sendRedirect("fail.jsp");
}
%>
可改寫為
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set value="OK" var="login" scope="session"/>
<c:choose>
<c:when test="${param.username != '' && param.password !=''}">
<c:redirect url="ok.jsp"/>
</c:when>
<c:otherwise>
<c:redirect url="fail.jsp"/>
</c:otherwise>
</c:choose>
原有程式
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("abc") && password.equals("123"))
{
session.setAttribute("login", "ok");
response.sendRedirect("ok.jsp");
}
else
{
response.sendRedirect("fail.jsp");
}
%>
可改寫為
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set value="OK" var="login" scope="session"/>
<c:choose>
<c:when test="${param.username != '' && param.password !=''}">
<c:redirect url="ok.jsp"/>
</c:when>
<c:otherwise>
<c:redirect url="fail.jsp"/>
</c:otherwise>
</c:choose>
jstl-if演練
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<c:if test="${4>2}">
<c:out value="ok"/>
</c:if>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<c:if test="${4>2}">
<c:out value="ok"/>
</c:if>
</body>
</html>
jstl-param演練
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="get.jsp">
<p>
<label for="username"></label>
<input type="text" name="username" id="username" />
</p>
<p>
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
</html>
---------------------------------------------------------------------------------------------------
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
${param.username} //用param可以將username的變數值呼叫出來
</body>
</html>
jstl-import演練
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<c:import url="intstr.jsp" /> //單獨匯入intstr.jsp
<c:import url="inc.jsp" var="str"/>
<p>mystr: ${str}</p> //透過參數呼叫網頁
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<c:import url="intstr.jsp" /> //單獨匯入intstr.jsp
<c:import url="inc.jsp" var="str"/>
<p>mystr: ${str}</p> //透過參數呼叫網頁
</body>
</html>
jstl-url設定演練。
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<a href="<c:url value="004.jsp">
<c:param value="123" name="id" />
</c:url>">連到004 </a>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<a href="<c:url value="004.jsp">
<c:param value="123" name="id" />
</c:url>">連到004 </a>
</body>
</html>
jstl用Java script叫出
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set value="my test!" var="tt" scope="request" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<%
String str=(String)request.getAttribute("tt");
out.println(str);
%>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set value="my test!" var="tt" scope="request" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<%
String str=(String)request.getAttribute("tt");
out.println(str);
%>
</body>
</html>
標籤庫jstl-匯入與使用
JSTL是另一個標準規範,本身並非在JSP的規範當中,所以必須另外下載JSTL的API與實作。
以下兩個為Tomcat 的函式庫路徑
C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\ROOT\WEB-INF\lib (針對單一網站使用的函式庫)
將下載的jstl.jar放入上述第一個路徑即可。
要使用JSTL核心標籤庫,必須在JSP網頁上,使用taglib指示元素定義前置文件與uri參考。
------------------------------------------------------------
<body>
<c:set value="這是預設的值" var="str"/>
${str} //會印出str變數值
<c:out value="test"/>
</body>
以下兩個為Tomcat 的函式庫路徑
C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\ROOT\WEB-INF\lib (針對單一網站使用的函式庫)
將下載的jstl.jar放入上述第一個路徑即可。
要使用JSTL核心標籤庫,必須在JSP網頁上,使用taglib指示元素定義前置文件與uri參考。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
------------------------------------------------------------
<body>
<c:set value="這是預設的值" var="str"/>
${str} //會印出str變數值
<c:out value="test"/>
</body>
session隱含物件範例
session是存放在伺服器端。
session1.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
session.setAttribute("login","ok");
%>
-------------------------------------------------------------------------------------------------------
session2.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<%
String s=(String)session.getAttribute("login");
out.println(s);
%>
</body>
</html>
session1.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
session.setAttribute("login","ok");
%>
-------------------------------------------------------------------------------------------------------
session2.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<%
String s=(String)session.getAttribute("login");
out.println(s);
%>
</body>
</html>
cookies隱含物件
cookies是儲存在客戶端。
cookies存活時間若沒有設定,瀏覽器關閉就會消失。
若有設定,則會以文字檔
cookies.jsp
<%
Cookie mycookie=new Cookie("username","egg");
mycookie.setMaxAge(60);
response.addCookie(mycookie);
%>
cookies_read.jsp
<body>
<%
Cookie[] cookies=request.getCookies();
out.println(cookies[0].getName());
%>
</body>
2013年9月11日 星期三
利用application隱含物件範例
application為一個用於在Tomcat隱含物件。
count變數是我們自訂的。
<%
String str=(String)application.getAttribute("count");
if(str==null){ //檢查str物件是否有指向application物件,並不是檢查這個物件為空,故不用equals。
str="0";
}
int c=Integer.valueOf(str);
c++;
str=String.valueOf(c);
application.setAttribute("count",str);
out.println("走訪人數為:"+str);
Enumeration values=application.getAttributeNames();
String s;
while(values.hasMoreElements()){
s=(String)values.nextElement();
out.println(s+"</br>");
}
%>
JSP網頁-隱含物件
JAVA內有很多的隱含物件,可以方便使用。
如果使用Math的物件則需匯入 。
<%@ page import="java.lang.*"%> //匯入物件
<body>
<%
double vaule=Math.pow(2,5); //要設為double
out.println(vaule);//隱含物件
%>
</body>
如果使用Math的物件則需匯入 。
<%@ page import="java.lang.*"%> //匯入物件
<body>
<%
double vaule=Math.pow(2,5); //要設為double
out.println(vaule);//隱含物件
%>
</body>
登入帳號密碼-傳統JSP網頁寫法。
建立4個檔案
使用者登入畫面login.jsp-->判斷check.jsp-->ok.jsp或fail.jsp
login.jsp
<body>
<form id="form1" name="form1" method="post" action="/0910/check.jsp">
<p>
<label for="username">姓名:</label> //使用label可以讓使用者點到姓名時,游標直接到姓名的文字框
<input type="text" name="username" id="username" />
</p>
<p>
<label for="pwd"> 密碼:</label>
<input type="password" name="pwd" id="pwd" />
</p>
<p>
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
-------------------------------------------------------------------------------------------------------------
check.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
request.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String pwd=request.getParameter("pwd");
if(username.equals("")||pwd.equals("")){
response.sendRedirect("fail.jsp");
}else{
session.setAttribute("login","ok");
response.sendRedirect("ok.jsp");
}
%>
-----------------------------------------------------------------------------------------------------------------
ok.jsp
<%
String susername=(String)session.getAttribute("login");
if(susername==null){
response.sendRedirect("login.jsp");
}
%>
fail.jsp就隨自己要給使用著甚麼資訊。
使用者登入畫面login.jsp-->判斷check.jsp-->ok.jsp或fail.jsp
login.jsp
<body>
<form id="form1" name="form1" method="post" action="/0910/check.jsp">
<p>
<label for="username">姓名:</label> //使用label可以讓使用者點到姓名時,游標直接到姓名的文字框
<input type="text" name="username" id="username" />
</p>
<p>
<label for="pwd"> 密碼:</label>
<input type="password" name="pwd" id="pwd" />
</p>
<p>
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
-------------------------------------------------------------------------------------------------------------
check.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
request.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String pwd=request.getParameter("pwd");
if(username.equals("")||pwd.equals("")){
response.sendRedirect("fail.jsp");
}else{
session.setAttribute("login","ok");
response.sendRedirect("ok.jsp");
}
%>
-----------------------------------------------------------------------------------------------------------------
ok.jsp
<%
String susername=(String)session.getAttribute("login");
if(susername==null){
response.sendRedirect("login.jsp");
}
%>
fail.jsp就隨自己要給使用著甚麼資訊。
泛型集合類別-ListIterator介面輸出元素
import java.util.ArrayList;
import java.util.ListIterator;
public class ch10_6_4_listiterator {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
ArrayList<String> alist = new ArrayList<String>();
alist.add("台北");
alist.add("林口");
alist.add("桃園");
alist.add("基隆");
System.out.println("ArrayList的元素為: " + alist);
ListIterator<String> lterator = alist.listIterator(0);
System.out.print("ListIterator的元素為: ");
while (lterator.hasNext()) {
System.out.print(lterator.next() + " ");
}
ListIterator<String> literator1 = alist.listIterator(alist.size());
System.out.println("");
System.out.print("ListIterator的元素為(反向): ");
while(literator1.hasPrevious()){
System.out.print(literator1.previous()+ " ");
}
}
}
import java.util.ListIterator;
public class ch10_6_4_listiterator {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
ArrayList<String> alist = new ArrayList<String>();
alist.add("台北");
alist.add("林口");
alist.add("桃園");
alist.add("基隆");
System.out.println("ArrayList的元素為: " + alist);
ListIterator<String> lterator = alist.listIterator(0);
System.out.print("ListIterator的元素為: ");
while (lterator.hasNext()) {
System.out.print(lterator.next() + " ");
}
ListIterator<String> literator1 = alist.listIterator(alist.size());
System.out.println("");
System.out.print("ListIterator的元素為(反向): ");
while(literator1.hasPrevious()){
System.out.print(literator1.previous()+ " ");
}
}
}
實作List介面的集合物件除了可以使用Iterator介面外,還可以使用ListIterator介面,這是Iterator介面的子介面。ListIterator介面除了使用一致走訪方法外,還可以雙向走訪集合物件的元素,即從頭到尾,或從尾到頭來走訪元素。
當總經理說了這句話,你會有甚麼回應。
總經理:現在公司有兩種人;一種是等著下班的人,一種是等著被資遣的人。
回想到當初聽到這一句話的感覺是,覺得很好笑。
一位好的管理人員,不應該說出這一句話。
如果是認真上班的員工,會覺得原來我的努力,在主管的眼中,根本就不屑一顧。那還需要繼續努力工作嗎!!
如果是混水摸魚的員工,會覺得大家都是這樣。更加放肆。
把這件事,講給朋友聽。有人覺得公司準備收了;有人一笑置之。
最高竿的就是一笑置之的人。
我想每個人都有發言的權利,而我不應該為了這句話耿耿於懷。
說話的藝術,是需要練習的。
不經大腦說出來的話,通常都是氣話。一般而言是沒有任何價值。
大部分人......包括我,都會被某些話大動肝火。
動了肝火,傷身又傷錢。
勸大家沒跟自己過不去,很多事看過就給他忘了;很多話聽過就給他飛過就好了。
把一些時間與精力花在比較跟自身有關的事務上,比較實在。
回想到當初聽到這一句話的感覺是,覺得很好笑。
一位好的管理人員,不應該說出這一句話。
如果是認真上班的員工,會覺得原來我的努力,在主管的眼中,根本就不屑一顧。那還需要繼續努力工作嗎!!
如果是混水摸魚的員工,會覺得大家都是這樣。更加放肆。
把這件事,講給朋友聽。有人覺得公司準備收了;有人一笑置之。
最高竿的就是一笑置之的人。
我想每個人都有發言的權利,而我不應該為了這句話耿耿於懷。
說話的藝術,是需要練習的。
不經大腦說出來的話,通常都是氣話。一般而言是沒有任何價值。
大部分人......包括我,都會被某些話大動肝火。
動了肝火,傷身又傷錢。
勸大家沒跟自己過不去,很多事看過就給他忘了;很多話聽過就給他飛過就好了。
把一些時間與精力花在比較跟自身有關的事務上,比較實在。
2013年9月10日 星期二
泛型集合類別-Iterator介面輸出元素
import java.util.HashSet;
import java.util.Iterator;
public class ch10_6_3 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
HashSet<String> hset=new HashSet<String>();
hset.add("三芝");
hset.add("淡水");
hset.add("金山");
System.out.println("Hashset方法呼叫內容為:"+hset);
Iterator<String> iterator=hset.iterator();
System.out.print("Iteretor介面呼叫內容為:");
while(iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
}
}
import java.util.Iterator;
public class ch10_6_3 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
HashSet<String> hset=new HashSet<String>();
hset.add("三芝");
hset.add("淡水");
hset.add("金山");
System.out.println("Hashset方法呼叫內容為:"+hset);
Iterator<String> iterator=hset.iterator();
System.out.print("Iteretor介面呼叫內容為:");
while(iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
}
}
使用Collection、Set和List介面的iterator()方法,就可以取得Iterator<E>介面物件。
例如:HashSet<String>物件hset可以使用上表方法取得Iterator介面物件,如下所示:
Iterator<String> iterator = hset.iterator();
例如:HashSet<String>物件hset可以使用上表方法取得Iterator介面物件,如下所示:
Iterator<String> iterator = hset.iterator();
Android App實作:ListView +button
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity {
ListView LV01;
Button BT01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//連結
LV01=(ListView) this.findViewById(R.id.LV01);
BT01=(Button) this.findViewById(R.id.BT01);
//定義事件
BT01.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO 自動產生的方法 Stub
ArrayList<String> alist=new ArrayList<String>();
alist.add("小白");
alist.add("小叮噹");
alist.add("小叮鈴");
alist.add("小新");
ArrayAdapter <String> Aadapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, alist);
LV01.setAdapter(Aadapter);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity {
ListView LV01;
Button BT01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//連結
LV01=(ListView) this.findViewById(R.id.LV01);
BT01=(Button) this.findViewById(R.id.BT01);
//定義事件
BT01.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO 自動產生的方法 Stub
ArrayList<String> alist=new ArrayList<String>();
alist.add("小白");
alist.add("小叮噹");
alist.add("小叮鈴");
alist.add("小新");
ArrayAdapter <String> Aadapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, alist);
LV01.setAdapter(Aadapter);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
泛型集合類別-ArrayList類別
import java.util.ArrayList;
public class ch10_6_2_arraylist {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
ArrayList<String> alist = new ArrayList<String>(4);
String name = "蠟筆小新";
alist.add("小丸子");
alist.add("蠟筆小新");
alist.add("小甜甜");
alist.add("小叮噹");
System.out.println("物件尺寸:" + alist.size());
alist.add(2, name);//新增元素
System.out.println("物件尺寸:" + alist.size());
System.out.println("集合物件(1):");
for (int i = 0; i < alist.size(); i++) { //利用迴圈取得元素
System.out.print(i + ")" + alist.get(i) + " ");
}
System.out.println(" ");
System.out.println("集合物件(2):");
for (String element : alist) {
System.out.print(element + " ");
}
System.out.println(" ");
System.out.println("搜尋:"+name);
System.out.println("indexOf():"+alist.indexOf(name));
System.out.println("lastindexOf():"+alist.lastIndexOf(name));
alist.set(3,"小叮鈴");//取代元素
System.out.println("取代元素三:"+alist);
alist.remove(0);//刪除元素
System.out.println("取代元素0:"+alist);
}
}
ArrayList類別實作List介面,使用類似陣列方式來儲存,元素是使用索引位置來依序的存入,我們只需將元素新增或插入ArrayList物件,並不用事先宣告物件尺寸,如同一種可自動調整陣列尺寸的動態陣列。
public class ch10_6_2_arraylist {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
ArrayList<String> alist = new ArrayList<String>(4);
String name = "蠟筆小新";
alist.add("小丸子");
alist.add("蠟筆小新");
alist.add("小甜甜");
alist.add("小叮噹");
System.out.println("物件尺寸:" + alist.size());
alist.add(2, name);//新增元素
System.out.println("物件尺寸:" + alist.size());
System.out.println("集合物件(1):");
for (int i = 0; i < alist.size(); i++) { //利用迴圈取得元素
System.out.print(i + ")" + alist.get(i) + " ");
}
System.out.println(" ");
System.out.println("集合物件(2):");
for (String element : alist) {
System.out.print(element + " ");
}
System.out.println(" ");
System.out.println("搜尋:"+name);
System.out.println("indexOf():"+alist.indexOf(name));
System.out.println("lastindexOf():"+alist.lastIndexOf(name));
alist.set(3,"小叮鈴");//取代元素
System.out.println("取代元素三:"+alist);
alist.remove(0);//刪除元素
System.out.println("取代元素0:"+alist);
}
}
ArrayList類別實作List介面,使用類似陣列方式來儲存,元素是使用索引位置來依序的存入,我們只需將元素新增或插入ArrayList物件,並不用事先宣告物件尺寸,如同一種可自動調整陣列尺寸的動態陣列。
泛型集合類別-HashSet類別
import java.util.HashSet;
public class 集合物件 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
HashSet<String> hset = new HashSet<>();
System.out.println("集合物件是否為空:" + hset.isEmpty());
String name1 = "林至玲";
String name2 = "王金評";
hset.add("胖胖褲豬");
hset.add(name1);
hset.add(name2);
hset.add("多拉A夢");
System.out.println("集合物件的尺寸為: "+hset.size());
System.out.println("集合物件是否為空:" + hset.isEmpty());
System.out.println("集合物件有林至玲:" + hset.contains(name1));
hset.remove(name1);
System.out.println("集合物件有林至玲:" + hset.contains(name1));
System.out.println("集合物件內容為:" +hset);
hset.clear();
}
}
程式碼在HashSet類別之後,使用「<」和「>」括起的資料型態是泛型型態,可以指定集合物件儲存元素的資料型態,以便Java編譯程式自行追蹤記錄元素的資料型態,所以取出集合物件的元素時,就不需使用程式碼來執行型態轉換。
HashSet類別實作Set介面,繼承Collection介面的方法且使用「雜湊表」(Hash Table)演算法來改進新增、刪除和存取集合物件元素的執行效率,其儲存元素的排列和插入順序不同,也不保證擁有固定的排列順序
public class 集合物件 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
HashSet<String> hset = new HashSet<>();
System.out.println("集合物件是否為空:" + hset.isEmpty());
String name1 = "林至玲";
String name2 = "王金評";
hset.add("胖胖褲豬");
hset.add(name1);
hset.add(name2);
hset.add("多拉A夢");
System.out.println("集合物件的尺寸為: "+hset.size());
System.out.println("集合物件是否為空:" + hset.isEmpty());
System.out.println("集合物件有林至玲:" + hset.contains(name1));
hset.remove(name1);
System.out.println("集合物件有林至玲:" + hset.contains(name1));
System.out.println("集合物件內容為:" +hset);
hset.clear();
}
}
程式碼在HashSet類別之後,使用「<」和「>」括起的資料型態是泛型型態,可以指定集合物件儲存元素的資料型態,以便Java編譯程式自行追蹤記錄元素的資料型態,所以取出集合物件的元素時,就不需使用程式碼來執行型態轉換。
HashSet類別實作Set介面,繼承Collection介面的方法且使用「雜湊表」(Hash Table)演算法來改進新增、刪除和存取集合物件元素的執行效率,其儲存元素的排列和插入順序不同,也不保證擁有固定的排列順序
JSP:表單製作-下拉式選單+陣列
<body>
<%
String data[]={"麵","水餃","飯","湯"};
%>
<form id="form1" name="form1" method="post" action="/0910/display5.jsp">
<label for="order"></label>
<select name="order" id="order">
<%for(int i=0;i<data.length;i++){%>
<option value="<%out.print(i);%>"><%out.print(data[i]);%></option>
<%}%>
</select>
</form>
</body>
<%
String data[]={"麵","水餃","飯","湯"};
%>
<form id="form1" name="form1" method="post" action="/0910/display5.jsp">
<label for="order"></label>
<select name="order" id="order">
<%for(int i=0;i<data.length;i++){%>
<option value="<%out.print(i);%>"><%out.print(data[i]);%></option>
<%}%>
</select>
</form>
</body>
JSP:表單製作foreach迴圈+核取方塊
input.jsp
<body>
<form id="form1" name="form1" method="post" action="/0910/display4.jsp">
<p>你會哪些語言?
</p>
<p>
<label>
<input type="checkbox" name="lang" value="C" id="lang_0" />
C語言</label>
<br />
<label>
<input type="checkbox" name="lang" value="PHP" id="lang_1" />
PHP</label>
<br />
<label>
<input type="checkbox" name="lang" value="JAVA" id="lang_2" />
JAVA</label>
<br />
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
---------------------------------------------------------------------------------------------------
display.jsp
<body>
<%
String[] lang=request.getParameterValues("lang");
for(String data:lang){
out.println( data +"</br>");
}
%>
</body>
<body>
<form id="form1" name="form1" method="post" action="/0910/display4.jsp">
<p>你會哪些語言?
</p>
<p>
<label>
<input type="checkbox" name="lang" value="C" id="lang_0" />
C語言</label>
<br />
<label>
<input type="checkbox" name="lang" value="PHP" id="lang_1" />
PHP</label>
<br />
<label>
<input type="checkbox" name="lang" value="JAVA" id="lang_2" />
JAVA</label>
<br />
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
---------------------------------------------------------------------------------------------------
display.jsp
<body>
<%
String[] lang=request.getParameterValues("lang");
for(String data:lang){
out.println( data +"</br>");
}
%>
</body>
JSP:表單製作-RadioButtonGroup
RadioButtonGroup的參數"name"相同,則為同一群組。
ID為不同的DOM物件所以值不同。
新增以下兩個檔案input.jsp、display.jsp
input.jsp
<body>
<form id="form1" name="form1" method="post" action="/0910/display2.jsp">
<p>請問是否要加入?
</p>
<p>
<label>
<input type="radio" name="enroll" value="Y" id="enroll_0" />
是</label>
<br />
<label>
<input type="radio" name="enroll" value="N" id="enroll_1" />
否</label>
<br />
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
--------------------------------------------------------------------------------------------
display.jsp
<body>
<%
String strname="";
strname=request.getParameter("enroll");
out.println("你的答案為:"+strname);
%>
</body>
ID為不同的DOM物件所以值不同。
新增以下兩個檔案input.jsp、display.jsp
input.jsp
<body>
<form id="form1" name="form1" method="post" action="/0910/display2.jsp">
<p>請問是否要加入?
</p>
<p>
<label>
<input type="radio" name="enroll" value="Y" id="enroll_0" />
是</label>
<br />
<label>
<input type="radio" name="enroll" value="N" id="enroll_1" />
否</label>
<br />
<input type="submit" name="button" id="button" value="送出" />
</p>
</form>
</body>
--------------------------------------------------------------------------------------------
display.jsp
<body>
<%
String strname="";
strname=request.getParameter("enroll");
out.println("你的答案為:"+strname);
%>
</body>
JSP:表單製作(兩數相加)
新增method.jsp、ans.jsp,注意轉型及呼叫get變數。
method.jsp
<body>
<form action="ans.jsp" method="get">
<input type="text" id="num1" name="num1" />
+
<input type="text" id="num2" name="num2" />
<input type="submit" value="=" />
</form>
------------------------------------------------------------------------
ans.jsp
<body>
<%
String i, j;
i=request.getParameter("num1");
j=request.getParameter("num2");
int total=Integer.valueOf(i)+Integer.valueOf(j);
out.println("答案為: "+total);
%>
</body>
method.jsp
<body>
<form action="ans.jsp" method="get">
<input type="text" id="num1" name="num1" />
+
<input type="text" id="num2" name="num2" />
<input type="submit" value="=" />
</form>
------------------------------------------------------------------------
ans.jsp
<body>
<%
String i, j;
i=request.getParameter("num1");
j=request.getParameter("num2");
int total=Integer.valueOf(i)+Integer.valueOf(j);
out.println("答案為: "+total);
%>
</body>
JSP:表單製作(簡單傳送字串)
新增兩個檔案 input.jsp、display.jsp, 要注意method參數get、post。
(post:若有要傳送圖片或檔案,請使用這個參數。)
input.jsp
<body>
<form action="display.jsp" method="post">
<input type="text" id="username" name="username"/>
<input type="submit" />
</form>
</body>
-----------------------------------------------------------------------------------
display.jsp
<body>
<%
request.setCharacterEncoding("utf-8");
String strname="";
strname=request.getParameter("username");
out.println("你的姓名為:"+strname);
%>
</body>
(post:若有要傳送圖片或檔案,請使用這個參數。)
input.jsp
<body>
<form action="display.jsp" method="post">
<input type="text" id="username" name="username"/>
<input type="submit" />
</form>
</body>
-----------------------------------------------------------------------------------
display.jsp
<body>
<%
request.setCharacterEncoding("utf-8");
String strname="";
strname=request.getParameter("username");
out.println("你的姓名為:"+strname);
%>
</body>
2013年9月9日 星期一
JSP+html九九乘法表
方法一
先在Eclisp寫的九九乘法表JAVA Code :
public class ninenine {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
for(int i=1;i<10;i++){
for(int j=1;j<10;j++){
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println("");
}
}
}
複製到DW後改寫成JSP
<body>
<table width="200" border="1">
<% for(int i=1;i<10;i++){%>
<tr>
<% for(int j=1;j<10;j++){ %>
<TD>
<%
out.print(j+"*"+i+"="+i*j);
}%>
</TD>
</tr>
<%}%>
</table>
</body>
方法二
直接在DW用JSP寫
<table border="1">
<%
int i, j;
for (i=1;i<=9;i++)
{
out.println("<tr>");
for (j=1;j<=9;j++)
{
out.println("<td>" + j + "x" + i + "=" + i * j + "</td>");
}
out.println("</tr>");
}
%>
</table>
JSP網頁架構
JSP網頁架構
經由網頁伺服器(Tomcat ) :
將網頁檔(*.jsp)-->servlet原始程式碼(*.java)--->編譯成可執行檔(*.class)-->輸出成HTML。
執行環境:
JDK+Tomcat
Tomcat裝好輸入以下網址:
http://localhost:8080/
若有看到以下畫面,成功。
JSP指令: 用<% %>包覆
EX:
<%
out.println("Hello World!!");
%>
經由網頁伺服器(Tomcat ) :
將網頁檔(*.jsp)-->servlet原始程式碼(*.java)--->編譯成可執行檔(*.class)-->輸出成HTML。
執行環境:
JDK+Tomcat
Tomcat裝好輸入以下網址:
http://localhost:8080/
若有看到以下畫面,成功。
- tomcat目錄下的 \conf\server.xml & web.xml為參數設定檔。
- tomcat目錄下的\work\Catalina\localhost\_\org\apache\jsp有執行過的*.java和*.class檔。
JSP指令: 用<% %>包覆
EX:
<%
out.println("Hello World!!");
%>
JAVA-方法丟出例外
在Java程式是使用throw指令來自行丟出例外。
public class ch10_2_2 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
int result;
try {
int a = (int) (Math.random() * 10);
int b = (int) (Math.random() * 10);
int c = (int) (Math.random() * 10);
result = cal(a, b, c);
System.out.println("計算結果為: " + result);
} catch (IllegalArgumentException e) {
// TODO 自動產生的 catch 區塊
System.out.println("例外說明: "+e.getMessage());
System.out.println("例外原因: ");
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
// TODO 自動產生的 catch 區塊
System.out.println("例外說明: "+e.getMessage());
System.out.println("例外原因: ");
e.printStackTrace();
}
}
static int cal(int a, int b, int c) throws IllegalArgumentException, ArrayIndexOutOfBoundsException{
int index;
int[] data = { 22, 14, 36, 68, 87 };
if (c <= 0) {
throw new IllegalArgumentException("C小於等於0。");
} else {
index = a * b / c;
if (index >= 5) {
throw new ArrayIndexOutOfBoundsException("索引值大於5。");
}
}
return data[index];
}
}
public class ch10_2_2 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
int result;
try {
int a = (int) (Math.random() * 10);
int b = (int) (Math.random() * 10);
int c = (int) (Math.random() * 10);
result = cal(a, b, c);
System.out.println("計算結果為: " + result);
} catch (IllegalArgumentException e) {
// TODO 自動產生的 catch 區塊
System.out.println("例外說明: "+e.getMessage());
System.out.println("例外原因: ");
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
// TODO 自動產生的 catch 區塊
System.out.println("例外說明: "+e.getMessage());
System.out.println("例外原因: ");
e.printStackTrace();
}
}
static int cal(int a, int b, int c) throws IllegalArgumentException, ArrayIndexOutOfBoundsException{
int index;
int[] data = { 22, 14, 36, 68, 87 };
if (c <= 0) {
throw new IllegalArgumentException("C小於等於0。");
} else {
index = a * b / c;
if (index >= 5) {
throw new ArrayIndexOutOfBoundsException("索引值大於5。");
}
}
return data[index];
}
}
Java例外處理程序 、finally、try/catch
例外處理程序
public class ch10_1_1 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
int i;
try {
for (i = 2; i > -1; i--) {
System.out.println("計算結果為: " + 10 / i);
}
} catch (ArithmeticException e) {
// TODO 自動產生的 catch 區塊
System.out.println("例外說明: "+e.getMessage());
System.out.println("例外原因: ");
e.printStackTrace();
}
finally{
System.out.println("例外處理結束");
}
System.out.println("JAVA程式執行結束!!");
}
}
public class ch10_1_1 {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
int i;
try {
for (i = 2; i > -1; i--) {
System.out.println("計算結果為: " + 10 / i);
}
} catch (ArithmeticException e) {
// TODO 自動產生的 catch 區塊
System.out.println("例外說明: "+e.getMessage());
System.out.println("例外原因: ");
e.printStackTrace();
}
finally{
System.out.println("例外處理結束");
}
System.out.println("JAVA程式執行結束!!");
}
}
2013年9月8日 星期日
我到底該如何選擇?!
自從四月份,從前任公司離開後,一直在思索我的人生走向。
我發覺自己興趣似乎太過廣泛,對每件事都很想嘗試,但都不疾而終。
最近很夯的Candy Crush Saga倒是很認真在玩。早上吃飯也玩、下課休息也玩、晚上回來也玩。
也常常告訴別人說:"能不玩就不要玩" ,結果自己拼命玩。像不像現今的父母對小孩的模式,政府對人民的態度。 (PS:以上純屬個人關點,沒有任何批判。)
直到昨天與朋友喝下午茶的時候,他說我很像專門寫旅遊網誌的人。他的一句話讓我萌起建立網誌的念頭 (PS: 跟我上面說的一樣,興趣廣泛 ^^!!!) ,我一直在思考要怎麼經營這個網誌可以讓我持之以恆。讓它成為我生命中的一部份。
曾經在一個網誌上看過一段話,
「決定」沒有對錯,但永遠不要後悔自己所做的決定。
當下,心中有如被震醒。過往的我,一直排徊在「要與不要」之間,很怕每個決定都是不好的。所以當自己決定好一件事時,心裡的小孩就會對我說:這是對的嗎?是不是要選擇另外一個。任何決定對我而言,似乎都可以隨時翻盤一般 (賭博都沒那麼輕易翻盤^^!!!)。
直到這一句話給了我新的思維,也讓我學習到新的思考模式。很多產品在生產時需要事前分析規劃,就如同我開這個網誌一般,將最好與最壞的情況打量一下,其實答案就呼之欲出。當自己決定做這件事就不要在去思考這個決定到底好不好,而是要努力去做到最好。
我發覺自己興趣似乎太過廣泛,對每件事都很想嘗試,但都不疾而終。
最近很夯的Candy Crush Saga倒是很認真在玩。早上吃飯也玩、下課休息也玩、晚上回來也玩。
也常常告訴別人說:"能不玩就不要玩" ,結果自己拼命玩。像不像現今的父母對小孩的模式,政府對人民的態度。 (PS:以上純屬個人關點,沒有任何批判。)
直到昨天與朋友喝下午茶的時候,他說我很像專門寫旅遊網誌的人。他的一句話讓我萌起建立網誌的念頭 (PS: 跟我上面說的一樣,興趣廣泛 ^^!!!) ,我一直在思考要怎麼經營這個網誌可以讓我持之以恆。讓它成為我生命中的一部份。
曾經在一個網誌上看過一段話,
「決定」沒有對錯,但永遠不要後悔自己所做的決定。
當下,心中有如被震醒。過往的我,一直排徊在「要與不要」之間,很怕每個決定都是不好的。所以當自己決定好一件事時,心裡的小孩就會對我說:這是對的嗎?是不是要選擇另外一個。任何決定對我而言,似乎都可以隨時翻盤一般 (賭博都沒那麼輕易翻盤^^!!!)。
直到這一句話給了我新的思維,也讓我學習到新的思考模式。很多產品在生產時需要事前分析規劃,就如同我開這個網誌一般,將最好與最壞的情況打量一下,其實答案就呼之欲出。當自己決定做這件事就不要在去思考這個決定到底好不好,而是要努力去做到最好。
訂閱:
文章 (Atom)