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