【问题标题】:Passing variables from frontend to backend将变量从前端传递到后端
【发布时间】:2018-04-14 09:34:23
【问题描述】:

我正在开发一个使用 Java 完成后端(使用 Spring 托管)和由 Javascript 管理前端的网站。现在,我已经设法使用 RestController 将代码从后端发送到前端,但我无法将数据从前端发送到后端。更具体地说,我正在尝试创建一个带有后端验证的登录表单。

HTML 表单代码:

<form ng-submit="login">
  <input type="text" ng-model="form.username" placeholder="username">
  <input type="password" ng-model="form.password" placeholder="password">
  <input type="submit" value="Login">
</form>

Javascript登录代码:

function auth($scope, $http, AppSettings, $state) {
  'ngInject';
  $scope.form = {};

  $scope.login = () => {
    $http({
      method: 'POST',
      url: AppSettings.getApiUrl('/login'),
      data: {
        user: $scope.form.username,
        password: $scope.form.password,
      },
      // data: {}
    }).then(response => {
      if (response) {
        console.log(response.data);
        localStorage.setItem('token', response.data.token);

        $state.go('main');
      }
    }).catch(error => {
      console.log(error);
    });
  };
}

Java 登录处理程序:

@RestController
public class LoginHandler  {

    private static final Logger log = LoggerFactory.getLogger(LoginHandler.class);


    @RequestMapping("/login")
    public void getLoginInfo(@RequestParam Map<String,String> requestParams) {
        RestTemplate restTemplate = new RestTemplate();
        User user = restTemplate.getForObject("http://localhost:3003/auth", User.class);
        log.info(user.toString());

    }

}

【问题讨论】:

    标签: javascript java angularjs spring


    【解决方案1】:

    当您使用AngularJS将数据发送到后端并使用data键设置参数时,信息实际上是在请求体中发送的,而不是在请求参数中。

    因此,在 Spring MVC 控制器上,您宁愿使用 @RequestBody 将值分配回 Map&lt;String, String&gt;。更改此行:

    public void getLoginInfo(@RequestParam Map<String,String> requestParams) {
    

    到这里:

    public void getLoginInfo(@RequestBody Map<String,String> requestParams) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      相关资源
      最近更新 更多