Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringJava如何使用控制器_Spring_Spring Mvc - Fatal编程技术网

SpringJava如何使用控制器

SpringJava如何使用控制器,spring,spring-mvc,Spring,Spring Mvc,我对Spring框架一无所知。我的任务是在spring上制作电话簿应用程序。我需要注册和授权,还有我的电话簿。我有两个控制器,第一个用户控制器控制授权和注册 @Controller public class UserController { @Autowired private UserService userService; @Autowired private SecurityService securityService; @Autowired private UserValidator

我对Spring框架一无所知。我的任务是在spring上制作电话簿应用程序。我需要注册和授权,还有我的电话簿。我有两个控制器,第一个用户控制器控制授权和注册

@Controller
public class UserController {
@Autowired
private UserService userService;
@Autowired
private SecurityService securityService;
@Autowired
private UserValidator userValidator;

@RequestMapping(value = "/registration", method = RequestMethod.GET)
public String registration(Model model) {
    model.addAttribute("userForm", new User());
    return "registration";
}

@RequestMapping(value = "/registration", method = RequestMethod.POST)
public String registration(@ModelAttribute("userForm")
                                       User userForm, BindingResult bindingResult, Model model) {
    userValidator.validate(userForm, bindingResult);

    if (bindingResult.hasErrors()) {
        return "registration";
    }

    userService.save(userForm);

    securityService.autoLogin(userForm.getUsername(), userForm.getConfirmPassword());

    return "redirect:/welcome";
}

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(Model model, String error, String logout) {
    if(error!=null) {
        model.addAttribute("error", "Username or password is incorrect.");
    }

    if (logout!=null) {
        model.addAttribute("message", "logged out successfully");
    }

    return "login";
}

@RequestMapping(value = {"/", "/welcome"}, method = RequestMethod.GET)
public  String welcome(Model model) {
    return "welcome";
}

@RequestMapping(value = "/admin", method = RequestMethod.GET)
public String admin(Model model) {
    return "admin";
}
}
和ContactController,用于控制我的功能(添加、删除、编辑和显示联系人)

}

当我尝试验证或注册时。新用户我有这样的错误:

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.IllegalStateException:为HTTP路径“”映射的不明确处理程序方法:{public java.lang.String kz.adilka.springsecurity.app.controller.UserController.admin(org.springframework.ui.Model),public java.lang.String kz.adilka.springsecurity.app.controller.ContactController.listContactsForAdmin(org.springframework.ui.Model)}


它说我的映射管理页面有问题。但对我来说似乎没问题,或者可能我错过了smth

原因是你没有为你的控制器设置控制器值,并且它们有相同的
请求映射
方法

@Controller // do not have identifier here
public class UserController {
      @Autowired
      private UserService userService;
      @Autowired
      private SecurityService securityService;
      @Autowired
      private UserValidator userValidator;


     @RequestMapping(value = "/admin", method = RequestMethod.GET)
     public String admin(Model model) {
       return "admin";
     }
}


@Controller // do not have identifier here
public class ContactController {

  private ContactService contactService;

  @RequestMapping(value = {"admin", "welcome"}, 
          method = RequestMethod.GET)
  public String listContactsForAdmin(Model model) {
    model.addAttribute("contact", new Contact());
    model.addAttribute("listContacts", 
    this.contactService.listContacts());
    return "admin";
  }

}
一种可能的解决方案是为每个控制器方法设置
RequestMapping

   @Controller(value = "user")
   public class UserController {
   @Autowired
   private UserService userService;
   @Autowired
   private SecurityService securityService;
   @Autowired
   private UserValidator userValidator;


   @RequestMapping(value = "/admin", method = RequestMethod.GET)
   public String admin(Model model) {
      return "admin";
   }
}


@Controller(value = "contact")
public class ContactController {

private ContactService contactService;

@RequestMapping(value = {"admin", "welcome"}, method = RequestMethod.GET)
public String listContactsForAdmin(Model model) {
    model.addAttribute("contact", new Contact());
    model.addAttribute("listContacts", this.contactService.listContacts());
    return "admin";
}

}

您得到的消息非常清楚引发异常的原因。您有两个方法映射在同一路径上,Spring无法确定请求应该从
DispatcherServlet
转发到其中的哪一个。这两个方法都有资格处理它。@Adil为什么要接受然后取消它?@lucumt sry misclick
   @Controller(value = "user")
   public class UserController {
   @Autowired
   private UserService userService;
   @Autowired
   private SecurityService securityService;
   @Autowired
   private UserValidator userValidator;


   @RequestMapping(value = "/admin", method = RequestMethod.GET)
   public String admin(Model model) {
      return "admin";
   }
}


@Controller(value = "contact")
public class ContactController {

private ContactService contactService;

@RequestMapping(value = {"admin", "welcome"}, method = RequestMethod.GET)
public String listContactsForAdmin(Model model) {
    model.addAttribute("contact", new Contact());
    model.addAttribute("listContacts", this.contactService.listContacts());
    return "admin";
}

}