当前位置: 首页 > wzjs >正文

建站之星极速版租车公司哪家好

建站之星极速版,租车公司哪家好,北京音乐制作公司,中国城乡建设部网站房贴文件文章目录 一、请求映射的艺术:RequestMapping深度解析1. 多级路径配置2. 六大核心属性3. RESTful风格实践 二、参数绑定黑科技1. 智能绑定机制基础类型绑定对象嵌套绑定集合类型绑定 2. 参数处理三剑客 三、响应处理全攻略1. 视图跳转三种模式2. JSON交互实践 四、文…

文章目录

  • 一、请求映射的艺术:RequestMapping深度解析
    • 1. 多级路径配置
    • 2. 六大核心属性
    • 3. RESTful风格实践
  • 二、参数绑定黑科技
    • 1. 智能绑定机制
      • 基础类型绑定
      • 对象嵌套绑定
      • 集合类型绑定
    • 2. 参数处理三剑客
  • 三、响应处理全攻略
    • 1. 视图跳转三种模式
      • 2. JSON交互实践
  • 四、文件操作实战
    • 1. 上传配置三要素
    • 2. 上传下载核心代码
  • 五、异常处理大师课
    • 1. 异常处理金字塔
    • 2. 全局异常处理方案
  • 总结


一、请求映射的艺术:RequestMapping深度解析

1. 多级路径配置

@Controller
@RequestMapping("/order")  // 一级路径
public class OrderController {@GetMapping("/create")  // 二级路径public String createOrder() {return "order/create";}
}

访问路径:/order/create

2. 六大核心属性

属性名作用说明示例值
value定义请求路径(默认属性),支持多路径配置@RequestMapping("/user/list")
@RequestMapping({"/list", "/all"})
method限制HTTP请求方法类型method = RequestMethod.POST
method = {GET, POST}
params要求请求必须包含指定参数(支持表达式)params = "userId"
params = "!age"
params = "type=admin"
headers校验请求头信息(支持正则匹配)headers = "Content-Type=text/*"
headers = "!X-Custom-Header"
consumes限制请求的媒体类型(Content-Type)consumes = "application/json"
consumes = "multipart/form-data"
produces指定响应内容的媒体类型(Accept)produces = "text/html"
produces = "application/pdf"

典型配置示例

@RestController
@RequestMapping(value = "/api/v1/products", produces = MediaType.APPLICATION_JSON_VALUE)
public class ProductController {@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE,headers = "X-Request-Source=WEB")public ResponseEntity<Product> createProduct(@RequestParam("file") MultipartFile file,@RequestParam("name") String productName) {// 业务逻辑...}
}

3. RESTful风格实践

@RestController
@RequestMapping("/api/products")
public class ProductController {@GetMapping("/{id}")public Product getProduct(@PathVariable Long id) {return productService.findById(id);}@PostMappingpublic ResponseEntity<Product> createProduct(@RequestBody Product product) {Product saved = productService.save(product);return ResponseEntity.created(URI.create("/products/"+saved.getId())).body(saved);}
}

二、参数绑定黑科技

1. 智能绑定机制

基础类型绑定

<!-- JSP表单 -->
<input type="text" name="age">
@PostMapping("/user")
public String createUser(int age) { // 自动将age转换为int类型
}

对象嵌套绑定

public class User {private Address address;// getters/setters
}
public class Address {private String city;// getters/setters
}
<input type="text" name="address.city">

集合类型绑定

<!-- 绑定List集合 -->
<input type="text" name="accounts[0].accountNumber">
<input type="text" name="accounts[1].accountNumber">

2. 参数处理三剑客

注解功能说明应用场景示例
@RequestParam1. 绑定单个请求参数
2. 支持参数默认值设置
3. 可指定是否必传
1. 普通表单提交
2.GET请求参数获取
3.参数名与方法参数名不一致时
@RequestParam("uname") String username
@RequestParam(defaultValue="1") int page
@PathVariable1. 绑定URI模板变量
2. 支持RESTful风格
3. 自动类型转换
1.RESTful API设计
2.资源定位场景
3.需要从URL路径提取参数
@GetMapping("/users/{id}")
public User getById(@PathVariable Long id)
@RequestBody1. 绑定请求体内容
2. 支持JSON/XML解析
3. 与HttpMessageConverter配合
1. 接收JSON请求体
2. 复杂对象传输
3.前后端分离项目数据交互
@PostMapping @RequestBody UserDTO user
@RequestBody List<Item> items

核心特性对比

特性@RequestParam@PathVariable@RequestBody
参数位置URL查询字符串URL路径请求体
数据格式键值对简单类型JSON/XML
是否必传可配置必传通常必传
默认值支持✔️
适合请求方法GET/POST所有方法POST/PUT

代码示例

@PostMapping("/update")
public String updateUser(@RequestParam("uname") String username,@PathVariable Long userId,@RequestBody UserDTO dto) {// 业务逻辑
}

三、响应处理全攻略

1. 视图跳转三种模式

响应方式核心特点典型应用场景
ModelAndView1. 数据与视图统一封装
2. 支持链式编程
3. 显式控制视图渲染逻辑
需要同时传递数据和视图的场景
传统MVC模式开发
动态页面内容渲染
字符串返回1. 简洁直观
2. 自动视图解析
3. 隐式数据绑定(配合Model对象)
简单页面跳转
前后端轻度交互
Thymeleaf/FreeMarker模板渲染
Servlet API1. 直接操作原生响应对象
2. 完全控制响应流程
3. 绕过视图解析器
文件下载/上传
流式数据返回
自定义HTTP头/状态码设置
二进制数据响应

对比示例

// 方式1:ModelAndView
public ModelAndView getUser() {ModelAndView mv = new ModelAndView();mv.addObject("user", userService.getCurrent());mv.setViewName("user/profile");return mv;
}// 方式2:字符串返回
public String showPage(Model model) {model.addAttribute("data", fetchData());return "page/view";
}// 方式3:Servlet API
public void download(HttpServletResponse response) {response.setHeader("Content-Disposition", "attachment;filename=file.txt");// 写入文件流
}

2. JSON交互实践

配置步骤

  1. 添加Jackson依赖
  2. 启用注解驱动
  3. 使用@ResponseBody

AJAX交互示例

$.ajax({type: "POST",url: "/api/users",contentType: "application/json",data: JSON.stringify({name: "John", age: 30}),success: function(data) {console.log("创建用户成功:", data);}
});
@PostMapping(consumes = "application/json")
@ResponseBody
public User createUser(@RequestBody User user) {return userService.save(user);
}

四、文件操作实战

1. 上传配置三要素

<!-- 配置文件解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="10485760" /> <!-- 10MB -->
</bean><!-- 静态资源放行 -->
<mvc:resources mapping="/uploads/**" location="/uploads/"/>

2. 上传下载核心代码

@PostMapping("/upload")
public String handleUpload(@RequestParam("file") MultipartFile file) {if (!file.isEmpty()) {String fileName = file.getOriginalFilename();file.transferTo(new File("/uploads/" + fileName));return "上传成功";}return "上传失败";
}@GetMapping("/download")
public void downloadFile(HttpServletResponse response) {File file = new File("/uploads/report.pdf");response.setHeader("Content-Disposition", "attachment; filename=report.pdf");Files.copy(file.toPath(), response.getOutputStream());
}

五、异常处理大师课

1. 异常处理金字塔

       ┌──────────────┐│   Controller │└──────┬───────┘↓┌──────────────┐│    Service   │└──────┬───────┘↓┌──────────────┐│     DAO      │└──────┬───────┘↓┌──────────────┐│    异常处理器  │└──────────────┘

2. 全局异常处理方案

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(SysException.class)public ResponseEntity<String> handleCustomException(SysException ex) {return ResponseEntity.status(500).body("系统异常: " + ex.getMessage());}@ExceptionHandler(Exception.class)public ModelAndView handleAllException(Exception ex) {ModelAndView mv = new ModelAndView("error/500");mv.addObject("errorMsg", "系统繁忙,请稍后再试");return mv;}
}

异常处理对比

处理方式优点缺点
局部处理1. 精准控制特定方法的异常处理逻辑
2. 处理逻辑与业务代码高度相关
1. 代码重复率高
2. 不利于统一异常格式
3. 维护成本随方法数量增加而上升
全局处理1. 统一管理所有异常
2. 减少重复代码
3. 便于维护异常处理策略
1. 需要合理设计异常体系
2. 对特定场景处理不够灵活
Servlet API1. 直接控制HTTP响应
2. 完全掌控响应细节
3. 无需框架额外支持
1. 破坏MVC分层结构
2. 与Spring解耦思想冲突
3. 测试维护困难

总结

  • 请求映射:合理使用多级路径规划API结构
  • 参数绑定:善用Spring的智能绑定机制
  • 响应处理:根据场景选择最佳响应方式
  • 文件操作:注意安全性和性能优化
  • 异常处理:建立统一的异常管理体系

性能优化小贴士

  • 使用@ResponseBody替代JSP视图
  • 开启GZIP压缩减少数据传输量
  • 对文件上传限制大小和类型
  • 使用异步处理耗时操作

通过掌握这些核心技巧,您将能够构建出高效、健壮的Spring MVC应用系统。

http://www.dtcms.com/wzjs/826989.html

相关文章:

  • 常州低价网站建设公司渝北集团网站建设
  • 大厂县城乡建设局网站个人网站cms
  • 广州seo技术优化网站seo网站页面模板
  • 江西app网站建设上海市建设工程安全质量监督总站网站
  • 网站设计制作哪家好搜索引擎营销策略有哪些
  • 永清住房和城乡建设部网站搜索排名优化策划
  • 连云港网站建设推广萍乡网站设计公司
  • html下载网站模板百度提交收录入口
  • 建网站怎么备案做网站的好处和坏处
  • 网络宣传网站建设建站wordpress邮件系统
  • 湘潭做网站广告的公司张家口远大建设集团网站
  • 网站建设手稿爱站网关键词挖掘
  • 怎么才能建立网站同一个域名可以做几个网站吗
  • 北京网页制作专业服务seo排名推广
  • 网站建设与管理代码题广州自助建站模板
  • 网站更名策划方案游戏网站建设平台
  • 怎么做网站导航外链建站网站关键词优化
  • 有没有教做健身餐的网站重庆皇华建设集团有限公司网站
  • 惠州电商网站建设公司网站建设服务费怎么做账
  • 公司网站建设电话邯郸网站建设渠道
  • 网站开发目标开题报告网上服务大厅登录入口
  • 珠海做网站开发成都cms建站
  • 一个网站建设的流程网络营销师培训课程
  • 网站下面版权代码网络设计的目的
  • 免费建站网站黄金网站简述企业建设网站的必要性
  • o2o网站建设新闻湖北网络营销推广怎么做
  • 服务器 空间 虚拟主机 网站需要襄阳做公司网站的软件公司
  • 织梦大气婚纱影楼网站源码 dedecms摄影工作室网站模板网站如何被收录情况
  • 毕设做网站可以用模板吗网站建设可研
  • 微信浏览为网站的缓存怎么清理企业网络搭建及应用实验报告