当前位置:首页 > 后端开发 > 正文

Java如何正确接收方法参数

在Java中接收参数有多种方式:命令行程序通过main方法的String[] args获取参数;Web应用使用HttpServletRequest的getParameter()方法或Spring MVC的@RequestParam注解;方法调用时直接传递参数给形参,不同场景采用对应机制实现参数传递。

在Java中,接收参数是开发中的核心操作,涉及Web交互、命令行工具及API开发等场景,以下是详细实现方案:


Java Web应用接收参数(Servlet)

GET请求参数(URL传参)

protected void doGet(HttpServletRequest request, HttpServletResponse response) { String username = request.getParameter("user"); // 获取单个参数 String[] hobbies = request.getParameterValues("hobby"); // 获取多选框参数 System.out.println("用户:" + username); // 输出:用户:John }

示例URL:http://localhost:8080/app?user=John&hobby=read&hobby=music

POST请求参数(表单提交)

protected void doPost(HttpServletRequest request, HttpServletResponse response) { String email = request.getParameter("email"); String password = request.getParameter("pwd"); // 处理登录逻辑... }

表单示例

<form action="/login" method="post"> <input type="text" name="email"> <input type="password" name="pwd"> </form>


Spring Boot接收参数(推荐框架)

接收URL参数(@RequestParam)

Java如何正确接收方法参数 第1张

访问路径:/user?id=101&role=admin

路径参数(@PathVariable)

@GetMapping("/product/{id}/{category}") public String getProduct(@PathVariable int id, @PathVariable String category) { return "产品ID:" + id + ",分类:" + category; }

访问路径:/product/305/electronics

接收JSON请求体(@RequestBody)

Java如何正确接收方法参数 第2张

请求示例(JSON)

{"name": "Alice", "age": 28, "email": "alice@example.com"}

接收表单数据(无注解自动绑定)

@PostMapping("/register") public String register(User user) { // 自动匹配表单字段到User对象属性 return "注册用户:" + user.getName(); }


命令行参数(main方法)

public static void main(String[] args) { if (args.length > 0) { System.out.println("第一个参数:" + args[0]); // 输出:hello System.out.println("第二个参数:" + args[1]); // 输出:world } }

运行命令

java MyApp hello world


安全注意事项

  1. 防载入攻破

    • 使用预编译语句(PreparedStatement)处理SQL参数。
    • 对用户输入进行过滤:String safeInput = input.replace("<", "&lt;");
  2. 参数校验

    Spring Boot中使用@Valid注解:

    Java如何正确接收方法参数 第3张

    public class User { @NotBlank(message = "姓名不能为空") private String name; @Email(message = "邮箱格式错误") private String email; } @PostMapping("/save") public String saveUser(@Valid @RequestBody User user) { ... }

  3. 敏感参数处理

    • 密码等敏感数据通过POST请求传输,避免URL暴露。
    • 使用HTTPS加密传输。
    • 常见问题解决

      • 乱码问题

        在Servlet中添加:

        request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8");
      • 参数缺失

        Spring中设置@RequestParam(required = false)允许可选参数。

      • 多层级对象接收

        Spring支持嵌套对象绑定(如user.address.city)。


      • 基础场景:Servlet通过request.getParameter()获取参数。
      • 企业级开发:Spring Boot使用注解(@RequestParam, @PathVariable, @RequestBody)高效处理参数。
      • 安全优先:始终校验和过滤用户输入,避免安全漏洞。
      • 命令行工具:通过main(String[] args)接收启动参数。

      引用说明参考Oracle官方文档Servlet参数处理、Spring Framework文档Web参数绑定,并结合OWASP安全标准编写。

0