<html>
<head>
</head>
<body>
<script type="text/javascript">
//繼承之對象冒充方式,可以繼承多個父類
function user(name){
this.name = name;
this.sayname = function(){
alert(this.name);
}
}
function student(name,score){
//user(name);
this.temp = user;
this.temp(name);
delete this.temp;
this.score = score;
this.sayscore = function(){
alert(this.score);
}
}
var s = new student('tom',33);
//s.sayname();
//s.sayscore();
//用call()函數實現繼承
function user(name){
this.name = name;
this.sayname = function(){
alert(this.name);
}
}
function student(name,score){
user.call(this,name);
this.score = score;
this.sayscore = function(){
alert(this.score);
}
}
var s = new student('tom',33);
//s.sayname();
//s.sayscore();
//用apply()函數實現繼承
function user(name){
this.name = name;
this.sayname = function(){
alert(this.name);
}
}
function student(name,score){
user.apply(this,[name]);
this.score = score;
this.sayscore = function(){
alert(this.score);
}
}
var s = new student('tom',33);
//s.sayname();
//s.sayscore();
//原型鏈方式實現繼承
//1.將父類中所用通過prototype設置的屬性或方法放到子類中
//2.并覆蓋子類中所以的prototype的設置
//3.所以子類自己的所以的prototype的設置要放在繼承父類的下面
//4.缺點是不支持多個繼承,構造函數不能有參數
function user(){}
user.prototype.name = '';
user.prototype.say = function(){
alert(this.name);
}
function student(){}
student.prototype =new user();
student.prototype.age = 0;
student.prototype.show = function(){
alert(this.age);
}
var s = new student();
s.name = 'tom';
s.age = 44;
//s.say();
//s.show();
//alert(s instanceof user);
//alert(s instanceof student);
//混合模式實現繼承
function user(name){
this.name = name;
}
user.prototype.sayname = function(){
alert(this.name);
}
function student(name){
user.call(this.name);
}
//將user中所有通過prototype設置的方法放到student中
student.prototype = new user();
student.prototype.age = 0;
student.prototype.sayage = function(){
alert(this.age);
}
var s = new student();
s.name = 'tom';
s.age = 44;
s.sayname();
s.sayage();
alert(s instanceof user);
alert(s instanceof student);
</script>
</body>
<html/>
function stringbuffer(){
this.array = new Array();
}
stringbuffer.prototype.append = function(s){
this.array.push(s);
}
stringbuffer.prototype.tostring = function(){
return this.array.join('-');
}
var sb = new stringbuffer();
sb.append('tom');
sb.append('lily');
alert( sb.tostring());
<html>
<head>
</head>
<body>
<script type="text/javascript">
//工廠模式創建對象,缺點是不能知道對象的類型
function createUser(name,age){
var o = {};
o.name=name;
o.age=age;
o.say=function(){
alert(this.name);
}
return o;
}
//user1 = createUser("tom",11);
//alert(user1.name);
//user2 = createUser("tom1",111);
//user2.say();
//構造函數創建對象。缺點是對象中的方法需要寫在構造函數外面,有可能寫很多方法
function user(name,age){
this.name=name;
this.age = age;
this.say = say;
}
function say(){
alert(this.name);
}
//var user1 = new user("tom",44);
//var user2 = new user("lily",66);
//alert(user1.name);
//user2.say();
//alert(user1 instanceof user);
//原型模式,缺點是不能有構造函數
function user(){}
user.prototype.name='';
user.prototype.age = 0;
user.prototype.address = [];
user.prototype.say = function(){
alert(this.name);
}
var user1 = new user();
user1.name = 'tom';
user1.age = 11;
user1.address = [1,2];
//user1.address.push("1","2");
var user2 = new user();
user2.name = 'lily';
user2.age = 22;
user2.address = [3,4];
//user2.address.push("3","4");
//alert(user1.name);
//alert(user1.age);
//alert(user1.address);
//user1.say();
//alert(user2.name);
//alert(user2.age);
//alert(user2.address);
//user2.say();
//構造函數+原型模式,構造方法構造屬性,原型模式構造方法
function user(name,age){
this.name = name;
this.age = age;
this.address = ['1','2'];
}
user.prototype.say = function(){
alert(this.name);
}
var user1 = new user('tom',11);
var user2 = new user('lily',22);
user1.address.push('a','b');
user2.address = ['cc','dd'];
alert(user1.address);
alert(user2.address);
//動態原型模式
function user(name,age){
this.name = name;
this.age = age;
this.address = ['1','2'];
if(typeof this.say != 'function'){
user.prototype.say = function(){
alert(this.name);
}
}
}
var user1 = new user('tom',11);
var user2 = new user('lily',22);
alert(user1.say==user2.say);
</script>
</body>
<html/>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'car.jsp' starting page</title>
</head>
<body>
<select id="car" onchange="sendAjax()">
<option>-- 請選擇汽車品牌 --</option>
<option value="bmw">寶馬</option>
<option value="audi">奧迪</option>
<option value="benz">奔馳</option>
</select>
<select id="type" onchange="sendType()">
<option>-- 請選擇系列 --</option>
</select>
<script type="text/javascript">
var xmlHttp;
/*創建XMLHttpRequest對象*/
function createXMLHttpRequest() {
if(window.ActiveXObject) {
//IE
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
//chrome firefox opera
xmlHttp = new XMLHttpRequest();
}
}
function sendAjax(){
createXMLHttpRequest();
var name = document.getElementById("car").value;
xmlHttp.onreadystatechange = callback;//回調函數
xmlHttp.open("GET","car.jspx?name="+name,true);
xmlHttp.send();
}
function callback() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
var xml = xmlHttp.responseXML;
var types = xml.getElementsByTagName("recode");
document.getElementById("type").options.length = 1;
for(var i = 0;i < types.length;i++) {
//alert(types[i].childNodes[0].nodeValue);
var myOption = new Option(types[i].childNodes[0].nodeValue,types[i].childNodes[0].nodeValue);
document.getElementById("type").options.add(myOption);
}
} else {
alert("Ajax Error1!");
}
}
}
function sendType(){
createXMLHttpRequest();
var name = document.getElementById("type").value;
xmlHttp.onreadystatechange = callback2;//回調函數
xmlHttp.open("GET","ajax.jspx?name="+name,true);
xmlHttp.send();
}
function callback2() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
var result = xmlHttp.responseText;
alert(result);
}
} else {
alert("Ajax Error2!");
}
}
</script>
</body>
</html>
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CarServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//DB取出數據
Map<String, List<String>> data = new HashMap<String, List<String>>();
List<String> bmwList = new ArrayList<String>();
bmwList.add("521");
bmwList.add("621");
bmwList.add("721");
bmwList.add("821");
bmwList.add("X6");
List<String> audiList = new ArrayList<String>();
audiList.add("A1");
audiList.add("A2");
audiList.add("A3");
audiList.add("A4");
audiList.add("A5");
audiList.add("A6");
audiList.add("A8");
List<String> benzList = new ArrayList<String>();
benzList.add("B1");
benzList.add("B2");
benzList.add("B3");
benzList.add("B4");
benzList.add("B5");
data.put("bmw", bmwList);
data.put("audi", audiList);
data.put("benz", benzList);
//----------------------------------------------------------
String name = request.getParameter("name");
List<String> dataList = data.get(name);
response.setContentType("text/xml;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.print("<data>");
for(String str : dataList) {
out.print("<recode>"+str+"</recode>");
}
out.print("</data>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet( request, response);
}
}
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AjaxServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("method:" + request.getMethod());
String name = request.getParameter("name");
System.out.println("Hello! " + name);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
/* if("tom".equals(name)) {
out.print("error");
} else {
out.print("ok");
}*/
out.print(name);
out.flush();
out.close();
}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<input type="text" id="name" onblur="sendAjax()"/>
<img src="img/ajax.gif" style="display:none" id="loading"/>
<span id="result"></span>
<br/>
<!--
<input type="button" value="Send Ajax" onclick="sendAjax()"/>
-->
<script type="text/javascript">
var xmlHttp;
/*創建XMLHttpRequest對象*/
function createXMLHttpRequest() {
if(window.ActiveXObject) {
//IE
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
//chrome firefox opera
xmlHttp = new XMLHttpRequest();
}
}
function sendAjax(){
createXMLHttpRequest();
var name = document.getElementById("name").value;
//post
xmlHttp.open("POST", "ajax.jspx", true);
xmlHttp.onreadystatechange = callback;
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send("name="+name);
//get
//xmlHttp.open("GET","ajax.jspx?name="+name,true);
//xmlHttp.onreadystatechange = callback;
//xmlHttp.send();
}
function callback() {
if(xmlHttp.readyState == 4) {//服務器響應返回
document.getElementById("loading").style.display = "none";
if(xmlHttp.status == 200) {//響應正確
var result = xmlHttp.responseText;
if(result == "ok") {
document.getElementById("result").innerHTML = "√";
} else {
document.getElementById("result").innerHTML = "用戶名已占用";
}
} else {
alert("Ajax Error!");
}
} else {
//進度條
document.getElementById("loading").style.display = "inline";
}
}
</script>
</body>
</html>
<html>
<head>
<script type="text/javascript">
var user = {name:'tom',age:'22'};
alert(user.name);
alert(user["name"]);
delete user.name;//刪除屬性
alert("name" in user);//判斷屬性是否在對象中






</script>
</head>
</html>
<html>
<head>
<script type="text/javascript">
function save(n1,n2){
function fn(){
return n1+n2;
}
return fn();
}
alert(save(2,3));
//閉包第一種
function test(){
var num = 10;
function inner(){
alert(num);
}
inner();
}
//test();
//閉包第二種
function add(n1,n2){
return function(){
return n1+n2;
}
}
//alert(add(2,3)());
</script>
</head>
</html>
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcTest {
public static void main(String[] args) throws ClassNotFoundException,SQLException {
//1.加載數據庫驅動(提供一個jdbc的數據庫驅動的名稱)
Class.forName("com.mysql.jdbc.Driver");
//2.獲取數據庫連接
String url = "jdbc:mysql:///gooddb";
Connection conn = DriverManager.getConnection(url, "root", "root");
//3.獲取Statment對象(該對象用于對數據庫進行CRUD操作)
Statement stat = conn.createStatement();
//4.執行SQL語句
//String sql = "INSERT INTO t_class(classname) VALUES('java07')";
String sql = "UPDATE t_class SET classname = 'sql01' WHERE id = 2";
//executeUpdate()方法用于執行insert、update、delete語句,該方法返回影響數據庫的行數
int rows = stat.executeUpdate(sql);
if(rows > 0) {
System.out.println("操作成功!");
}
//5.釋放連接
stat.close();
conn.close();
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SelectTest {
public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///gooddb","root","root");
stat = conn.createStatement();
String sql = "select id,classname from t_class";
//獲取結果集對象
rs = stat.executeQuery(sql);
while(rs.next()) {
//int id = rs.getInt("id");
int id = rs.getInt(1);
//String name = rs.getString("classname");
String name = rs.getString(2);
System.out.println("id:" + id + "\tclassname:" + name);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//釋放連接
try {
if(rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stat != null) {
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
package com.tCalendar.d;
/*
* java.util.Calendar 類學習
*/
import java.text.SimpleDateFormat;
/**
*
* @author Icer
*/
public class TCalendar {
private static SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMdd");
private String dayInfo[][];
private int dayCount;//間隔天數
public static void main(String[] args) {
String startDate = "20120101";
String endDate = "20120102";
TCalendar tCalendar = new TCalendar();
tCalendar.initDayInfo(startDate, endDate);
System.out.println("天數: " + tCalendar.getDayCount());
}
public void initDayInfo(String start,String end)
{
//初始化日期信息
java.util.Calendar cal1=java.util.Calendar.getInstance();
java.util.Calendar cal2=java.util.Calendar.getInstance();
java.util.Calendar cal3=java.util.Calendar.getInstance();
int year,month,day;
int i=0;
year=Integer.parseInt(start.substring(0,4));
month=Integer.parseInt(start.substring(4,6));
day=Integer.parseInt(start.substring(6,8));
cal1.set(year, month-1, day);
cal3.set(year, month-1, day);
year=Integer.parseInt(end.substring(0,4));
month=Integer.parseInt(end.substring(4,6));
day=Integer.parseInt(end.substring(6,8));
cal2.set(year, month-1, day);
while(!cal2.before(cal3))
{
i++;
cal3.add(java.util.Calendar.DAY_OF_MONTH, 1);//日期時間+1
}
//每日數據列表
dayInfo=new String[i+1][3];
i=0;
while(!cal2.before(cal1))
{
System.out.println("==" + cal1.getTime());
dayInfo[i][0]=sDateFormat.format(cal1.getTime());
i++;
cal1.add(java.util.Calendar.DAY_OF_MONTH, 1);
}
this.dayCount=i;
for (int j=0;j<i;j++)
{
this.dayInfo[j][1]="0";
this.dayInfo[j][2]="0";
}
}
public int getDayCount() {
return dayCount;
}
public void setDayCount(int dayCount) {
this.dayCount = dayCount;
}
public String[][] getDayInfo() {
return dayInfo;
}
public void setDayInfo(String[][] dayInfo) {
this.dayInfo = dayInfo;
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
import java.io.IOException;
/**
*獲取指定類的構造器相關信息
*/
public class ConstructorTest
{
private int i;
private double j;
//默認的構造器
public ConstructorTest(){
}
//重載的構造器
public ConstructorTest(int i,double j)throws IOException{
this.i=i;
this.j=j;
}
public static void main(String[] args) throws Exception
{
//得到本類的類對象
Class<?> cls=Class.forName("com.fanshe.obj.ConstructorTest");
//取得所有在本類聲明的構造器
Constructor<?> []cs=cls.getDeclaredConstructors();
//遍歷
System.out.println("----------------");
for(Constructor<?> c:cs){
//構造器名稱
System.out.println("構造器名="+c.getName());
//構造器聲明所在的類
System.out.println("其聲明的類="+c.getDeclaringClass());
//取得參數的類型集合
Class<?> []ps=c.getParameterTypes();
//遍歷參數類型
for(int i=0;i<ps.length;i++){
System.out.println("參數類型"+i+"="+ps[i]);
}
//取得異常的類型集合
Class<?> []es=c.getExceptionTypes();
//遍歷異常類型
for(int j=0;j<es.length;j++){
System.out.println("異常類型"+j+"="+es[j]);
}
//結束一層循環標志
System.out.println("-----------");
}
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
/**
*通過反射創新類的新對象
*/
class CreateNewObj
{
//顯式默認的構造器
public CreateNewObj(){
}
//重載構造器
public CreateNewObj(int a,int b){
System.out.println("a= "+a+" b="+b);
}
public static void main(String[] args) throws Exception
{
//得到本類的類對象
Class<?> c=Class.forName("com.fanshe.obj.CreateNewObj");
//聲明構造器的參數類型集合
Class<?> []paramTypes=new Class[2];
//都為int型
paramTypes[0]=Integer.TYPE;
paramTypes[1]=Integer.TYPE;
//根據參數類型決定得到哪個構造器
Constructor<?> cs=c.getConstructor(paramTypes);
//聲明要傳入的參數集合
Object []argList=new Object[2];
//傳入37和43
argList[0]=new Integer(37);
argList[1]=new Integer(43);
//根據符合上述參數類型的構造器來創建新的對象
Object rtnObj=cs.newInstance(argList);
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
/**
*獲取指定類的字段相關信息
*/
class FieldTest
{
//字段1
private double d;
//字段2
public static final int i=37;
//字段3
String str="fieldstest";
public static void main(String[] args) throws Exception
{
//獲取本類的類對象
Class<?> c=Class.forName("com.fanshe.obj.FieldTest");
//獲取所有聲明的的字段,getFields()包括繼承來的字段
Field []fs=c.getDeclaredFields();
//遍歷
for(int i=0;i<fs.length;i++){
Field f=fs[i];
//字段名
System.out.println("字段名"+(i+1)+"="+f.getName());
//字段聲明所在的類
System.out.println("該字段所在的類為:"+f.getDeclaringClass());
//字段的類型
System.out.println("字段"+(i+1)+"的類型:"+f.getType());
//查看修飾符
int mod=f.getModifiers();
//為0就是默認的包類型
if(mod==0){
System.out.println("該字段的修飾符為:默認包修飾符");
}else{
//否則就是相應的類型
System.out.println("該字段的修飾符為:"+Modifier.toString(mod));
}
System.out.println("---結束第"+(i+1)+"循環---");
}
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
/**
*獲取指定類的方法相關信息
*/
class InformationTest
{
public static void main(String[] args) throws Exception
{
//得到String類對象
Class<?> cls=Class.forName("java.lang.String");
//得到所有的方法,包括從父類繼承過來的方法
Method []methList=cls.getMethods();
//下面是得到的是String類本身聲明的方法
//Method []methList=cls.getDeclaredMethods();
//遍歷所有的方法
for(Method m:methList){
//方法名
System.out.println("方法名="+m.getName());
//方法聲明所在的類
System.out.println("聲明的類="+m.getDeclaringClass());
//獲取所有參數類型的集體
Class<?> []paramTypes=m.getParameterTypes();
//遍歷參數類型
for(int i=0;i<paramTypes.length;i++){
System.out.println("參數 "+i+" = "+paramTypes[i]);
}
//獲取所有異常的類型
Class<?> []excepTypes=m.getExceptionTypes();
//遍歷異常類型
for(int j=0;j<excepTypes.length;j++){
System.out.println("異常 "+j+" = "+excepTypes[j]);
}
//方法的返回類型
System.out.println("返回類型 ="+m.getReturnType());
//結束一層循環標志
System.out.println("---------");
}
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
/**
*通過反射改變字段的值
*/
class ModifyField
{
//聲明一個字段
public double d;
public static void main(String[] args) throws Exception
{
//得到類的類對象
Class<?> c=Class.forName("com.fanshe.obj.ModifyField");
//根據字段名得到字段對象
Field f=c.getField("d");
//創建類的實例
ModifyField mf=new ModifyField();
//打印修改前字段的值
System.out.println("修改 "+f.getName()+" 前的值為:"+mf.d);
//修改d的值為12.34
f.setDouble(mf,12.34);
//打印修改后的值
System.out.println("修改 "+f.getName()+" 后的值為:"+mf.d);
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
/**
*通過反射執行類的方法
*/
class PerformMethod
{
//聲明一個簡單的方法,用于測試
public int add(int a,int b){
return a+b;
}
public static void main(String[] args)throws Exception
{
//獲取本類的類對象
Class<?> c=Class.forName("com.fanshe.obj.PerformMethod");
/**
*聲明add方法參數類型的集合
*共有兩個參數,都為Integer.TYPE
*/
Class<?> []paramTypes=new Class[2];
paramTypes[0]=Integer.TYPE;
paramTypes[1]=Integer.TYPE;
//根據方法名和參數類型集合得到方法
Method method=c.getMethod("add",paramTypes);
//聲明類的實例
PerformMethod pm=new PerformMethod();
//傳入參數的集合
Object []argList=new Object[2];
//傳入37和43
argList[0]=new Integer(37);
argList[1]=new Integer(43);
//執行后的返回值
Object returnObj=method.invoke(pm,argList);
//類型轉換下
Integer returnVal=(Integer)returnObj;
//打印結果
System.out.println("方法執行結果為:"+returnVal.intValue());
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
/**
*通過反射來操作數組
*/
class UserArray
{
public static void main(String[] args) throws Exception
{
//得到String類的類對象
Class<?> c=Class.forName("java.lang.String");
//通過Array類的反射創建一個含有10個元素的String類型的數組
Object arr=Array.newInstance(c,10);
//為數組第5個位置元素賦一個值
Array.set(arr,5,"第5個位置元素");
//取得第5個位置元素的值
String s=(String)Array.get(arr,5);
//打印這個元素的值
System.out.println("值為:"+s);
}
}
package com.fanshe.obj;
import java.lang.reflect.*;
/**
*通過反射創建和使用更復雜的數組
*/
class UserArrayComplex
{
public static void main(String[] args) throws Exception
{
//聲明數組的維數為5X10X15
int dims[]=new int []{5,10,15};
//創建該類型的數組,元素的類型為Integer
Object arr=Array.newInstance(Integer.TYPE,dims);
//得到第3個10X15的二維數組
Object arrObj=Array.get(arr,3);
//Class c=arrObj.getClass().getComponentType();
//System.out.println(c);
//得到第2維中的第2個15位長度的數組
arrObj=Array.get(arrObj,5);
//然后設置該數組里第10個元素的值為37
Array.set(arrObj,10,37);
//再將數組還原
int [][][]arrCast=(int [][][])arr;
//打印剛剛那個值
System.out.println(arrCast[3][5][10]);
}
}