初学SpringBoot,使用post请求String parameter 'username' is not present

发布于 2022-09-12 13:48:01 字数 3330 浏览 16 评论 0

Application.java

package com.resume;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan("com.resume")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
 }
}

LoginController.java

package com.resume.server;
import com.resume.bean.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jdk.internal.org.objectweb.asm.tree.analysis.Value;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;
@RestController
public class LoginController {
    @RequestMapping("/helloworld")
    public String show() {
        return "Hello world";
 }
    @ResponseBody
 @RequestMapping(value="/common/fgadmin/login",method=RequestMethod.POST,produces="application/json;charset=UTF-8")
    public JSONObject getByJSON( @RequestParam(value = "username",required = false) String username,
 @RequestParam(value = "password",required = false) String password,HttpServletResponse response) {
        JSONObject result=new JSONObject();
 if(username.equals("abc")&&password.equals("123")) {
            Cookie cookie = new Cookie("login","true");
 response.addCookie(cookie);
 result.element("message","success");
 result.element("code","200");
 }
        else {
            result.element("message","fail");
 result.element("code","400");
 }
        return result;
 }
}

请求接口http://127.0.0.1:8033/common/fgadmin/login

image

然后我按照网络的答案

value = "username",required = false
value = "password",required = false

依然无法请求

——————————————————————————

改成新的方法

package com.resume.server;
import com.alibaba.fastjson.JSONObject;
import com.resume.bean.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LoginController {
    @RequestMapping("/helloworld")
    public String show() {
        return "Hello world";
 }
    @ResponseBody
 @PostMapping("/common/fgadmin/login")
    public String getInteger(@RequestBody JSONObject jsonObject){
        String code=jsonObject.get("code").toString();
 String a=jsonObject.get("id").toString();
 Integer id=Integer.parseInt(a);
 return "数字:"+id+"字符串:"+code;
 }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海螺姑娘 2022-09-19 13:48:01

好好看看教程和文档,Json 的 body,用 @RequestBody + 类接
你这里 @RequestBody JsonObject request 放参数里就行了
顺便一说,@RequestMapping里的那个produce字段可以去掉
顺便一说,JsonObject这套API拿来玩玩可以,真用来做业务是要命的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文