JAVA WEB:西蒙购物网 控制层代码及测试

一、控制层代码及测试

1、登录处理类(LoginServlet)

package net.yj.shop.servlet;
/**
 * 功能:登录处理类
 * 作者:余杰
 * 日期:2019年12月11日
 */

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.yj.shop.bean.User;
import net.yj.shop.service.UserService;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 设置请求对象的字符编码
        request.setCharacterEncoding("utf-8");
        // 获取会话对象
        HttpSession session = request.getSession();
        // 获取用户名
        String username = request.getParameter("username");
        // 获取密码
        String password = request.getParameter("password");
        // 定义用户服务对象
        UserService userService = new UserService();
        // 执行登录方法,返回用户实体
        User user = userService.login(username, password);
        // 判断用户登录是否成功
        if (user != null) {
            // 设置session属性
            session.setMaxInactiveInterval(5 * 60);
            session.setAttribute("username", username);
            session.removeAttribute("loginMsg");
            // 根据用户权限跳转到不同页面
            if (user.getPopedom() == 0) {
                System.out.println("用户登录成功,进入后台管理!");
                response.sendRedirect(request.getContextPath() + "/backend/management.jsp");
            } else if (user.getPopedom() == 1) {
                System.out.println("用户登录成功,进入前台显示类别!");
                response.sendRedirect(request.getContextPath() + "/showCategory");
            }
        } else {
            System.out.println("用户名或密码错误,用户登录失败!");
            // 设置session属性loginMsg
            session.setAttribute("loginMsg", "用户名或密码错误!");
            response.sendRedirect(request.getContextPath() + "/login.jsp");
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

启动服务,显示首页
在这里插入图片描述
由于我们没有编写登陆页面,所以浏览器找不到该页面,选择在地址栏localhost:8080/simonshop/后面输入 login?username=admin&password=12345后,地址跳转到后台管理员页面,我们没有编写该页面,所以依然报错
在这里插入图片描述
查看服务器控制台
在这里插入图片描述
控制台显示我们登录成功,且账户是管理员身份
现在修改参数:login?username=郑晓红&password=11111
在这里插入图片描述
地址跳转到普通用户界面,界面未编写
在这里插入图片描述
查看控制台
在这里插入图片描述
接下来测试错误账号密码:login?username=1&password=1
在这里插入图片描述
回车之后,跳转到了login.jsp页面
在这里插入图片描述
查看控制台,显示用户名或密码错误,测试完毕!
在这里插入图片描述

2、注销处理类(LogoutServlet)

package net.yj.shop.servlet;
/**
 * 功能:注销处理类
 * 作者:余杰
 * 日期:2019年12月11日
 */

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 让session失效
        request.getSession().invalidate();
        // 重定向到登录页面
        response.sendRedirect(request.getContextPath() + "/login.jsp");
        System.out.println("用户注销成功!");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

我们先登录用户
在这里插入图片描述
在这里插入图片描述
修改地址栏为:http://localhost:8080/simonshop/logout
**加粗样式**
回车之后可以看到我们跳转到了登录页面
在这里插入图片描述
查看控制台
在这里插入图片描述
显示用户注销成功!测试结束!

3、处理用户注册(RegisterServlet)

package net.yj.shop.servlet;
/**
 * 功能:处理用户注册
 * 作者:余杰
 * 日期:2019年12月11日
 */

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.sql.Timestamp;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.yj.shop.bean.User;
import net.yj.shop.service.UserService;

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 设置请求对象的字符编码
        request.setCharacterEncoding("utf-8");
        // 获取session对象
        HttpSession session = request.getSession();

        // 获取用户名
        String username = request.getParameter("username");
        // 获取密码
        String password = request.getParameter("password");
        // 获取电话号码
        String telephone = request.getParameter("telephone");
        // 设置注册时间(时间戳对象)
        Timestamp registerTime = new Timestamp(System.currentTimeMillis());
        // 设置用户为普通用户
        int popedom = 1;

        // 创建用户对象
        User user = new User();
        // 设置用户对象信息
        user.setUsername(username);
        user.setPassword(password);
        user.setTelephone(telephone);
        user.setRegisterTime(registerTime);
        user.setPopedom(popedom);

        // 创建UserService对象
        UserService userService = new UserService();
        // 调用UserService对象的添加用户方法
        int count = userService.addUser(user);

        // 判断是否注册成功
        if (count > 0) {
            // 设置session属性
            session.setAttribute("registerMsg", "恭喜,注册成功!");
            // 重定向到登录页面
            response.sendRedirect(request.getContextPath() + "/login.jsp");
            // 在控制台输出测试信息
            System.out.println("恭喜,注册成功,跳转到登录页面!");
        } else {
            // 设置session属性
            session.setAttribute("registerMsg", "遗憾,注册失败!");
            // 重定向到注册页面
            response.sendRedirect(request.getContextPath() + "/frontend/register.jsp");
            // 在控制台输出测试信息
            System.out.println("遗憾,注册失败,跳转到注册页面!");
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

重启服务,清空之前的控制台数据,打开首页
在这里插入图片描述
在地址栏http://localhost:8080/simonshop/后面输入register?username=小小&password=13131&telephone=13945644564进行注册测试
在这里插入图片描述
回车之后,依然是404,但是看地址,我们已经跳转到了登录页面
在这里插入图片描述
查看控制台,显示我们注册成功!
在这里插入图片描述
再看看数据库
在这里插入图片描述
已经将我们的数据添加进去了,现在测试错误结果,输入超过12位的电话号码
在这里插入图片描述
地址栏重新回到注册页
在这里插入图片描述
查看控制台
在这里插入图片描述
告诉你注册失败,并抛出一个SQL异常,如果你不喜欢这么显示异常,可以修改UserDaoImpl里的insert方法。很简单,只需要将catch字句里的e.printStackTrace();改成System.err.println("SQL异常:" + e.getMessage());,测试结束!

4、显示类别控制程序(ShowCategoryServlet)

package net.yj.shop.servlet;
/**
 * 功能:显示类别控制程序
 * 作者:余杰
 * 日期:2019年12月11日
 */

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.yj.shop.bean.Category;
import net.yj.shop.service.CategoryService;

@WebServlet("/showCategory")
public class ShowCategoryServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 创建类别服务对象
        CategoryService categoryService = new CategoryService();
        // 获取全部商品类别
        List<Category> categories = categoryService.findAllCategories();
        // 获取session对象
        HttpSession session = request.getSession();
        // 把商品类别列表以属性的方式保存到session里
        session.setAttribute("categories", categories);
        // 重定向到显示商品类别页面(showCategory.jsp)
        response.sendRedirect(request.getContextPath() + "/frontend/showCategory.jsp");
        // 在服务器控制台输出测试信息
        for (Category category: categories) {
            System.out.println(category);
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

再次重启服务器
在这里插入图片描述
在地址栏输入showCategory
在这里插入图片描述
跳转到显示类别页面
在这里插入图片描述
查看控制台
在这里插入图片描述
发现类别已经显示出来了,测试成功!

5、显示商品列表的控制程序,通过业务层访问后台数据,然后将数据返回给前台页面(ShowProductServlet)

package net.yj.shop.servlet;
/**
 * 功能:显示商品列表的控制程序
 *     通过业务层访问后台数据,
 *     然后将数据返回给前台页面
 * 作者:余杰
 * 日期:2019年12月11日
 */

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.yj.shop.bean.Product;
import net.yj.shop.service.CategoryService;
import net.yj.shop.service.ProductService;

@WebServlet("/showProduct")
public class ShowProductServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取类别标识符
        int categoryId = Integer.parseInt(request.getParameter("categoryId"));
        // 创建商品类别服务对象
        CategoryService categoryService = new CategoryService();
        if (categoryService.findCategoryById(categoryId) != null){
            // 由类别标识符获取类别名
            String categoryName = categoryService.findCategoryById(categoryId).getName();
            // 创建商品服务对象
            ProductService productService = new ProductService();
            // 获取指定商品类别的商品列表
            List<Product> products = productService.findProductsByCategoryId(categoryId);
            // 获取session对象
            HttpSession session = request.getSession();
            // 把商品列表对象以属性的方式保存到session里
            session.setAttribute("products", products);
            // 重定向到显示商品信息页面
            response.sendRedirect(request.getContextPath() + "/frontend/showProduct.jsp?categoryName=" + categoryName);
            // 在服务器端控制台输出测试信息
            for (int i = 0; i < products.size(); i++) {
                System.out.println(products.get(i));
            }
        }else {
            // 重定向到登录页面
            response.sendRedirect(request.getContextPath() + "/login.jsp");
            System.out.println("类别不存在!");
        }

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

再再再次重启服务
在这里插入图片描述
在地址栏添加showProduct?categoryId=1
在这里插入图片描述
跳转到显示该类别商品页面
在这里插入图片描述
查看控制台
在这里插入图片描述
将ID改为16
在这里插入图片描述
在这里插入图片描述
查看控制台
在这里插入图片描述
测试完毕!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值