JavaWeb学习——SSM框架之SpringMVC使用

JavaWeb学习——SSM框架之SpringMVC使用

1.学习内容

对SpringMVC进行了详细的学习,SpringMVC的请求与响应、拦截器、异常处理。

SpringMVC的数据响应方式
页面跳转
1.直接返回字符串
2.通过ModelAndView对象返回

回写数据
1.直接返回字符串
2.返回对象或集合

SpringMVC可以接收的参数:基本类型参数、POJO类型参数、数组类型参数、集合类型参数。

Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。

Spring异常处理:
1使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
2.实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器

2.成果展示

Spring自动完成参数注入,转发数据到其他页面

 @RequestMapping("/login")
    public String login(String loginName, String loginPassword, String checkCode, HttpSession session, Model model){

        //获取生成验证码
        String checkCode_session = (String) session.getAttribute("checkCode_session");
        //删除Session储存的验证码
        session.removeAttribute("checkCode_session");
        if (checkCode_session != null && checkCode_session.equalsIgnoreCase(checkCode)) {

            //调用login方法
            UserService service = new UserServiceImpl();
            User user = service.user_login(loginName,loginPassword);

            //调用findbyName方法将信息传入reg_success.jsp
            User userByName = service.findUserByName(loginName);

            //判断user
            if (user == null) {
                //登录失败
                //储存提示信息到request
                model.addAttribute("longin_error", "用户名或密码错误!");
                //转发到登陆页面
                return "/user/login.jsp";
                //request.getRequestDispatcher("/login.jsp").forward(request, response);
            } else {
                //登录成功
                //储存用户信息
                session.setAttribute("user",loginName);
                session.setAttribute("users",userByName);
                //重定向到index.jsp页面
                return "redirect:/index.jsp";
                //response.sendRedirect(request.getContextPath() + "/index.jsp");

            }
        } else {
            //验证码不一致
            //储存信息到request
            model.addAttribute("cc_error", "验证码错误!");
            //转发到登录页面
            return "/user/login.jsp";
            //request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }

完成用户与订单的多表查询
Service层

    @Override
    public List<User> findAll() {

        //调用Dao完成查询
        List<User> userList = dao.findAll();

        //封装userList中的每一个user的food数据
        for (User user : userList) {
            //获得user的id
            int id = user.getId();
            //将user的id作为参数,查询对应food的集合数据
            List<Food> foods =dao.findFoodsById(id);
            user.setFoods(foods);
        }

        return userList;
    }

dao层

    public List<Food> findFoodsById(int id) {
        //定义sql
        String sql = "select * from user_food uf,food f where uf.foodId=f.id and uf.userId=?";
        return template.query(sql,new BeanPropertyRowMapper<Food>(Food.class),id);
    }

视图层

<%--jstl简化java书写遍历--%>
        <c:forEach items="${users}" var="user" varStatus="s">
            <tr>
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.gender}</td>
                <td>${user.age}</td>
                <td>${user.tel}</td>
                <td>${user.password}</td>
                <td>
                    <c:forEach items="${user.foods}" var="food">
                        &nbsp;&nbsp;${food.foodName}
                    </c:forEach>
                </td>
                <td>
                    <a class="cha" href="${pageContext.request.contextPath}/manger/findUserById?id=${user.id}">修改</a>&nbsp;&nbsp;
                    <a class="dle" href="javascript:deleteUser(${user.id})">删除</a>
                </td>
            </tr>
        </c:forEach>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值