當前位置:首頁 » 編程語言 » java修改參數

java修改參數

發布時間: 2022-09-14 21:42:59

A. 在java中沒有指針,如何修改函數中參數的值

想通過函數改變參數的值,這點好像不可能,因為java的函數傳參是值傳遞,沒有C語言中的重命名和指針傳參方法。不過也有方法:在函數中通過return值將結果返回,在通過用要改變的參數接收返回值就可以了,不過這點好像和直接賦值沒多大區別,但如果函數體中賦值過程比較復雜,這個方法還是可行的。

B. java修改請求參數的值

網上查了一些資料,解決方案是使用Wrapper,重寫HttpServletRequestWrapper,如下:
package com.gdcn.bpaf.security.yale;

import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

@SuppressWarnings("unchecked")
public class ParameterRequestWrapper extends HttpServletRequestWrapper {

private Map params;

public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {
super(request);
this.params = newParams;
}

public Map getParameterMap() {
return params;
}

public Enumeration getParameterNames() {
Vector l = new Vector(params.keySet());
return l.elements();
}

public String[] getParameterValues(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
return (String[]) v;
} else if (v instanceof String) {
return new String[] { (String) v };
} else {
return new String[] { v.toString() };
}
}

public String getParameter(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
String[] strArr = (String[]) v;
if (strArr.length > 0) {
return strArr[0];
} else {
return null;
}
} else if (v instanceof String) {
return (String) v;
} else {
return v.toString();
}
}
}
�0�22.使用
//然後在另一個地方使用時,按下面這樣用,假如我要修改username的值

HashMap m=new HashMap(request.getParameterMap());
/*
關鍵部分,如果不轉換成String數組,如果在下面這樣是有時:
eg:
HttpSession session = request.getSession();
Map map = request.getParameterMap();
Set keySet = map.keySet();
for (Iterator iterator = keySet.iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String values[] = (String[])map.get(key); //這個地方就會報錯,因為username一個String不能轉換成String數組
if (values.length == 1)
session.setAttribute(key, values[0]);
else
session.setAttribute(key, values);
}
異常
就會出現java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String;
*/
//m.put("username", newusername); //這樣會報錯
m.put("username", new String[]{newusername}); //這就是對的
HttpServletRequest req = (HttpServletRequest) request;
com.gdcn.bpaf.security.yale.ParameterRequestWrapper wrapRequest=new com.gdcn.bpaf.security.yale.ParameterRequestWrapper(req,m);
request=wrapRequest; //這是rquest就和本身的request一樣了

C. java修改請求參數的值

java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap。網上查了一些資料,解決方案是使用Wrapper,重寫HttpServletRequestWrapper,如下:
Java代碼
package com.gdcn.bpaf.security.yale;

import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

@SuppressWarnings("unchecked")
public class ParameterRequestWrapper extends HttpServletRequestWrapper {

private Map params;

public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {
super(request);
this.params = newParams;
}

public Map getParameterMap() {
return params;
}

public Enumeration getParameterNames() {
Vector l = new Vector(params.keySet());
return l.elements();

D. java修改請求參數的值

網上查了一些資料,解決方案是使用Wrapper,重寫HttpServletRequestWrapper,如下:
package com.gdcn.bpaf.security.yale;

import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

@SuppressWarnings("unchecked")
public class ParameterRequestWrapper extends HttpServletRequestWrapper {

private Map params;

public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {
super(request);
this.params = newParams;
}

public Map getParameterMap() {
return params;
}

public Enumeration getParameterNames() {
Vector l = new Vector(params.keySet());
return l.elements();
}

public String[] getParameterValues(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
return (String[]) v;
} else if (v instanceof String) {
return new String[] { (String) v };
} else {
return new String[] { v.toString() };
}
}

public String getParameter(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
String[] strArr = (String[]) v;
if (strArr.length > 0) {
return strArr[0];
} else {
return null;
}
} else if (v instanceof String) {
return (String) v;
} else {
return v.toString();
}
}
}
�0�22.使用
//然後在另一個地方使用時,按下面這樣用,假如我要修改username的值

HashMap m=new HashMap(request.getParameterMap());
/*
關鍵部分,如果不轉換成String數組,如果在下面這樣是有時:
eg:
HttpSession session = request.getSession();
Map map = request.getParameterMap();
Set keySet = map.keySet();
for (Iterator iterator = keySet.iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String values[] = (String[])map.get(key); //這個地方就會報錯,因為username一個String不能轉換成String數組
if (values.length == 1)
session.setAttribute(key, values[0]);
else
session.setAttribute(key, values);
}
異常
就會出現java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String;

E. Java中如何改變參數的值(實現按址傳遞)

java方法中傳值和傳引用的問題是個基本問題,但是也有很多人一時弄不清。你的題目本身就有歧義,無法直接針對題目作答(因為java不存在類似c或c++那樣的傳址)。我從頭講起:
(一)基本數據類型:傳值,方法不會改變實參的值。
(二)對象類型參數:傳引用,方法體內改變形參引用,不會改變實參的引用,但有可能改變實參對象的屬性值。例如
public class TestFun4 {
public static void testStringBuffer(StringBuffer sb){
sb.append("java");//改變了實參的內容
}
public static void main(String[] args) {
StringBuffer sb= new StringBuffer("my ");
new TestFun4().testStringBuffer(sb);
System.out.println("sb="+sb.toString());//內容變化了
}
}

F. java修改請求參數的值

什麼請求,jsp+servlet的嗎?可以通過request.getParameters("paraName")獲得值恩
修改好的值,可以out.print('');的頁面
我們有學習小組也 希望一起學習進步 Java框架平台研發 378 437 335

熱點內容
微信里的密碼和賬號在哪裡 發布:2025-01-11 22:46:04 瀏覽:750
java字元串個數統計 發布:2025-01-11 22:45:05 瀏覽:541
完美國際2捏臉資料庫 發布:2025-01-11 22:45:04 瀏覽:279
php淘寶互刷平台源碼 發布:2025-01-11 22:43:49 瀏覽:215
劍俠情緣緩存怎麼清理 發布:2025-01-11 22:33:56 瀏覽:316
win7旗艦版怎麼設置密碼 發布:2025-01-11 22:21:09 瀏覽:144
被害人訪問 發布:2025-01-11 22:06:24 瀏覽:366
朋友圈上傳長視頻方法 發布:2025-01-11 22:01:41 瀏覽:357
我的世界ice伺服器被炸罰款 發布:2025-01-11 21:54:36 瀏覽:725
linuxphpini配置 發布:2025-01-11 21:54:35 瀏覽:481