找回密码
 立即注册
首页 业界区 业界 springMVC-常见视图组件与RESTFul编程风格

springMVC-常见视图组件与RESTFul编程风格

忆雏闲 5 小时前
常见的视图组件

Spring MVC支持的常见视图包括:InternalResourceView:内部资源视图(Spring MVC内置的,专门为jsp模板语法准备的)、RedirectView(重定向视图(Spring MVC内置的,用来完成重定向效果)、ThymeleafView(第三方,专门为ThymeleafView模板语法准备的)......
实现视图机制的核心类和核心接口


  • DispatcherServlet:前端控制器

    • 负责接收前端请求
    • 根据请求路径找到对应的处理器方法
    • 执行处理器方法
    • 最终返回ModelAndView对象

  • ViewResolver:视图解析器接口

    <mvc:default-servlet-handler />
    <mvc:default-servlet-handler /> 这个接口的作用是将逻辑视图名称转换为物理视图名称。并最终返回一个view接口对象。

  • View:视图接口

    <mvc:default-servlet-handler />
    <mvc:default-servlet-handler /> 这个接口负责将模板语法的字符串转换成HTML代码,并且将HTML代码响应给浏览器进行渲染。
转发与重定向的区别

转发重定向一次请求,浏览器地址栏不会发生变化两次请求,浏览器地址栏会发生变化转发代码:request.getRequestDispatcher("/index").forward(request,response);重定向代码:response.sendRedirect("/webapp/index");服务器内部资源跳转,由服务器控制,不可实现跨域访问可以完成内部资源跳转,也可以完成跨域访问可以访问WEB-INF目录下受保护的资源无法访问WEB-INF目录下受保护的资源。(因为重定向相当于浏览器重新发送了一次请求,浏览器发送的请求无法访问被保护的资源)springMVC实现转发forward
  1. @RequestMapping("/a")
  2. public String toA(){
  3.     // 采用springmvc的视图转发机制,跳转到/b
  4.     // 格式:forward:下一个资源的路径,这里的b不是逻辑视图名称,是一个资源路径
  5.     return "forward:/b";
  6. }
  7. @RequestMapping("/b")
  8. public String toB(){
  9.     return "b";
  10. }
复制代码
springMVC实现重定向
  1. @RequestMapping("/a")
  2. public String toA(){
  3.     // 采用springmvc的视图重定向机制,跳转到/b
  4.     // 格式:redirect:下一个资源的路径
  5.     // 如果要实现跨域,需要写全路径,比如:https://baidu.com
  6.     return "redirect:b";
  7. }
  8. @RequestMapping("/b")
  9. public String toB(){
  10.     return "b";
  11. }
复制代码
mvc:view-controller

这个配置用于将某个请求映射到特定的视图上,即指定某一个URL请求到一个视图资源的映射。使得这个视图资源可以被访问。相当于一个独立的处理程序,不需要编写Controller,只需要指定URL和视图名称就可以了。
一般用来配置首页、错误页等。
在springmvc-servlet.xml文件中添加如下配置:
  1.    
  2.     <mvc:view-controller path="/ok" view-name="ok" />
  3.     <mvc:annotation-driven />
复制代码
访问静态资源

使用默认Servlet处理静态资源

在springmvc-servlet.xml文件中添加如下配置:
  1.     <mvc:default-servlet-handler />
复制代码
使用mvc:resources标签配置静态资源

使用mvc:resources标签必须开启注解驱动   。
在springmvc-servlet.xml文件中添加如下配置:
  1.     <mvc:default-servlet-handler />
  2.     <mvc:default-servlet-handler />
复制代码
RESTFul编程风格

RESTFul(Respresentational State Transfer 表述性状态转移  简称REST)是web服务接口的一种设计风格。
RESTFul对一个web服务接口规定了哪些东西?

  • 对请求的URL格式有约束和规范
  • 对HTTP请求方式有约束和规范
  • 对请求和响应的数据格式有约束和规范
  • 对HTTP状态码有约束和规范
REST对请求方式的约束:

  • 查询必须是get请求
  • 新增必须是post请求
  • 修改必须是put请求
  • 删除必须是delete请求
RESTFul对URL的约束和规范的核心是采用不同的请求方式+URL来确定web服务中的资源。
RESTFul风格查询所有数据
  1. @GetMapping("/user")
  2. public String getAllUsers() {
  3.     return "success";
  4. }
复制代码
RESTFul风格根据id查询一条数据
  1. @GetMapping("/user/{id}")
  2. public String getUserById(@PathVariable("id") Integer id) {
  3.     return "success";
  4. }
复制代码
RESTFul风格新增用户信息
  1. @PostMapping("/user")
  2. public String saveUser(User user) {
  3.     return "success";
  4. }
复制代码
RESTFul风格修改用户信息

修改用户信息必须发送put请求。
如何发送put或delete请求呢?

  • 要想发送put请求,。首先必须是一个post请求
  • 在post请求表单中添加隐藏域
  1. [/code][list=1]
  2. [*]在web.xml添加一个过滤器
  3. [/list][code]<filter>
  4.     <filter-name>hiddenHttpMethodFilter</filter-name>
  5.     <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  6. </filter>
  7. <filter-mapping>
  8.     <filter-name>hiddenHttpMethodFilter</filter-name>
  9.     <url-pattern>/*</url-pattern>
  10. </filter-mapping>
复制代码
  1. @PutMapping("/user")
  2. public String modifyUser(User user) {
  3.     return "success";
  4. }
复制代码
RESTFul风格删除用户信息
  1. @DeleteMapping("/user/{id}")
  2. public String deleteUserById(@PathVariable("id") Integer id) {
  3.     return "success";
  4. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册