黑马程序员springmvc教程第一天:controller方法的返回值和参数详解

合集下载

controller的工作原理 -回复

controller的工作原理 -回复

controller的工作原理-回复什么是controller、它的工作原理、它的作用以及在不同应用场景中的实现方式。

什么是controller?Controller是MVC架构中的其中一部分,它通常被用于处理Web应用程序中的输入请求,并将输入数据转化为相应的模型和视图,以便展示或存储数据。

简单来说,控制器是MVC中用于处理数据请求和处理响应的一组组件。

Controller的工作原理Controller的工作原理是通过模型和视图进行数据处理和呈现。

当用户请求一个页面或一个资源时,这个请求会被发送到Controller。

Controller 会根据请求的内容和请求所处的URL来做出相应的响应。

在一个典型的Web应用程序中,请求可能是一个表单提交请求或一个超链接请求等等。

Controller的作用Controller的主要作用是控制用户请求并根据请求所需的参数来处理页面显示和数据传递。

它通常是在用户请求进入Web应用程序时,将用户请求存储在一个仓库中,然后把这个请求传递给相应的服务。

服务在收到请求后,对请求进行处理,然后将处理后的结果返回给Controller。

Controller在收到服务返回的数据后,再将数据转化为视图并使用相应的模板引擎对视图进行渲染,最终将结果返回给用户。

Controller在不同应用场景中的实现方式从应用场景来说,Controller的实现方式有很多种,下面将介绍一些常见的方式。

1、RESTful APIRESTful API是一个可伸缩的Web架构,它可根据需求扩展或缩小应用程序功能范围。

同时,它的Controller也能够轻松地实现和管理。

2、单页面应用程序单页面应用程序是指基于JavaScript的单页面应用程序,通常使用React、Vue或Angular等前端框架来开发。

在这种情况下,Controller的作用是负责管理和渲染页面,并在需要的时候根据用户动作来调用后端服务。

SpringMVC中controller中方法返回类型为ResponseEntity乱码的问题

SpringMVC中controller中方法返回类型为ResponseEntity乱码的问题

SpringMVC中controller中⽅法返回类型为ResponseEntity乱码的问题返回类型为ResponseEntity<T>代表我们返回的数据是⼀个对象,在springMVC中,请求数据到对象和对象到响应数据的转换是通过消息转换器来完成的。

HttpMessageConverter是消息转换器的顶层接⼝,所有的消息转换器都必须实现这个接⼝package org.springframework.http.converter;import java.io.IOException;import java.util.List;import org.springframework.http.HttpInputMessage;import org.springframework.http.HttpOutputMessage;import org.springframework.http.MediaType;public interface HttpMessageConverter<T> {boolean canRead(Class<?> clazz, MediaType mediaType);boolean canWrite(Class<?> clazz, MediaType mediaType);List<MediaType> getSupportedMediaTypes();T read(Class<? extends T> clazz, HttpInputMessage inputMessage)throws IOException, HttpMessageNotReadableException;void write(T t, MediaType contentType, HttpOutputMessage outputMessage)throws IOException, HttpMessageNotWritableException;}我们可以看到针对不同的类型,实现了具体消息转换器--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------下⾯先来说说<mvc:annotation-driven></mvc:annotation-driven>,通过这个线索⼀直下去,找到问题的根源。

Controller方法的返回值

Controller方法的返回值

Controller方法的返回值Controller 方法的返回值是指在 Spring MVC 中,控制器方法处理请求后返回的结果。

这个结果可以是任何类型,包括简单类型、复杂对象、集合、Map、视图、重定向等。

在控制器方法中,可以通过不同的方式来指定返回值。

1. 返回简单类型:可以直接返回基本数据类型(如int、float等)或其包装类,Spring MVC 会自动将其转换为对应的响应体。

例如:```javapublic int getCounreturn 10;``````javapublic User getUseUser user = new User("John", 25);return user;```3. 返回集合或数组:可以返回 List、Set、数组等类型的对象,Spring MVC 会将其转换为 JSON 或 XML 格式的响应体。

例如:```javapublic List<User> getUserList<User> users = userRepository.findAll(;return users;```4. 返回视图:可以返回视图名称或视图对象,用于展示页面。

默认情况下,Spring MVC 会根据视图解析器的配置来解析视图。

例如:```javapublic String home(Model model)return "home";```5. 返回重定向:可以返回重定向的 URL,让客户端重新发送请求。

可以使用 `RedirectView` 或字符串类型来指定重定向。

例如:```javapublic String logoureturn "redirect:/login";```6. 返回 ResponseEntity:可以返回 ResponseEntity 对象,用于自定义响应头、状态码和响应体。

SpringBoot之Controller接收参数和返回数据总结(包括上传、下载文件)

SpringBoot之Controller接收参数和返回数据总结(包括上传、下载文件)

SpringBoot之Controller接收参数和返回数据总结(包括上传、下载⽂件)⼀、接收参数(postman发送)1.form表单@RequestParam("name") String name会把传递过来的Form表单中的name对应到formData⽅法的name参数上该注解不能接收json传参该注解表⽰name字段是必须⼊参的,否则会报错@RequestParam(value = "name", required = false) String namerequired = false表⽰必须⼊参@RequestParam(value = "name", defaultValue = "admin") String namedefaultValue = "admin"表⽰当name⼊参为空的时候给它⼀个默认值admin/*** 测试接收form表单、URL的数据。

不能接收Json数据* */@RequestMapping(value = "/test1", method = RequestMethod.POST)public String formData(@RequestParam("name") String name , @RequestParam("age") int age){String result = "receive name = "+name+" age = "+age;System.out.println(result);return result;}2.URL代码跟1.form表单中的代码⼀样3.动态接收URL中的数据@PathVariable将URL中的占位符参数绑定到控制器处理⽅法的⼊参此种情况下,url求情中⼀定要带占位符pageNo,pageSize的值,不然访问失败即访问时⼀定要⽤ http://localhost:8088/sid/test2/2/20如果⽤ http://localhost:8088/sid/test2 则访问失败/*** 测试动态接收URL中的数据* */@RequestMapping(value = "/test2/{pageNo}/{pageSize}", method = RequestMethod.POST) public String urlData(@PathVariable int pageNo , @PathVariable int pageSize){String result = "receive pageNo = "+pageNo+" pageSize = "+pageSize;System.out.println(result);return result;}4.json@RequestBody 接收Json格式的数据需要加这个注解。

Spring_MVC_控制器方法返回值与视图的关系

Spring_MVC_控制器方法返回值与视图的关系
类层级的RequestMappingValue+方法层级的RequestMappingValue+视图模型后缀
作为本次请求结束后要定向的页面。
方式
返回值
视图说明
页面取值方式
1
void
prefix前缀+@RequestMapping value +suffix后缀组成
根据key取值,如
${key}
2
String
${stringList[0]}
${stringList[1].username}
6
Set
同1
同5
7
Connection
同1
比较复杂,见方式比较复杂,见方式8
方式7:
方式8:
根据String字符串返回对应的地址prefix前缀+返回值+suffix后缀组成
3
ModelAndView
通过setViewName方法跳转到指定的页面
4
ModelMap
同1
Model
同1
4
Map
同1
5
List
同1
以第一个存入对象的Object.getClass().getSimpleName()+List,如左图所示,取值方式为
返回值视图说明页面取值方式voidprefix前缀requestmappingvaluesuffix后缀组成根据key取值如keystring根据string字符串返回对应的地址prefix前缀返回值suffix后缀组成modelandview通过setviewnam方法跳转到指定的页以第一个存入对象的objectgetclass
1.Spring控制器@Controller方法返回值一般是String或者ModelAndView

controller中方法的参数说明

controller中方法的参数说明

controller中方法的参数说明
在控制器(Controller)中的方法参数说明如下:
1. HttpServletRequest:表示HTTP请求对象,用于获取请求的各种
信息,如请求头、请求参数等。

2. HttpServletResponse:表示HTTP响应对象,用于向客户端发送
响应。

3. HttpSession:表示会话对象,用于存储用户的会话数据,如登录
状态、购物车等。

4. Model:表示数据模型对象,用于向视图传递数据。

5. ModelMap:同样表示数据模型对象,可以向视图传递数据,并且
支持链式操作。

6. RedirectAttributes:用于重定向时传递参数,可以将参数添加
到重定向URL中。

7. Principal:表示当前登录用户的信息,可以获取用户名、角色等。

以上是常用的控制器方法参数说明,不同的框架和技术可能会有所差异,具体的使用方法和参数说明可以参考相应框架的文档或官方指南。

黑马程序员springmvc教程第一天:程序小结

黑马程序员springmvc教程第一天:程序小结

源码分析(了解)通过前端控制器源码分析springmvc的执行过程。

第一步:前端控制器接收请求调用doDiapatch第二步:前端控制器调用处理器映射器查找 Handler第三步:调用处理器适配器执行Handler,得到执行结果ModelAndView第四步:视图渲染,将model数据填充到request域。

视图解析,得到view:调用view的渲染方法,将model数据填充到request域渲染方法:入门程序小结通过入门程序理解springmvc前端控制器、处理器映射器、处理器适配器、视图解析器用法。

前端控制器配置:第一种:*.action,访问以.action结尾由DispatcherServlet进行解析第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析使用此种方式可以实现 RESTful风格的url处理器映射器:非注解处理器映射器(了解)注解的处理器映射器(掌握)对标记@Controller类中标识有@RequestMapping的方法进行映射。

在@RequestMapping里边定义映射的url。

使用注解的映射器不用在xml中配置url和Handler的映射关系。

处理器适配器:非注解处理器适配器(了解)注解的处理器适配器(掌握)注解处理器适配器和注解的处理器映射器是配对使用。

理解为不能使用非注解映射器进行映射。

<mvc:annotation-driven></mvc:annotation-driven>可以代替下边的配置:<!--注解映射器 --><beanclass="org.springframework.web.servlet.mvc.method.annotation.R equestMappingHandlerMapping"/><!--注解适配器 --><beanclass="org.springframework.web.servlet.mvc.method.annotation.R equestMappingHandlerAdapter"/>实际开发使用:mvc:annotation-driven视图解析器配置前缀和后缀:程序中不用指定前缀和后缀:出师表两汉:诸葛亮先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。

SpringMVC处理方法返回值过程解析

SpringMVC处理方法返回值过程解析

SpringMVC处理⽅法返回值过程解析这篇⽂章主要介绍了Spring MVC处理⽅法返回值过程解析,⽂中通过⽰例代码介绍的⾮常详细,对⼤家的学习或者⼯作具有⼀定的参考学习价值,需要的朋友可以参考下对于Spring MVC处理⽅法⽀持⽀持⼀系列的返回⽅式:(1)ModelAndView(2)Model(3)ModelMap(4)Map(5)View(6)String(7)Void(8)Object⼀,ModelAndView@RequestMapping("/threadRequest*")public ModelAndView threadRequest(){ModelAndView mv=new ModelAndView();mv.setViewName("index");mv.addObject("user","王五");return mv;}通过ModelAndView构造⽅法可以指定返回的页⾯名称,也可以通过setViewName()⽅法跳转到指定的页⾯ ,使⽤addObject()设置需要返回的值,addObject()有⼏个不同参数的⽅法,可以默认和指定返回对象的名字。

调⽤addObject()⽅法将值设置到⼀个名为ModelMap的类属性,ModelMap是LinkedHashMap的⼦类,⼆,ModelModel是⼀个接⼝,其实现类为ExtendedModelMap,继承了ModelMap类。

model.addAttribute("pojo", pojo);三,ModelMapModel 是⼀个接⼝,其实现类为ExtendedModelMap,继承了ModelMap类。

四,Map@RequestMapping("/show")public Map<String, String> getMap() {Map<String, String> map = new HashMap<String, String>();map.put("key1", "value-1");map.put("key2", "value-2");return map;}五,View可以返回pdf excel六,String@RequestMapping("/RequestMethod")public String index(Model model) {String retVal = "user/index";List<User> users = userService.getUsers();model.addAttribute("users", users);return retVal;}1、如果返回值为null,那么以请求名作为视图名进⾏跳转2、如果指定返回值,那么按照指定返回值作为视图名进⾏跳转,可以通过model,modeMap携带数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

controller方法的返回值
⏹返回ModelAndView
需要方法结束时,定义ModelAndView,将model和view分别进行设置。

⏹返回string
如果controller方法返回string,
1、表示返回逻辑视图名。

真正视图(jsp路径)=前缀+逻辑视图名+后缀
2、redirect重定向
商品修改提交后,重定向到商品查询列表。

redirect重定向特点:浏览器地址栏中的url会变化。

修改提交的request数据无法传到重定向的地址。

因为重定向后重新进行request(request无法共享)
3、forward页面转发
通过forward进行页面转发,浏览器地址栏url不变,request可以共享。

⏹返回void
在controller方法形参上可以定义request和response,使用request或response指定响应结果:
1、使用request转向页面,如下:
request.getRequestDispatcher("页面路径").forward(request, response);
2、也可以通过response页面重定向:
response.sendRedirect("url")
3、也可以通过response指定响应结果,例如响应json数据如下:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
参数绑定
spring参数绑定过程
从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。

springmvc中,接收页面提交的数据是通过方法形参来接收。

而不是在controller 类定义成员变更接收!!!!
默认支持的类型
直接在controller方法形参上定义下边类型的对象,就可以使用这些对象。

在参数绑定过程中,如果遇到下边类型直接进行绑定。

1.2.1.1HttpServletRequest
通过request对象获取请求信息
1.2.1.2HttpServletResponse
通过response处理响应信息
1.2.1.3HttpSession
通过session对象得到session中存放的对象
1.2.1.4Model/ModelMap
model是一个接口,modelMap是一个接口实现。

作用:将model数据填充到request域。

相关文档
最新文档