欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

项目第二天

时间:2023-07-08
第二天(—2022/2/7—) 编写Service层

@Servicepublic class UserService { @Autowired UserMapper userMapper; public List doLogin(User user){ return userMapper.selectByAccount(user); }}

编写Controller层

@Controller@SessionAttributes(value = {"hasUser"},types = {User.class})public class UserController { @Autowired UserService userService; @RequestMapping(value = "/login",method = RequestMethod.POST) public String doLogin(User user, Model model){ List users = userService.doLogin(user); if (!users.isEmpty() && users.size()<2){ for (User user1 : users) { System.out.println(user1); if (user1.getUserPassword().equals(user.getUserPassword())){ model.addAttribute("hasUser","true"); return "index"; } } } return "fail"; } @RequestMapping(value = "toLogin") public String toLoginPage(Model model){ model.addAttribute("hasUser","false"); return "login"; }}

问题:ioc找不到Controller,因为没有service可以注入
进行测试

@Test public void test02(){ ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper mapper = ioc.getBean(UserMapper.class); User user1 = new User(null,"",123456,"123456","男",""); List users = mapper.selectByAccount(user1); for (User user : users) { System.out.println(user.toString()); } UserService bean = ioc.getBean(UserService.class); System.out.println(bean); UserController bean1 = ioc.getBean(UserController.class); System.out.println(bean1); }

发现service已经注册到容器中,而controller没有注册
检查配置文件,applicationContext文件扫描了除controller以外所有包,springmvc-servlet.xml只扫描了controller包,而且两个配置文件都加载了
修改:将applicationContext.xml包扫描改为全部,发现测试可以输出controller,进行项目部署
问题:依旧报controller没有的错
解决:在web.xml文件的启动ioc容器下方加入

org.springframework.web.context.ContextLoaderListener

不配置ContextLoaderListener的话,spring默认去这个目录加载/WEB-INF/applicationContext.xml,这也可能是导致之前没有注册controller的错,因为我们的controller是写在springmvc-servlet.xml中的,没加载springmvc-servlet.xml当然没有了,一个下午吃了一个教训。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。