gpt4 book ai didi

java - 同一 URL 的 POST 和 GET - Controller - Spring

转载 作者:可可西里 更新时间:2023-11-01 16:08:52 25 4
gpt4 key购买 nike

我有这个 Controller :

@Controller
public class HelloWorldController {

@RequestMapping("/hello.html")
public ModelAndView helloWorld() {

String message = "Hello World, Spring 3.0!";
return new ModelAndView("hello", "message", message);
}

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String viewLogin(Map<String, Object> model) {
User user = new User();
model.put("userForm", user);
return "LoginForm";
}

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String doLogin(@Valid @ModelAttribute("userForm") User userForm,
BindingResult result, Map<String, Object> model) {

if (result.hasErrors()) {
return "login";
}

return "LoginSuccess";
}
}

对于同一个 url /login,我有 2 种具有不同 http 方法的方法所以当点击第一个 url 'localhost:8080/project_name/login' 时,第一个方法 GET 将被处理并将我重定向到 /LoginForm

因此根据我的理解,第二个方法处理程序将不会执行,因为对 /login 的请求始终使用 GET。

如果我的理解有误,请告诉我第二种方法如何执行,谢谢。

最佳答案

the request for /login is always with GET

我认为这是您感到困惑的地方。它是 GET,因为浏览器默认进行 GET 调用。如果您想唤起第二种方法,您可能需要编写自定义表单/JSP 页面或查看postman。将 HTTP 方法设置为 POST。

您还可以从命令行使用 curl:

$ curl -d "param1=value1&param2=value2" -X POST http://localhost:3000/data

如果您希望能够从浏览器本身进行 POST 调用,请检查这些浏览器加载项: firefox , chrome ,

如果您不喜欢浏览器中的扩展程序,请使用以下文本创建一个书签并使用它:

javascript:var%20my_params=prompt("Enter%20your%20parameters","var1=aaaa&var2=bbbbb");%20var%20Target_LINK=prompt("Enter%20destination",%20location.href);%20function%20post(path,%20params)%20{%20%20%20var%20xForm=%20document.createElement("form");%20%20%20xForm.setAttribute("method",%20"post");%20%20%20xForm.setAttribute("action",%20path);%20xForm.setAttribute("target",%20"_blank");%20%20%20for(var%20key%20in%20params)%20{%20%20%20if(params.hasOwnProperty(key))%20{%20%20%20%20%20%20%20%20var%20hiddenField%20=%20document.createElement("input");%20%20%20%20%20%20hiddenField.setAttribute("name",%20key);%20%20%20%20%20%20hiddenField.setAttribute("value",%20params[key]);%20%20%20%20%20%20%20%20%20xForm.appendChild(hiddenField);%20%20%20%20%20}%20%20%20}%20%20%20document.body.appendChild(xForm);%20%20xForm.submit();%20}%20%20%20parsed_params={};%20my_params.split("&").forEach(function(item)%20{var%20s%20=%20item.split("="),%20k=s[0],%20v=s1;%20parsed_params[k]%20=%20v;});%20post(Target_LINK,%20parsed_params);%20void(0);

关于java - 同一 URL 的 POST 和 GET - Controller - Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50425667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com