網站首頁 編程語言 正文
從前端頁面,向控制器方法中傳遞參數
1.原生servlet (太麻煩,一般不用)
@RequestMapping(value = {"/param_yuansheng"})
public String get_param(HttpServletRequest request)
{ //servlet原生的方式 注意不能使用占位符方式傳遞參數,因為在傳值時,
// 占位符參數沒辦法獲得參數名,只能是獲得之后再賦名字
//原生方式一般都不用,太麻煩
String uname= request.getParameter("username");
System.out.println(uname);
return "test_param";
}
2.直接獲取參數
參數名和name要一一對應
點我跳轉到形參獲取參數值測試方法
// 通過請求的形參來獲得請求參數 形參的參數名 和控件的name名一定要對應
@RequestMapping(value = {"/param_xingcan"})
public String get_param(String username,String password)
{
System.out.println(username);
System.out.println(password);
return "test_param";
}
3.如果有多個name相同的控件,比如說多選框
發送的get請求會是這樣的
http://localhost:8080/Springmvcdemo2/param_duogetongmingcanshu?uname=123&upwd=123&hobbis=b&hobbis=c&hobbis=a
發送的post請求會是這樣
html頁面:
多個同名參數
1.可以用string接收,會得到選中的控件的value b,a,c的字符串 中間用,號隔開
2.可以用數組接收,會得到選中控件的value的數組[b, c,a]
@RequestMapping(value = {"param_duogetongmingcanshu"})
public String get_duogetongmingcanshu1(
String uname, String hobbis, String[] hobbis2)
{System.out.println("------傳遞多個參數-----");
System.out.println("uname:"+uname);
System.out.println("字符串獲取hobbis:"+hobbis);
System.out.println("數組獲取hobbis2:"+Arrays.toString( hobbis2));
return "test_param";
}
?結果:
?4.按類傳輸
如果要傳輸的數據可以寫成一個類時,可以新建一個user類,類中聲明這三個參數和無參構造
注意類中的屬性名和我要傳的參數的名字一定要一一對應
@RequestMapping(value = {"/param_class"})
public String get_params(User user, HttpServletResponse response)
{
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.println(user);
System.out.println(user);
return "target";
}
直接傳輸類
?當我有個user類,有 id和name和 pwd三個屬性,但我在獲取用戶輸入時,不需要獲取id(id在數據庫表中自增),那我就需要給user類寫一個name和pwd的兩參數的構造函數,就可以傳遞user類了 如下
@RequestMapping("/register_check")
public String register_check(user user1)
{
System.out.println(user1);
return null;
}
5. 用/傳遞參數 ,經常用于result風格的請求
SpringMVC支持路徑中的占位符(重點)
原始方式:/deleteUser?id=1
restful方式:/deleteUser/1
SpringMVC路徑中的占位符常用于Restful風格中,當請求路徑中將某些數據通過路徑的方式傳輸到服務器中,就可以在相應的@RequestMapping注解的value屬性中通過占位符{xxx}表示傳輸的數據,在通過@PathVariable注解,將占位符所表示的數據賦值給控制器方法的形參
@RequestMapping("/testRest/{id}/{username}")
public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){
System.out.println("id:"+id+",username:"+username);
return "success";
}
//最終輸出的內容為-->id:1,username:admin
測試路徑中的占位符-->/testRest
7.解決獲取請求參數的亂碼問題
解決獲取請求參數的亂碼問題,可以使用SpringMVC提供的編碼過濾器CharacterEncodingFilter,但是必須在web.xml中進行注冊??
攔截所有請求,并交給編碼過濾器處理,將請求設置為param-value中指定的編碼格式
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceResponseEncoding
true
CharacterEncodingFilter
/*
SpringMVC中處理編碼的過濾器一定要配置到其他過濾器之前,否則無效
原文鏈接:https://blog.csdn.net/sharesb/article/details/124336950
相關推薦
- 2022-12-31 Android入門之bindService的用法詳解_Android
- 2022-08-10 WPF中圖像處理的方法介紹_C#教程
- 2022-10-01 使用python+Flask實現日志在web網頁實時更新顯示_python
- 2022-09-16 利用Python第三方庫xlrd讀取Excel中數據實例代碼_python
- 2023-11-22 Linux的vim命令如何使用
- 2024-03-17 針對Tomcat部署項目,修改后臺代碼,前臺網頁無變化問題的解決方案(超詳細有效)
- 2022-06-25 Python多行輸入程序實例代碼及擴展_python
- 2022-10-30 移動web開發技能之touch事件詳解_IOS
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支