Java后端如何获取前端下拉框选中值并进行数据库查询
Java后端获取前端下拉框选中值的常见实现方式
前端下拉框选中值最终是通过HTTP请求传递给后端,以下是几种主流的实现方案:
1. 表单参数提交
适用于传统同步表单提交、form-data格式的异步请求场景:
- 前端需要给select标签设置
name属性,例:<select name="country">,表单提交时会自动将选中值作为country参数携带。 - 后端获取方式:
- 原生Servlet场景:调用
HttpServletRequest的getParameter方法即可获取,代码示例:String country = request.getParameter("country"); - SpringMVC/SpringBoot场景:直接通过参数绑定接收,参数名和前端
name属性值一致即可自动注入,也可通过@RequestParam显式指定绑定的参数名。
Spring代码示例:
@PostMapping("/queryData") public List<Map> queryByCountry(@RequestParam("country") String selectedCountry) { // 直接使用selectedCountry执行数据库检索逻辑 return countryService.queryByCountryName(selectedCountry); } - 原生Servlet场景:调用
2. JSON请求体提交
适用于前后端分离的异步请求场景,是当前最常用的交互方式:
- 前端将下拉框选中值放入JSON请求体中传输,例:
{"country": "中国"},请求头设置content-type: application/json。 - 后端获取方式:
SpringBoot中通过@RequestBody注解绑定参数,可自定义DTO类接收或者直接用Map接收:- 自定义DTO接收(推荐,方便参数校验)
// 定义参数接收实体 @Data public class QueryReqDTO { private String country; } // Controller接口 @PostMapping("/queryData") public List<Map> queryByCountry(@RequestBody QueryReqDTO req) { String selectedCountry = req.getCountry(); // 执行数据库检索 }- Map快速接收
@PostMapping("/queryData") public List<Map> queryByCountry(@RequestBody Map<String, Object> params) { String selectedCountry = (String) params.get("country"); // 执行数据库检索 }
3. URL参数提交
适用于GET请求场景,前端将选中值拼接到URL中:
- 查询参数格式:请求URL示例为
GET /queryData?country=中国,后端接收方式和表单参数提交一致,用@RequestParam绑定即可。 - RESTful路径参数格式:请求URL示例为
GET /country/中国/queryData,后端用@PathVariable绑定路径参数:@GetMapping("/country/{country}/queryData") public List<Map> queryByCountry(@PathVariable("country") String selectedCountry) { // 执行数据库检索 }
注意事项
- 前后端需提前约定好参数名、请求的content-type类型,避免参数名不匹配、格式不兼容导致后端无法取值。
- 拿到参数后建议先做非空、合法性校验,避免无效参数传入数据库,同时查询时使用ORM框架的预编译能力,避免SQL注入风险。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

