我对Spring框架是完全陌生的。我有一个任务是在Spring上制作电话簿应用程序。我需要登记和授权,还有我的电话簿。我有两个控制器,第一个是控制授权和注册的UserController
@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";
}
}
@Controller
public class ContactController {
private ContactService contactService;
@Autowired(required = true)
@Qualifier(value = "contactService")
public void setContactService(ContactService contactService) {
this.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(value = "admin/add", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact") Contact contact) {
if (contact.getId() == 0) {
this.contactService.addContact(contact);
} else {
this.contactService.updateContact(contact);
}
return "redirect:/admin";
}
@RequestMapping("/remove/{id}")
public String removeContact(@PathVariable("id") int id) {
this.contactService.removeContact(id);
return "redirect:/admin";
}
@RequestMapping("/edit/{id}")
public String editBook(@PathVariable("id") int id, Model model) {
model.addAttribute("contact", this.contactService.getContactById(id));
model.addAttribute("listContacts", this.contactService.listContacts());
return "admin";
}
@RequestMapping("contactData/{id}")
public String contactData(@PathVariable("id") int id, Model model) {
model.addAttribute("contact", this.contactService.getContactById(id));
return "contactData";
}
当我尝试进行身份验证或注册时。新用户我有这样的错误:
NestedServletException:请求处理失败;嵌套异常是java.lang.IllegalStateException:映射到HTTP路径“HTTP://localhost:8087/admin”的处理程序方法不明确:{public java.lang.string kz.adilka.springsecurity.app.controller.usercontroller.admin(org.springframework.ui.model),public java.lang.string
它说,我有问题与映射管理页。但对我来说似乎还可以,或者我错过了smth
原因是您没有为控制器设置控制器值,并且它们具有相同的RequestMapping
方法
@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";
}
}
问题内容: 如何使用TypeScript定义我的控制器。到目前为止,它在angular js中,但是我想更改为type script。以便可以快速检索数据。 问题答案: 我决定通过工作示例添加另一个答案。这是非常简单的版本,但应该显示所有的基本如何向我们 和 。 有一个工作的家伙 这将是我们扮演服务器的角色。 这将是我们的启动模块: 所以以后我们可以使用module 。这就是我们的index.ht
源代码控制系统(又称版本控制系统)让你高效地管理工程。他们对一个人是很有用的,对一个团队是至关重要的。它们追踪不同版本里的所有改变,以至于所有代码都未曾丢失,其含义可以归属于改变。有了源代码控制系统,一个人可以自信地写一些而半途而废的代码和调试的代码,因为你修改的代码被仔细地与提交的、官方的即将与团队共享或发布的代码分割开。 我挺晚才开始意识到源代码控制系统的好处,但现在即使是一个人的工程,我也不
我有下一个Rest控制器 我将Spring Security用于以下配置: 我想为我的控制器编写单元测试。我写了下一个测试,但是它们工作得不好: 当我开始测试时,我得到了状态404。如果在安全配置中删除@EnableGlobalmetodSecurity(prePostEnable=true),测试正在工作,但不工作@PreAuthorize。我有一些问题: 如果prespenabled=true
我一直在尝试将文件从rest客户端发送到我的spring控制器。在控制器中,我使用“@requestParam(“file”)MultipartFile file”从客户端获取文件,并使用REST服务注释进行注释,如下所示 我总是得到415媒体类型不支持。在上面的方法中,如果我不给多部分,它给我的结果是完成了,但不是多部分。 所以我可以知道如何发送文件到我的Spring控制器?
我试图通过AWS负载平衡器公开在kubernetes集群中运行的应用程序。我遵守了文件https://cloudyuga.guru/blog/cloud-controller-manager直到我在kubeadm中添加了云提供者=外部。conf文件。但这份文档是基于数字海洋云的,我正在从事AWS的工作,我很困惑是否需要运行任何部署。yaml文件以使处于挂起状态的吊舱运行,如果是,请提供链接,我现在
问题内容: 我写了一个过滤器函数,它将根据您传递的参数返回数据。我希望控制器具有相同的功能。是否可以在控制器中重用过滤器功能? 到目前为止,这是我尝试过的: 问题答案: 将 $ filter 注入控制器 然后,无论您想在哪里使用该过滤器,都可以像这样使用它: 如果要将参数传递给该过滤器,请使用单独的括号进行处理: 您要过滤的数组在哪里,并且是用于过滤的对象。