SpringMVC之请求和响应

前言

前面我们学习了SpringMVC的基本配置,接下来一个非常重要的知识点是如何接受用户的请求以及如何将数据发送给用户。

 

获得请求参数

获得页面参数的几种方式

1)通过参数名获得

给控制器的方法设置参数名和表单name相同

2)通过@RequestParam("参数名")注解设置参数

@RequestParam("表单元素的name") 参数类型 参数名

3)自动装箱,创建属性名和表单名称一样的类

把类作为方法的参数

 

通过参数名获得

页面表单:

<form action=”/user/login” method=”post”>

<input type=”text” name=”username”><br>

<input type=”password” name=”password”><br>

<input type=”submit” value=”登录”><br>

</form>

控制器:

@Controller

@RequestMapping(“/user”)

public class UserController{

 

@RequestMapping(“/login”)

public String login(String username,String password){

System.out.println(“username : ” + username);

System.out.println(“password: ” + password);

return “index”;

}

}

注意:这里login方法的参数名必须和表单元素的name属性一致

 

通过@RequestParam("参数名")注解设置参数

控制器:

@Controller

@RequestMapping(“/user”)

public class UserController{

 

@RequestMapping(“/login”)

public String login(@RequestParam(“username”)String name,

@RequestParam(“password”)String pwd){

System.out.println(“username : ” + name);

System.out.println(“password: ” + pwd);

return “index”;

}

}

注意:这里login方法的参数名必须和表单元素的name属性不需要一致,只需要在参数前面的注解@RequestParam中设置表单元素的名称就可以了。

 

自动装箱,创建属性名和表单名称一样的类

定义User类:

public class User{

private String username;

private String password;

省略get、set方法

}

控制器:

@Controller

@RequestMapping(“/user”)

public class UserController{

 

@RequestMapping(“/login”)

public String login(User user){

System.out.println(“username : ” + user.getName());

System.out.println(“password: ” + user.getPassword());

return “index”;

}

}

注意:login方法的参数使用了自定义类,该类的属性名称必须和表单元素名称一致,必须提供get和set方法。

 

将数据返回给页面

前面我们了解了如何从页面获取数据,下面我们将学习如何将数据返回给页面。

1)通过Map集合

在方法的参数中,添加Map集合,把数据存入集合

2)通过Model模型

在方法的参数中,添加Model参数,使用Model的addAttribute("名称",值) 添加数据

3)通过请求对象、Session对象

在方法中添加HttpServletRequest参数或HttpSession参数

通过Map集合

在index.jsp页面中使用EL表达式来绑定数据:

<h2>你好,欢迎 ${username}</h2>

控制器:

@Controller

@RequestMapping(“/user”)

public class UserController{

 

@RequestMapping(“/login”)

public String login(@RequestParam(“username”)String name,

@RequestParam(“password”)String pwd,Map<String,String> map){

System.out.println(“username : ” + name);

System.out.println(“password: ” + pwd);

map.put(“username”,name);

return “index”;

}

}

注意:Map集合可以作为login方法的参数放在任意位置,在集合中存入的键username将是EL表达式${username}对应的名称,集合中存入的值会在页面中显示出来。

通过Model模型

@Controller

@RequestMapping(“/user”)

public class UserController{

 

@RequestMapping(“/login”)

public String login(@RequestParam(“username”)String name,

@RequestParam(“password”)String pwd,Model model){

System.out.println(“username : ” + name);

System.out.println(“password: ” + pwd);

model.addAttribute(“username”,name);

return “index”;

}

}

注意:这里使用的是Mode对象,此对象的作用类似于前面的Map集合,不过它是专门用于保存数据,然后发送给页面的,实际开发中用得更多。

 

通过请求对象、Session对象

控制器:

@Controller

@RequestMapping(“/user”)

public class UserController{

 

@RequestMapping(“/login”)

public String login(@RequestParam(“username”)String name,

@RequestParam(“password”)String pwd,HttpServletRequest req){

System.out.println(“username : ” + name);

System.out.println(“password: ” + pwd);

req.setAttribute(“username”,name);

return “index”;

}

}

注意:这里使用了JavaWeb中常用的HttpServletRequest请求对象,用于将数据传递给页面,也可以使用HttpSession对象,HttpSession中的对象在用户的所有组件中共享,对象保存在内存的时间比较长,所以尽量使用HttpServletRequest,以更加高效的使用内存。

 

 

总结

本章我们学习了控制器从页面获得数据的几种方式,以及将数据从控制器返回给页面的几种方式。通过本章的学习我们掌握了SpringMVC操作数据的基本方法,结合数据库我们将能实现一个基本的JavaWeb项目。

 

 

SpringMVC是一个用于构建Web应用程序的Java框架。在SpringMVC中,处理请求响应是通过使用控制器方法来实现的。控制器方法使用@RequestMapping注解来映射请求的URL,并通过方法参数来获取请求参数响应对象。 在处理请求时,可以使用@RequestParam注解来获取请求参数的值。例如,可以在方法参数上使用@RequestParam注解来获取请求中的特定参数值。另外,也可以使用@PathVariable注解来获取URL中的路径参数。 在处理响应时,可以使用@ResponseBody注解将方法的返回值直接写入HTTP响应体中,而不是进行视图跳转。这样可以直接返回字符串、JSON格式的数据或其他类型的数据。 另外,在SpringMVC中,还有一些核心组件,如处理器映射器、处理器适配器视图解析器。处理器映射器负责将请求映射到相应的控制器方法,处理器适配器负责将请求参数绑定到方法参数,并调用相应的控制器方法,视图解析器负责将方法的返回值解析为视图。 总结起来,SpringMVC通过控制器方法、注解核心组件来处理请求响应,使得开发者可以方便地构建Web应用程序。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [springMVC请求响应](https://blog.youkuaiyun.com/weixin_38088097/article/details/105840310)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SpringMVC请求响应](https://blog.youkuaiyun.com/weixin_51146329/article/details/123166475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值