第一篇:struts2配置文件中參數(shù)的傳遞
struts2配置文件中參數(shù)的傳遞
在Action中我們經(jīng)常會從這個Action跳轉(zhuǎn)到另一個Action中,如果只是簡單的跳轉(zhuǎn)那么很容易,只需在struts配置文件中添加一個result,如:
第二篇:struts2框架的6個配置文件
Struts2的6個配置文件,分別是struts-default.xml,default.properties,struts-plugin.xml,struts.xml,struts.properties,web.xml
1、struts-default.xml,里面放置的是struts2框架的核心東西,如bean類,package包,result type,interceptor攔截器等
2、default.properties,properties類型的文件里面放置的是鍵值對,key和value,主要是對一些常量進行設(shè)定。
3、struts-plugin.xml,與第三方插件進行整合時需要使用的配置文件。如我們和spring進行整合時,就需要使用到struts-spring-plugin.xml這個配置文件
4、struts.xml,需要我們程序員在src目錄下手動創(chuàng)建,在這個里面也可以對常量進行設(shè)定,使用的是constant標簽,包含name和value屬性。
5、struts.properties,這里也是對常量進行設(shè)定
6、web.xml,這里設(shè)定struts2的啟動項,使用的是filter和filter-mapping標簽,也可以進行常量的設(shè)定,在filter標簽里使用init-param標簽。但是我們一般不再這里設(shè)定。
這里有4個配置文件,可以對常量進行設(shè)定。分別是default.properties,struts.xml,struts.properties,web.xml。他們的優(yōu)先級順序是web.xml優(yōu)先級最高,其次是struts.properties,struts.xml,最后是default.properties。我們最主要進行學習的就是struts.xml,其他的作為了解內(nèi)容就可以了。
第三篇:【黑馬程序員】Java中方法的參數(shù)傳遞問題
【黑馬程序員】Java中方法的參數(shù)傳遞問題
最近有很多同學,就算是就業(yè)班畢業(yè)之后,還依然在問 java方法的調(diào)用中值的傳遞問題,實際參數(shù)究竟什么時候才會改變?接下來我們先由一個例子來引出大家的問題,請看如下例子,并回答 下面代碼中的四個問題 public class Demo { public static void main(String[] args){ int a = 10;change(a);System.out.println(a);// 1:請問輸出什么?
String str = “abc”;change(str);System.out.println(str);// 2:請問輸出什么?
Student s = new Student(“張三”,13);System.out.println(s);// 輸出 Student [name=張三, age=13] change(s);System.out.println(s);// 3:請問輸出什么? change1(s);System.out.println(s);// 4:請問輸出什么? }
public static void change(String s){ s = s+“def”;} public static void change(int a){ a = a + 10;} public static void change(Student s){ s = new Student(“李四”,14);} public static void change1(Student s){ s.setName(“李四”);s.setAge(14);} } 大家看完上面的題目之后,估計有很多同學能回答出前兩問,1:輸出10, 2:輸出abc,因為這類的參數(shù)傳遞在咱們java基礎(chǔ)課程的第5天和第13天都有講到。但是雖然講了,但
黑馬程序員濟南中心 編著
是有很多同學都沒有充分的理解透徹,這也就是為什么大家回答不出 第三問 和 第四問 的原因。實際上第三問的答案是 3:輸出Student [name=張三, age=13] 4:Student [name=李四, age=14]。下面我就給大家講解一下。
首先用一句話來歸納java中參數(shù)傳遞:不管是基本類型還是引用類型: 形式參數(shù)做賦值操作的時候,實際參數(shù)不發(fā)生改變,如果在方法里面是改變形式參數(shù)內(nèi)部的一些東西的時候 那么實際參數(shù)發(fā)生改變。1.不管是基本類型還是引用類型: 形式參數(shù)做賦值操作的時候,實際參數(shù)不發(fā)生改變
(當被調(diào)用的方法開始執(zhí)行的時候,就從方法區(qū)里面把方法拿到了棧內(nèi)存中,形式參數(shù)變量也根據(jù)傳遞過
去的值進行初始化,當方法用完了,那么該方法在棧內(nèi)存中的變量也消失了。在所以也就是只在棧內(nèi)存
中對方法里面變量進行了改變,是不影響實際參數(shù)的。而加減乘除、賦值[就算是引用類型之間的賦值,是
不是也只是在棧內(nèi)存中把地址值進行的賦值]這一系列的賦值操作都是在棧內(nèi)存中對方法里面變量進行了改
變,而方法執(zhí)行完畢后 從棧內(nèi)存中消失了,回到了調(diào)用這個方法 的 main方法棧內(nèi)存中,實際參數(shù)原來是
什么 現(xiàn)在依然是什么)
2.如果在方法里面是改變形式參數(shù)內(nèi)部的一些東西的時候 那么實際參數(shù)發(fā)生改變
(對于引用類型,它隨著參數(shù)傳遞到方法里面去的是地址值,指向的是堆中的對象,如果在方法里面通過
這個地址值改變對象內(nèi)部的一些屬性,即使方法用完了,方法里面的變量的地址值的黑馬程序員濟南中心 編著
指向也消失了,但是
對象內(nèi)部的一些屬性還是已經(jīng)改變了,這些屬性不會消失[因為在堆內(nèi)存中],所以實際參數(shù)還是會改變。如
果是基本類型,根本在堆內(nèi)存中沒有指向,基本類型都在棧內(nèi)存或者常量池[值更不能被改變]中,所以基本
類型形式參數(shù)的改變無論如何是改變不了實際參數(shù)的)
3.看完上面的兩句話和解釋,相信大家還是覺得比較抽象,下面我給大家準備了一個代碼案例,每一行代碼都有對應的解釋,看完下面的案例后估計大家就會真正的明白java中參數(shù)傳遞,參數(shù)改變時機的問題了
public class Demo2 { public static void main(String[] args){
int a = 10;int b = 20;
System.out.println(a+“ ”+b);//10 20 change1(a,b);//形式參數(shù)做賦值操作的時候,實際參數(shù)不發(fā)生改變
//基本類型一般都在棧內(nèi)存中(所以 堆內(nèi)存中沒有指向 內(nèi)部也就沒有東西嘛),//所以值能做一些加減乘除、賦值的操作,//而做完了這些操作,就在占內(nèi)存中消失了,所以不會影響實際參數(shù) System.out.println(a+“ ”+b);//10 20
System.out.println(“-------------------”);
Student s = new Student();System.out.println(s);//Student [name=null, age=0]
change2(s);//詳見方法內(nèi)部注釋
//如果在方法里面是改變形式參數(shù)內(nèi)部的一些東西的時候 那么實際參數(shù)發(fā)生改變 System.out.println(s);//Student [name=hehe, age=1]
System.out.println(“-------------------”);
黑馬程序員濟南中心 編著
String string = “abc”;System.out.println(string);//abc
change3(string);//詳見方法內(nèi)部注釋
//形式參數(shù)做賦值操作的時候,實際參數(shù)不發(fā)生改變 System.out.println(string);//abc
System.out.println(“-------------------”);
StringBuffer sb = new StringBuffer(“hello”);System.out.println(sb);//hello
change4(sb);//詳見方法內(nèi)部注釋
//如果在方法里面是改變形式參數(shù)內(nèi)部的一些東西的時候 那么實際參數(shù)發(fā)生改變 System.out.println(sb);//helloworld
System.out.println(“-------------------”);
int[] arr ={1,2,5,8,4,3};System.out.println(Arrays.toString(arr));//[1, 2, 5, 8, 4, 3] change5(arr,0,1);//詳見方法內(nèi)部注釋
//如果在方法里面是改變形式參數(shù)內(nèi)部的一些東西的時候 那么實際參數(shù)發(fā)生改變 System.out.println(Arrays.toString(arr));//[2, 1, 5, 8, 4, 3]
Arrays.sort(arr);System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 5, 8]
System.out.println(“-------------------”);
StringBuffer sb1 = new StringBuffer(“abcd”);StringBuffer sb2 = new StringBuffer(“efgh”);change6(sb1,sb2);//詳見方法內(nèi)部注釋 System.out.println(sb1);//abcd
//形式參數(shù)做賦值操作的時候,實際參數(shù)不發(fā)生改變
System.out.println(“-------------------”);Student s1 = new Student(“hehe”,1);Student s2 = new Student(“haha”,20);change7(s1,s2);//詳見方法內(nèi)部注釋
//形式參數(shù)做賦值操作的時候,實際參數(shù)不發(fā)生改變
System.out.println(s1);//Student [name=hehe, age=1]
} private static void change7(Student s1, Student s2){ //引用類型s1指向的是一個地址值,s2也是指向的地址值,那么把s2的地址值賦給了s1,這
黑馬程序員濟南中心 編著
時候s1指向的地址
//值改變了,而s1內(nèi)部(堆內(nèi)存)的東西改變了嗎?沒有啊,等這個方法調(diào)用完畢了,地址值的指向也都消失了,//s1還是指向原來的地址值,原來的地址值內(nèi)部(堆內(nèi)存)的東西還是沒有改變,所以 賦值操作不會影響實際參數(shù) s1=s2;} private static void change6(StringBuffer sb1, StringBuffer sb2){ //引用類型sb1指向的是一個地址值,sb2也是指向的地址值,那么把sb2的地址值賦給了sb1,這時候sb1指向的地址
//值改變了,而sb1內(nèi)部(堆內(nèi)存)的東西改變了嗎?沒有啊,等這個方法調(diào)用完畢了,地址值的指向也都消失了,//sb1還是指向原來的地址值,原來的地址值內(nèi)部(堆內(nèi)存)的東西還是沒有改變,所以 賦值操作不會影響實際參數(shù) sb1=sb2;} private static void change5(int[] arr, int i, int j){ //引用類型arr指向的其實是一個地址值,那么通過地址值將對象內(nèi)部(堆內(nèi)存)的值發(fā)生改變了,//即使這個方法調(diào)用完畢了,s所代表的地址的指向消失了,那么對象的內(nèi)部其實已經(jīng)改變了,所以形式參數(shù)改變實際參數(shù) int temp = arr[i];[/i] [i] arr = arr[j];[/i] [i] arr[j] = temp;[/i]
[i] }[/i] [i] private static void change4(StringBuffer sb){[/i] [i] //引用類型sb指向的其實是一個地址值,那么通過地址值將對象內(nèi)部(堆內(nèi)存)的字符長度改變了,[/i]
[i] //即使這個方法調(diào)用完畢了,s所代表的地址的指向消失了,那么對象的內(nèi)部其實已經(jīng)改變了,所以形式參數(shù)改變實際參數(shù)[/i] [i] sb.append(“world”);[/i]
[i] }[/i] [i] private static void change3(String string){[/i] [i] //String也是一個引用類型,但是String的值是放在了常量池中,而且常量池中的值是不能被改變的[/i]
[i] //在方法里面這個string所代表的是常量池中值得地址值,那么我說string += “def”這句話在常量池中其實是這樣的:“找有沒有abcdef,如果有就把abcdef的地址值賦給string[/i]
[i] //如果沒有就在常量池中創(chuàng)建一個abcdef 并把地址值賦給string”。然而當我方法用完了 string代表的地址值的指向也消失了,那么原來main方法中的string
黑馬程序員濟南中心 編著
也不發(fā)生改變[/i]
[i] string += “def”;[/i]
[i] }[/i] [i] private static void change2(Student s){[/i] [i] //引用類型s指向的其實是一個地址值,那么通過地址值將對象內(nèi)部(堆內(nèi)存)的屬性改變了,[/i]
[i] //即使這個方法調(diào)用完畢了,s所代表的地址的指向消失了,那么對象的內(nèi)部其實已經(jīng)改變了,所以形式參數(shù)改變實際參數(shù)[/i] [i] s.setName(“hehe”);[/i] [i] s.setAge(1);[/i]
[i] }[/i] [i] private static void change1(int a, int b){[/i] [i] int temp = a;[/i] [i] a= b;[/i] [i] b=temp;[/i]
[i] }[/i] [i]} 當大家看完這個例子的時候,相信很多同學有一種恍然大悟的感覺,終于搞明白為什么參數(shù)傳遞的時候,實際參數(shù)有什么改變有時候不改變。如果大家還有什么疑問需要一起交流,請在下面直接給我留言就可以了,或者直接來濟南黑馬程序員找大山哥哥來咨詢,我會親自給同學講解
黑馬程序員濟南中心 編著
第四篇:struts2 action接收到的參數(shù)中文亂碼的問題
struts2 action接收到的參數(shù)中文亂碼的問題
(2011-06-16 10:55:44)轉(zhuǎn)載 標簽: 分類: 技術(shù)收藏
utf-8 亂碼 gb2312 字符集 編碼方法 雜談
中文亂碼,首先要區(qū)分是頁面亂碼、action亂碼,還是數(shù)據(jù)庫亂碼。大致的原理是java使用unicode編碼-->window使用gbk(gb2312的擴展集)--mysql默認使用utf-8(unicode的一種
編碼方法),這樣轉(zhuǎn)來轉(zhuǎn)去就亂碼了^_^。解決方法如下:
1.在struts2里面,最好將所有字符都設(shè)成utf-8。<%@ page contentType=“text/html;charset=UTF-8”%> <%@ page pageEncoding=“UTF-8” %> 1.1 在jsp頁面設(shè)定字符編碼。這邊有必有說明的是如果是jsp+java bean+servlet的方案,中文亂碼很好解決,統(tǒng)一設(shè)成gb2312就可以了。1.2 使用struts框架字符集不能設(shè)成gb2312,要改成utf-8。
2.在struts.properties 添加: struts.devMode=false struts.enable.DynamicMethodInvocation=true struts.i18n.reload=true struts.ui.theme=simple struts.locale=zh_CN struts.i18n.encoding=UTF-8 struts.serve.static.browserCache=false struts.url.includeParams=none
其中l(wèi)ocale、encoding就是字符集的設(shè)定了。3.在web.xml加個filter
第五篇:小程序的頁面跳轉(zhuǎn)以及參數(shù)傳遞
第九程序小程序的頁面跳轉(zhuǎn)以及參數(shù)傳遞
? 頁面跳轉(zhuǎn)
? 參數(shù)傳遞
微信小程序的頁面跳轉(zhuǎn),頁面之間傳遞參數(shù)筆記 先上demo圖: 為了簡化邏輯,所以index.wxml里面只寫了兩個text.既然是跳轉(zhuǎn),那就還有其他頁面.目錄如下: 三個頁面,但是代碼很簡單.直接上代碼...微信小程序的頁面跳轉(zhuǎn),頁面之間傳遞參數(shù)筆記
先上demo圖:
為了簡化邏輯,所以index.wxml里面只寫了兩個text.既然是跳轉(zhuǎn),那就還有其他頁面.目錄如下:三個頁面,但是代碼很簡單.直接上代碼.index.wxml中的URL就是跳轉(zhuǎn)的頁面路徑.上面代碼中就是navigator目錄下的navigator頁面,title是參數(shù).navigator下redirect屬性是值在當前頁打開.如果不加redirect就是跳轉(zhuǎn)到新頁面.都可以攜帶參數(shù).navigator下redirect屬性是值在當前頁打開.如果不加redirect就是跳轉(zhuǎn)到新頁面.都可以攜帶參數(shù).在navigatort.wxml中通過js代碼可以獲取到title,代碼如下 //navigatort.js 最后上兩張?zhí)D(zhuǎn)后的圖.1.跳轉(zhuǎn)到新頁面
2.在原來的頁面打開
有沒有發(fā)現(xiàn)一個細節(jié),在原來的頁面打開是不會出現(xiàn)返回按鈕的,而跳轉(zhuǎn)到新頁面后會出返回按鈕.這是因為我寫了兩個頁面.如果indexwxml不是一級頁面,這里都會出現(xiàn)返回按鈕.當然返回的結(jié)果是不一樣的:
1.跳轉(zhuǎn)到新頁面,返回是回到之前的頁面;2.在原來頁面打開,返回是回到上一級頁面.