js中動態生成表格
function createTable() {
var t = document.getElementById("myT");
for ( var i = 0; i < 3; i++) {
var r = t.insertRow();
for ( var j = 0; j < 2; j++) {
var c = r.insertCell();
if (j == 0) {
c.innerHTML = "姓名:"+i+","+j;
} else {
c.innerHTML = "<input type='text' name='n' />";
}
}
}
t.setAttribute('border', '1');
}
function deleteTable() {
var objTable = document.getElementById("myT");
objTable.setAttribute('border', '0');
for ( var i = 0; i <= objTable.rows.length+1; i++) {
objTable.deleteRow(0);
}
}
jsp中的表單引發事件
<input type="button" onclick="createTable()" name="ty" value="試題類型" />
<input type="button" onclick="deleteTable()" name="re" value="清除表格" />
<table id="myT">
</table>
Spring MVC使用動態代理實現事務控制
applicationContext.xml文件中配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"
default-lazy-init="true">
<!--
spring在啟動的時候,會默認加載會默認加載整個對象實例圖,從初始化ACTION配置、到
service配置到dao配置、乃至到數據庫連接、事務等等。這樣可以減少web服務器在運行時的負擔,但是對于開發者來說無疑是效率極低的一個設置了。
還好,spring提供了default-lazy-init屬性,其配置形式如下,applicationContext.xml中: <
beans default-lazy-init ="true" > < bean class ="org.xxxx.bean" >
。。。。。。 </beans>
spring配置默認default-lazy-init為false,當配置為true時sping不會再去加載整個對象實例圖,大大減少了初始化的時間,減少了spring的啟動速度。
這樣做只是為了在開發過程中節約啟動時間,在部署到實際環境中,倒是沒必要設置default-lazy-init為true。畢竟部署到實際環境中不是經常的事,每次啟動1分鐘倒不是大問題,而且可以提高服務器效率。
當然,也不是所有的beans都能設置default-lazy-init成為true.對于scheduler的bean不能用lazy-init
< beans default-lazy-init ="true" > < bean class
="org.springframework.scheduling.quartz.SchedulerFactoryBean" > <
property name ="triggers" > < list > < ref bean ="buildHtmlTrigger" />
< ref bean ="askTrigger" /> < ref bean ="mailSenderTrigger" /> < ref
bean ="topicDetailBuildTrigger" /> < ref bean ="forumBuildTrigger" />
< ref bean ="topicBuildTrigger" /> </ list > </ property > </ bean >
</ beans > 這樣的話。所有的scheduler就都不管用了。所以請大家要注意。
-->
<!-- 使用annotation 自動注冊bean, 并保證@Required、@Autowired的屬性被注入 -->
<context:component-scan base-package="com.edufe">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<context:property-placeholder
ignore-resource-not-found="true"
location="classpath*:/application.properties,
classpath*:/application.development.properties" />
<!-- 創建數據源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 使用嵌入式數據庫H2 -->
<!--
<jdbc:embedded-database id="dataSource" type="H2"> <jdbc:script
location="classpath:sql/h2/schema.sql" /> <jdbc:script
location="classpath:sql/h2/import-data.sql" />
</jdbc:embedded-database>
-->
<!-- 創建jdbcTemplate對象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 在容器文件中配置bean(service,dao,domain,action,數據源), -->
<!--
bean的作用是, 當我們spring框架加載的時候,spring就會自動創建一個bean,并放入內存 即產生UserService
user=new UserService(); user.setName("張三");
-->
<!--
<bean id="userService" class=""> 這里就體現出了注入的概念 <property name="name">
<value>張三</value> </property> 在UserService中引用ByeService的對象ref是個引用
<property name="byeS" ref="byeService" /> </bean>
-->
<!-- 處理事務 -->
<!-- 生成一個事務管理對象 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<constructor-arg index="0" ref="dataSource">
</constructor-arg>
</bean>
<!-- 生成默認事務定義對象 -->
<bean id="def" class="org.springframework.transaction.support.DefaultTransactionDefinition"></bean>
</beans>
在dao中
@Autowired
private DataSourceTransactionManager transactionManager;
@Autowired
private DefaultTransactionDefinition def;
public int excuteTrac() {
int temp = 0;
// 批插入
String sql1[] = new String[4];
// 向第一個表插入的語句
sql1[0] = "insert into usermbo( ID, USERNAME, age) values('122','22','22')";
sql1[1] = "insert into usermbo( ID, USERNAME, age) values('133','33','33')";
sql1[2] = "insert into usermbo( ID, USERNAME, age) values('144','44','33')";
sql1[3] = "insert into usermbo( ID, USERNAME, age) values('155','55','33')";
String[] sql2 = new String[3];
// 向第二個表插入的語句
sql2[0] = "insert into address (NO, NAME) values('33','33')";
// 此條數據是錯誤數據 插入會出現異常
sql2[1] = "insert into address (NO, NAME) values('eee','44')";
sql2[2] = "insert into address (NO, NAME) values('144','44')";
TransactionStatus status = transactionManager.getTransaction(def);
try {
int[] a = jdbcTemplate.batchUpdate(sql1);
int[] b = jdbcTemplate.batchUpdate(sql2);
try {
transactionManager.commit(status);
} catch (Exception e) {
System.out.println("事務提交異常");
}
} catch (Exception ex) {
System.out.println("出現事務異常");
try {
transactionManager.rollback(status);
} catch (IllegalTransactionStateException e) {
System.out.println("回滾數據異常");
}
temp = -1;
}
return temp;
}
JdbcTemplate使用事務控制批處理
//在dao中寫的一個方法
public int excuteTrac() {
int temp = 0;
// 批插入
String sql1[] = new String[4];
//向第一個表插入的語句
sql1[0] = "insert into usermbo(USERNAME,age,PASSWORD) values(' 23 ','3','45')";
sql1[1] = "insert into usermbo(USERNAME,age,PASSWORD) values('22 ','22','22')";
sql1[2] = "insert into usermbo(USERNAME,age,PASSWORD) values(' 44 ','44','4')";
sql1[3] = "insert into usermbo(USERNAME,age,PASSWORD) values(' 55 ','55','55')";
String[] sql2 = new String[3];
//向第二個表插入的語句
sql2[0] = "insert into address(NO,NAME) values('21','33')";
// 此條數據是錯誤數據 插入會出現異常
sql2[1] = "insert into address(NO,NAME) values('ee','44')";
sql2[2] = "insert into address(NO,NAME) values('44','44')";
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(
jdbcTemplate.getDataSource());
TransactionStatus status = transactionManager.getTransaction(def);
try {
int[] a = jdbcTemplate.batchUpdate(sql1);
int[] b = jdbcTemplate.batchUpdate(sql2);
for (int x : a) {
System.out.println(x);
}
for (int x : b) {
System.out.println(x);
}
} catch (Exception ex) {
System.out.println("出現事務異常");
// transactionManager.rollback(status);
temp = -1;
} finally {
transactionManager.commit(status);
}
return temp;
}
監聽鍵盤按下鍵的值(兼容IE與其他瀏覽器)
function getKeyPressCode(event) {
/*
//此種方法不可取
if(event.keyCode!=0) // IE
{
keynum = event.keyCode;
}
else if(event.which!=0) // Netscape/Firefox/Opera
{
keynum = event.which;
}
alert(keynum);
*/
//此種方法可行
var keycode;
if (navigator.appName == "Microsoft Internet Explorer") { // IE
keycode = event.keyCode;
} else { // Netscape/Firefox/Opera
keycode = event.which;
}
alert("按鍵碼: " + keycode );
}
<script type="text/javascript">
function noNumbers(e)
{
var keynum;
var keychar;
var numcheck;
if(window.event) // IE
{
keynum = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which;
}
keychar = String.fromCharCode(keynum);
numcheck = /\d/;
return numcheck.test(keychar);
}
</script>
<form>
Type some text (numbers not allowed):
<input type="text" onkeypress="return noNumbers(event)" />
</form>
博鰲亞洲論壇
央視記者何巖柯與比爾蓋茨對話
何巖柯:
你好!比爾蓋茨先生,能夠和您對話是我們的榮幸。
蓋茨:
我也很榮幸
何巖柯:
首先我想跟您確定一件事,你更喜歡被看作是一個企業家,還是一個慈善家
蓋茨:
我現在大部分時間都用于蓋茨基金的工作,但是我仍然是微軟的主席,我要向他們提出意見,所以我兩方面都有所涉及,我的員工和團隊都很優秀,我覺得很幸運。
何巖柯:
我們發現你們做慈善的方式,和別人不同,很多慈善組織只是給錢,而你們是給別人一種方法,去謀生,為什么?
蓋茨:
我覺得最好的慈善,(扶了扶眼鏡)是你為人們提供種子教育,如果你覺得問題有可能解決,你缺少的就是讓科學家了解這些問題,獲取所需的資源,我們了解了很多關于健康方面的知識,為什么貧困國家的兒童有這么高的死亡率?為什么非洲國家的生產率比美國低這么多?
如果你了解這些狀況,你就知道把好的做法普及到世界上最貧困的地方,。
何巖柯:
習近平主席在開幕式上,做了主旨演講,你也在現場,我在想有關這個演講,哪點讓你最深刻?
蓋茨:
我覺得習主席一直都強調,中國的角色是要幫助世界上其他國家,關于中國夢的主題,在其他演講中也都有提到,我覺得這是很重要的信息,中國是消除貧困、疾病和在教育領域投資的很好典范,中國有越來越多的科學家,他們的研究不僅對中國有價值,對全世界都很有價值,包括他第一次出訪,就去了非洲最需要幫助的國家,他夫人也去了,我覺得非常的興奮,這是很好的開始。
何巖柯:
智能手機,觸屏技術以及云技術,這些新的技術,極大改變我們的生活,但這些技術都不是
微軟所發展的,作為微軟的創立者,會感到有些失望嗎?
蓋茨:
微軟無疑也做的很好,It領域有件很棒的事情,就是同時有很多優秀的公司,我們在做Xbox識別人臉,你看 比如微軟的Office,微軟在這方面無疑是領先者,盡管谷歌在搜索引擎方面做的很好,但我們也有我們的搜索引擎必應,我們的研究團隊對此很有貢獻,他在行業中也是領先者,微軟會全力以赴做到行業領先,但是這個行業最優秀成功的,不可能來自一個
公司,微軟公司正是,這些優秀公司的其中之一。
何巖柯:
您認為微軟還是很有競爭力?
蓋茨:
當然,我們有很棒的人才,很棒的北京實驗室,我們在北京的實驗室對此很有貢獻。
何巖柯:
我突然想起一個很有意思的說法,當蘋果失去喬布斯,就失去了味道,當微軟失去了比爾蓋茨,也不再是以前的微軟,你怎么看這個說法?你同意嗎?
蓋茨:
技術公司是一直在持續變化,無論你的創意,在十年前五年前有多棒,現在都不適用了,所以你必須有革新意識,你比別人多想一步,即便是微軟辦公室的白板,我們想辦法改變它變化他,有很多領域,微軟都想去進行革新,一個公司不是靠一個人可以支撐的,也適用于蘋果公司,所以微軟會繼續做的很棒,我現在全職在蓋茨基金會工作,我相信這樣同樣很重要,我會全力以赴。
何巖柯:
你在人民日報發表了篇文章,有關中國的農業革新,你提到了中國的雜交水稻之父袁隆平,他為世界做出了很多貢獻,這一次袁隆平也在參加博鰲論壇,有機會和他交流一下嗎?
蓋茨:
很遺憾,沒機會見到他,雜交水稻是幫助最貧困人群的一個很好的例子,但是現在雜交水稻主要只有中國有,現在的問題是如何普及到世界上的其他國家,比如說非洲,誰來提供種子,
如何讓價格合理。
何巖柯:
您如何看待中國的創新能力?
蓋茨:
中國的創新能力每年都在增長,中國的大學都很致力于自身提高,比如清華大學已經做的很優秀了,在IT方面有很多的投入,有很多的工程師畢業,生物領域也做的很好,這很令人興奮。
何巖柯:
我們聽說蓋茨基金會和中國政府,建立了不少合作項目,這些合作進展如何?
蓋茨:
我們最早是和衛生部合作,防治艾滋病,如何減少吸煙,因為吸煙會引起癌癥,這些合作很順利,現在我們正在和科技部合作,因為他們能找到創新者,很多人領域是普通人沒有想到的,比如說給動物的疫苗,在這些論壇上,我能夠見到很多中國的領導者,我們可以交流下彼此的夢想,我們就可以發現,我們有很多的共同點。
2013年4月8日