IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringMVC 获取 请求的参数 -> 正文阅读

[Java知识库]SpringMVC 获取 请求的参数

1 url路径

??url地址/user/1中的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。地址/user/1可以写成 /user/{id} ,占位符{id}对应的就是1的值。在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作。

http://localhost:8080/itheima_springmvc1/quick19/zhangsan
@RequestMapping("/quick19/{name}")
@ResponseBody
public void quickMethod19(@PathVariable(value = "name",required = true) String name){
System.out.println(name);
}

2 get参数获取

? 使用@RequestParam

?这样,当我们0访问/user/?id=123时,SpringMVC帮助我们将Request参数id的值绑定到了处理函数的参数blogId上。这样就能够轻松获取用户输入,并根据它的值进行计算并返回了。

@RequestMapping(value="/user")
	public String getUserBlog(@RequestParam(value="id") int blogId) {
		return "blogId="+blogId;
	

3 post 参数获取

其实和get请求的获取参数方式一样,在此单列出来主要是为了说明几种特殊情况,如方式一中有数组、方式二中使用类、以及使用ajax。

先写一个addUser.jsp页面如下:

<form action="" method="post">

<p><input type="test" name="username" placeholder="请输入用户名。。。" autofocus="autofocus"/></p>

<p><input type="test" name="age" placeholder="请输入年龄。。。"/></p>

<p><input type="test" name="phone" placeholder="请输入电话。。。"/></p>

<p>省份:

<select>

<option value="000001">北京市</option>

<option value="000002">天津市</option>

<option value="000003">上海市</option>

</select>

</p>

<p>爱好:

<label><input type="checkbox" name="intesters" value="1"/>爬山</label>

<label><input type="checkbox" name="intesters" value="2"/>旅游</label>

<label><input type="checkbox" name="intesters" value="3"/>打球</label>

</p>

<p>性别:

<label><input type="radio" name="sex" value="1"/>男</label>

<label><input type="radio" name="sex" value="2"/>女</label>

<label><input type="radio" name="sex" value="3"/>保密</label>

</p>

<p><input type="submit" value="提交"/></p>

</form>

这样在页面中访问http://localhost:8080/firstSpringMVC/user/addUser

可得到如下页面:

方式一:使用HttpServletRequest? getParameter (忽略)

?表单中 action的值改为:saveUser

在controller中增加方法:

// 获取post请求参数(getParameter)

@RequestMapping(value="saveUser", method=RequestMethod.POST)

public String saveUser(HttpServletRequest request){

String username= request.getParameter("username");

Integer age = Integer.parseInt(request.getParameter("age"));

String phone = request.getParameter("phone");

String city = request.getParameter("city");

String[] interests = request.getParameterValues("interests");

Integer sex = Integer.parseInt(request.getParameter("sex"));

System.out.println("username : " + username);

System.out.println("age : " + age);

System.out.println("phone : " + phone);

System.out.println("city : " + city);

System.out.println("interests : ");

for(String interest: interests){

System.out.println(" ? ?interest : " + interest);

}

System.out.println("sex : " + sex);

return "login/welcome";

}

点提交按钮,后台输出:

?需要注意的是,如果是一个数组,就不能使用getParameter了,如form表单中的兴趣爱好,需要使用String[] interest = request.getParameterValues(“interest”);

如果名称使用中文,会出现乱码

在web.xml中添加如下配置即可解决中文乱码问题:

<!-- 乱码问题,post请求乱码 -->

<filter>

<filter-name>encoding</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encoding</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

方式二:直接使用参数? (spring 方式)

action的值改为:saveUser2

创建一个User类:(pojo)

并为user类的成员变量增加get、set方法。

在controller类中增加方法:

// 获取post请求参数(直接使用参数)

@RequestMapping(value="saveUser2", method=RequestMethod.POST)

public String saveUser2(String username, User user){

System.out.println("username - " + username);   //直接获取参数

System.out.println("user.username - " + user.getUsername());  //反射方式

return "login/welcome";

}

点提交,后面输出如下:

?说明直接使用username为参数可以接受,直接使用类也可以接受。

注:之所以可以使用类为参数来接受数据,是spring的反射机制。即,form表单中的标签中的name属性:

要和User类中的成员变量名相同,更准确的说,应该和成员变量对应的set方法对应,即:User类中的setUsername方法将接受form表单中name属性为username的值。
?

?? ?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:35:51  更:2022-02-05 21:37:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:36:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码