项目第二天

第二天(—2022/2/7—)

编写Service层

@Service
public class UserService {
    @Autowired
    UserMapper userMapper;

    /**
     * 登录
     */
    public List<User> 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<User> 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<User> 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容器下方加入

 <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值