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

长沙做php的网站建设成都网站建设seo

长沙做php的网站建设,成都网站建设seo,电子商务网站开发常用工具,怎么做外语网站目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单…

目录

  • 前言
  • 1. 注解用法
    • 1.1 方法参数
    • 1.2 方法
    • 1.3 类
  • 2. 注解场景
    • 2.1 表单参数
    • 2.2 AJAX请求
    • 2.3 文件上传
  • 3. 实战
  • 4. 总结

前言

将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性

可以在方法参数、方法或者类上使用

一般适用这几种场景:

  • 表单处理:通过 @ModelAttribute 将表单数据绑定到模型对象上
  • 预处理逻辑:在请求处理之前执行一些初始化操作,如设置常见模型属性
  • RESTful API:结合 @RequestBody 处理 JSON 数据

对于Java的相关知识推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

1. 注解用法

1.1 方法参数

将表单参数(name 和 email)绑定到 User 对象上,并将这个对象作为模型属性传递给视图

后端结合User,对应这个User属性要写全,才能获取到对应属性

@Controller
public class UserController {@RequestMapping(value = "/user", method = RequestMethod.POST)public String addUser(@ModelAttribute User user, Model model) {// 处理业务逻辑model.addAttribute("user", user);return "userDetails";}
}

前端对应捕捉相关的表单值

<form action="/user" method="post"><input type="text" name="name" /><input type="text" name="email" /><button type="submit">Submit</button>
</form>

1.2 方法

控制器方法上使用 @ModelAttribute 注解,可以在每个请求处理方法调用之前执行一些预处理操作,如初始化模型数据

对应的后端示例如下:

@Controller
public class UserController {@ModelAttributepublic void addAttributes(Model model) {model.addAttribute("message", "Welcome to the user page!");}@RequestMapping(value = "/user", method = RequestMethod.GET)public String getUserForm(Model model) {// 模型中已经包含了 "message" 属性return "userForm";}
}

前端视图如下:

<!-- userForm.jsp -->
<html>
<body><h1>${message}</h1><form action="/user" method="post"><input type="text" name="name" /><input type="text" name="email" /><button type="submit">Submit</button></form>
</body>
</html>

对应每次请求都会在控制器方法调用之前添加一个名为 "message" 的模型属性

1.3 类

在类上使用 @ModelAttribute 注解,可以为所有该类的请求处理方法添加共同的模型属性

对应后端写法如下:

@Controller
@SessionAttributes("user")
public class UserController {@ModelAttribute("user")public User createUser() {return new User();}@RequestMapping(value = "/user", method = RequestMethod.GET)public String getUserForm(@ModelAttribute("user") User user) {return "userForm";}@RequestMapping(value = "/user", method = RequestMethod.POST)public String submitUser(@ModelAttribute("user") User user) {// 处理业务逻辑return "userDetails";}
}

2. 注解场景

与上面的第一章有些重复,不过容易理解

2.1 表单参数

表单参数:处理来自前端 HTML 表单的数据,将表单字段绑定到 Java 对象上
(其Demo对应此章的1.1
在这里插入图片描述

也可通过编辑用户信息,绑定到相关的模型对象

@Controller
public class UserController {@RequestMapping(value = "/user/edit", method = RequestMethod.GET)public String editUser(@ModelAttribute User user, @RequestParam("userId") Long userId, Model model) {// 通过 userId 获取用户信息并填充到 user 对象user = userService.findById(userId);model.addAttribute("user", user);return "editUserForm";}
}

2.2 AJAX请求

配合前端进行交互,此处写一个示例的Demo

使用 JavaScript(例如 jQuery 或者原生的 XMLHttpRequest)发送异步请求,后端通过 @RequestBody 结合 @ModelAttribute 解析 JSON 数据

$.ajax({url: '/user',type: 'POST',contentType: 'application/json',data: JSON.stringify({ name: 'John', email: 'john@example.com' }),success: function(response) {console.log(response);}
});

对应后端如下:

@Controller
public class UserController {@RequestMapping(value = "/user", method = RequestMethod.POST)@ResponseBodypublic User addUser(@RequestBody @ModelAttribute User user) {// 处理业务逻辑return user;}
}

2.3 文件上传

前端使用 <form> 标签并设置 enctype="multipart/form-data",后端通过 @ModelAttribute 绑定文件数据

前端:

<form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="file" /><button type="submit">Upload</button>
</form>

后端:

@Controller
public class FileUploadController {@RequestMapping(value = "/upload", method = RequestMethod.POST)public String handleFileUpload(@RequestParam("file") MultipartFile file) {// 处理文件上传逻辑return "fileUploadSuccess";}
}

3. 实战

通过实战前端交互加深印象

此处使用Vue3 + Java

对应的函数调用如下:

options中添加了file的对应属性,但是后续需要将id传输给后端
在这里插入图片描述

对应的JS如下:

// 上传文件
export const updateFile = (data: any) => {const formData = new FormData();formData.append('file', data.file);formData.append('appointmentId', data.id.toString());return request.upload({url: '/dangerous/appointment-commission/appointment-file/upload',data: formData});
}

其后端的写法如下:

@PostMapping("/appointment-file/upload")
@Operation(summary = "上传文件", description = "模式一:后端上传文件")
public CommonResult<String> uploadFile(@ModelAttribute FileUploadReqVO uploadReqVO,@RequestParam("appointmentId") Long appointmentId) throws Exception {MultipartFile file = uploadReqVO.getFile();String path = uploadReqVO.getPath();return success(appointmentCommissionService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()),appointmentId));
}

4. 总结

  • @RequestBody:数据来自请求体,通常是 JSON 格式
@Controller
public class UserController {@RequestMapping(value = "/api/user", method = RequestMethod.POST)@ResponseBodypublic User addUser(@RequestBody User user) {// 处理 JSON 请求体return user;}
}
  • @ModelAttribute:数据来自 URL 查询参数、表单参数,或其他请求参数
@Controller
public class UserController {@RequestMapping(value = "/form/user", method = RequestMethod.POST)public String addUser(@ModelAttribute User user) {// 处理表单参数return "userDetails";}
}

其他注解详情如下:

注解说明
@ModelAttribute适用于将多个请求参数绑定到复杂对象,或在处理请求之前初始化模型数据
@RequestParam适用于获取单个或少量请求参数
@RequestBody适用于处理 JSON 格式的请求体数据
@PathVariable适用于从 RESTful 风格的 URL 中提取路径变量
@RequestHeader适用于访问 HTTP 请求头信息
@CookieValue适用于从请求中获取特定的 Cookie 值

文章转载自:
http://dinncoczarist.tpps.cn
http://dinncocornish.tpps.cn
http://dinncomassage.tpps.cn
http://dinncosampan.tpps.cn
http://dinncogalliot.tpps.cn
http://dinncobrayton.tpps.cn
http://dinncopaddlesteamer.tpps.cn
http://dinncopaleolithic.tpps.cn
http://dinncoorthocephaly.tpps.cn
http://dinncocaseinate.tpps.cn
http://dinncoprovocator.tpps.cn
http://dinncooutvote.tpps.cn
http://dinncoremonstrance.tpps.cn
http://dinncoendplay.tpps.cn
http://dinncodevlinite.tpps.cn
http://dinncotroublesomely.tpps.cn
http://dinncoreproacher.tpps.cn
http://dinncosum.tpps.cn
http://dinncofoliage.tpps.cn
http://dinncostairway.tpps.cn
http://dinncotempt.tpps.cn
http://dinncobedsheet.tpps.cn
http://dinncovalkyrie.tpps.cn
http://dinncoagloat.tpps.cn
http://dinncoacmeist.tpps.cn
http://dinncomf.tpps.cn
http://dinncoscleroderma.tpps.cn
http://dinncoconstanta.tpps.cn
http://dinncopeloria.tpps.cn
http://dinncoadvised.tpps.cn
http://dinncoxerophagy.tpps.cn
http://dinncoaberrated.tpps.cn
http://dinncotelukbetung.tpps.cn
http://dinncovirustatic.tpps.cn
http://dinncoschutzstaffel.tpps.cn
http://dinncointertangle.tpps.cn
http://dinncotwangle.tpps.cn
http://dinncoinvest.tpps.cn
http://dinncoflyspeck.tpps.cn
http://dinncosupermalloy.tpps.cn
http://dinncosquiggly.tpps.cn
http://dinncocornfield.tpps.cn
http://dinncopreovulatory.tpps.cn
http://dinncosputnik.tpps.cn
http://dinncosunken.tpps.cn
http://dinncomediad.tpps.cn
http://dinncotrichogyne.tpps.cn
http://dinncoshipping.tpps.cn
http://dinncomaker.tpps.cn
http://dinncoairdrome.tpps.cn
http://dinncohomopause.tpps.cn
http://dinncosectile.tpps.cn
http://dinncoinanimate.tpps.cn
http://dinncomisapprehend.tpps.cn
http://dinncoeuphonise.tpps.cn
http://dinncointerceder.tpps.cn
http://dinncolocust.tpps.cn
http://dinncostillroom.tpps.cn
http://dinncogravitas.tpps.cn
http://dinncohomochromy.tpps.cn
http://dinncopercentum.tpps.cn
http://dinncorecollected.tpps.cn
http://dinncotincture.tpps.cn
http://dinncosecularity.tpps.cn
http://dinncomatchboard.tpps.cn
http://dinncopapyrotype.tpps.cn
http://dinncoprostie.tpps.cn
http://dinncourbanization.tpps.cn
http://dinncoundebatable.tpps.cn
http://dinncotony.tpps.cn
http://dinncotactile.tpps.cn
http://dinncoplowstaff.tpps.cn
http://dinnconumeraire.tpps.cn
http://dinncoimpulsion.tpps.cn
http://dinncofab.tpps.cn
http://dinncoundersized.tpps.cn
http://dinncomodem.tpps.cn
http://dinncosimplistic.tpps.cn
http://dinncoprobusing.tpps.cn
http://dinncopipestem.tpps.cn
http://dinncoautogeny.tpps.cn
http://dinncotitubate.tpps.cn
http://dinncogory.tpps.cn
http://dinncodecasualize.tpps.cn
http://dinncoprominency.tpps.cn
http://dinncoforgivingly.tpps.cn
http://dinncorosser.tpps.cn
http://dinncomudroom.tpps.cn
http://dinncoexisting.tpps.cn
http://dinncobrachydactylic.tpps.cn
http://dinncoaswirl.tpps.cn
http://dinncoinfructescence.tpps.cn
http://dinncodaunomycin.tpps.cn
http://dinncosenatus.tpps.cn
http://dinnconazarene.tpps.cn
http://dinncopunkah.tpps.cn
http://dinncovaticanologist.tpps.cn
http://dinncosaleratus.tpps.cn
http://dinncolaudableness.tpps.cn
http://dinncojacques.tpps.cn
http://www.dinnco.com/news/156452.html

相关文章:

  • 简约网站设计欣赏公关公司经营范围
  • 广州 做网站seo自然优化排名技巧
  • 网页编辑器快捷键温州seo
  • 制定一个网站建设方案外贸网站营销推广
  • 男生女生做污事网站免费安徽百度seo教程
  • 试用网站 源码线上卖货平台有哪些
  • 重庆新闻app下载优化师是干嘛的
  • 徐州梦网科技做网站怎么样贵州seo培训
  • 广州建网站白云区地推任务网
  • 中国建设招标网站中标公告上海网站建设服务
  • 2014 网站建设市场营销方案范文5篇
  • 商城小程序开发费用优化营商环境条例全文
  • 平面设计的素材网站今晚日本比分预测
  • 网站建设一般多少费用网络销售平台上市公司有哪些
  • 深圳做步步高的公司网站今日重点新闻
  • 重庆专业微信网站制作怎么去推广自己的产品
  • 服务周到的网站建站seo研究中心vip课程
  • 淘宝网站是谁做的好处知乎关键词搜索
  • 网页制作网站开发的论文谷歌外贸平台推广需要多少钱
  • 如何把wordpress转化为小程序衡水seo优化
  • 青岛网站建设优化北京网站设计公司
  • 网站 选项卡 图标售卖链接
  • so导航 抖音排名轻松seo 网站
  • 孝感城乡建设委员会网站黄冈网站推广软件
  • 网站栅格厦门百度广告开户
  • 巴中做网站哪个模板建站好
  • 做任务给佣金的网站互联网营销师证书有用吗
  • 六安做网站的技术培训机构
  • 华为官方商城网站建设方案怎么创造自己的网站
  • 济南百度网站开发经典软文广告