SpringMVC 获取 请求的参数

SpringMVC 获取 请求的参数,第1张

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页面如下:


这样在页面中访问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中添加如下配置即可解决中文乱码问题:




encoding

org.springframework.web.filter.CharacterEncodingFilter



encoding

UTF-8







encoding

/*

方式二:直接使用参数  (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的值。
 

    

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5722105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存