家居网购项目(首页搜索+验证码)

这篇具有很好参考价值的文章主要介绍了家居网购项目(首页搜索+验证码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.首页搜索

1.需求分析

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.程序框架图

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.编写dao层
1.修改FurnDao
添加两个方法
    //根据家居名字模糊查询记录条数
    public int getTotalCountByName(String name);
    //根据家居名字和begin以及pageSize模糊查询记录
    public List<Furn> getPageItemsByName(String name, int begin, int pageSize);
2.修改FurnDaoImpl
添加两个方法
    /**
     * 根据姓名进行模糊查询总数
     * @param name
     * @return
     */
    @Override
    public int getTotalCountByName(String name) {
        String sql = "select count(*) from furn where name like ?";
        //注意,在模糊查询的时候不能直接将问号放入引号内部
        String namePattern = "%" + name + "%";
        return ((Number)queryScalar(sql, namePattern)).intValue();
    }

    /**
     * 获取根据姓名分页查询的记录
     * @param name
     * @param begin
     * @param pageSize
     * @return
     */
    @Override
    public List<Furn> getPageItemsByName(String name, int begin, int pageSize) {
        String sql = "select id, name, maker, price, sales, stock, img_path as imgPath " +
                "from furn where name like ? limit ?, ?";
        String namePattern = "%" + name + "%"; //根据姓名模糊查询
        return queryMulti(sql, Furn.class, namePattern, begin, pageSize);
    }
3.单元测试

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

4.编写service层
1.修改FurnService
添加方法
    //7.根据传入的name和begin和pageSize返回对应的page对象
    public Page<Furn> pageByName(String name, int pageNo, int pageSize);
2.修改FurnServiceImpl
添加方法
    /**
     * 根据名字进行模糊查询,返回指定页,指定页的大小的page对象
     * @param name
     * @param pageNo
     * @param pageSize
     * @return
     */
    @Override
    public Page<Furn> pageByName(String name, int pageNo, int pageSize) {
        Page<Furn> page = new Page<>();
        page.setPageNo(pageNo);
        page.setPageSize(pageSize);
        int totalRow = furnDao.getTotalCountByName(name);
        page.setTotalRow(totalRow);
        //计算总页数
        int pageTotalCount = totalRow / pageSize;
        if (totalRow % pageSize > 0) {
            pageTotalCount += 1;
        }
        page.setPageTotalCount(pageTotalCount);
        //计算当前页显示的记录
        int begin = pageSize * (pageNo - 1);
        List<Furn> pageItems = furnDao.getPageItemsByName(name, begin, pageSize);
        page.setItems(pageItems);
        return page;
    }
3.单元测试

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

5.编写web层
1.修改index.jsp

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.修改CustomerFurnServlet
添加方法
    /**
     * 根据姓名进行分页查询,将page对象请求转发到index.jsp
     *
     * @param req
     * @param resp
     */
    public void pageByName(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取三个信息
        String name = req.getParameter("name");
        Integer pageNo = DataUtils.parseInt(req.getParameter("pageNo"), 1);
        Integer pageSize = DataUtils.parseInt(req.getParameter("pageSize"), 8);
        //根据姓名进行分页查询
        Page<Furn> page = furnService.pageByName(name, pageNo, pageSize);
        //请求转发到index.jsp
        req.setAttribute("page", page);
        req.getRequestDispatcher("/views/customer/index.jsp?name=" + name).forward(req, resp);

    }
3.修改index.jsp的分页导航逻辑
<%--默认action是page--%>
<c:set var="action" value="page"></c:set>
<%--只要是根据姓名查找的,那么就将action变成向pageByName发送请求并携带name--%>
<c:if test="${not empty param.name}">
    <c:set var="action" value="pageByName&name=${param.name}" scope="page"/>
</c:if>

<!--  Pagination Area Start 分页导航条 -->
<div class="pro-pagination-style text-center mb-md-30px mb-lm-30px mt-6" data-aos="fade-up">
    <ul>
        <li><a href="customerFurnServlet?action=${action}&pageNo=1">首页</a></li>
        <%--有上一页再显示--%>
        <c:if test="${requestScope.page.pageNo-1 > 0}">
            <li><a href="customerFurnServlet?action=${action}&pageNo=${requestScope.page.pageNo-1}">上页</a></li>
        </c:if>

        <%--最多显示5页--%>
        <c:forEach begin="${requestScope.page.pageNo - 2 > 0 ? requestScope.page.pageNo - 2 : 1}"
                   end="${requestScope.page.pageNo+2}" var="pageNo">
            <%--页数在范围内才显示--%>
            <c:if test="${pageNo >= 1 && pageNo <= requestScope.page.pageTotalCount}">
                <li>
                        <%-- 如果是当前页号则显示被选中--%>
                    <a class="<c:if test="${requestScope.page.pageNo == pageNo}">active</c:if>"
                       href="customerFurnServlet?action=${action}&pageNo=${pageNo}#">${pageNo}</a>
                </li>
            </c:if>
        </c:forEach>

        <%--有下一页再显示--%>
        <c:if test="${requestScope.page.pageNo+1 <= requestScope.page.pageTotalCount}">
            <li><a href="customerFurnServlet?action=${action}&pageNo=${requestScope.page.pageNo+1}">下页</a></li>
        </c:if>
        <li><a href="customerFurnServlet?action=${action}&pageNo=${requestScope.page.pageTotalCount}">末页</a></li>
        <li><a>共${requestScope.page.pageTotalCount}页</a></li>
        <li><a>共${requestScope.page.totalRow}记录</a></li>
    </ul>
</div>
<!--  Pagination Area End -->
6.结果展示
1.对椅子进行模糊搜索

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.搜到的都是椅子

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.点击导航条也可正常显示剩下的椅子

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

7.修改bug
点击logo无法返回首页
解决方法

将所有index.html替换为customerFurnServlet?action=page&pageNo=1

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.根据登录状态显示菜单

1.需求分析

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.程序框架图

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.修改MemberServlet

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

4.修改login_ok.jsp
1.修改头部

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.修改html

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.增加样式
<style>
    .header-content {
        display: flex;
        align-items: center;
    }

    .header-logo {
        margin-right: 30px; /* 适当调整Logo右侧的间距 */
    }

    .user-links {
        display: flex;
        align-items: center;
    }

    .user-links a, .user-links span {
        margin-right: 15px; /* 适当调整链接之间的间距 */
    }

    .user-links .order-management-link,
    .user-links .safe-logout-link,
    .user-links .user-greeting {
        font-size: 1.2em; /* 增加文字的字体大小 */
    }
</style>
5.修改index.jsp

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

6.结果展示
1.未登录的首页

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.登录成功

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.点击返回首页

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.注销登录

1.需求分析

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.程序框架图

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.修改index.jsp

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

4.修改login_ok.jsp

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

5.编写MemberServlet
添加方法
    //注销登录
    public void logout(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        HttpSession session = req.getSession();
        //销毁session
        session.invalidate();
        //重定向到首页
        resp.sendRedirect("customerFurnServlet?action=page&pageNo=1");
    }
6.结果展示
1.登录成功,点击安全退出

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.首页点击安全退出

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

4.验证码

1.需求分析

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.程序框架图

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3. 配置kaptcha
1.导入jar包

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.配置web.xml
    <servlet>
        <servlet-name>kaptcha</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>kaptcha</servlet-name>
        <url-pattern>/kaptchaServlet</url-pattern>
    </servlet-mapping>
3.注册页面添加验证码图片

向刚才配置的kaptcha发送请求

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

4.点击刷新验证码图片

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

4.kaptcha源码阅读
1.打断点,启动debug

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.四个下一步

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.下一步

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

4.下一步

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

5.下一步

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

6.下一步

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

7.下三步

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

5.前端校验验证码不能为空
1.修改login.jsp
                //5.判断验证码是否为空
                var codeText = $("#code").val();
                if (codeText == null || codeText == "") {
                    $("span.errorMsg").text("验证码不能为空!");
                    return false;
                }
2.结果展示

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

6.后端校验验证码
1.修改memberServlet
修改方法register
    public void register(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //接受用户注册信息
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String email = req.getParameter("email");

        //获取验证码
        String codeText = req.getParameter("codeText");
        HttpSession session = req.getSession();
        //获取验证码和时间
        Object kaptchaSessionKey = session.getAttribute(KAPTCHA_SESSION_KEY);
        //获取验证码之后立即删除
        req.getSession().removeAttribute(KAPTCHA_SESSION_KEY);

        Object kaptchaSessionDate = session.getAttribute(KAPTCHA_SESSION_DATE);
        System.out.println((Date) kaptchaSessionDate);

        //验证码正确则按照之前的逻辑走
        if (kaptchaSessionKey != null && ((String) kaptchaSessionKey).equalsIgnoreCase(codeText)) {
            //判断用户名是否在数据库中
            if (!memberService.isExistsUsername(username)) { //不在数据库中,可以注册
                Member member = new Member(null, username, password, email);
                //注册
                if (memberService.registerMember(member)) {
                    //请求转发
                    req.getRequestDispatcher("/views/member/register_ok.html").forward(req, resp);
                } else {
                    //请求转发
                    req.getRequestDispatcher("/views/member/register_fail.html").forward(req, resp);
                }
            } else {
                //返回注册页面
                req.getRequestDispatcher("/views/member/login.jsp").forward(req, resp);
            }
        } else { //验证码不正确,请求转发并携带信息
            req.setAttribute("msg", "验证码不正确");
            req.setAttribute("active", "register");
            //返回注册页面
            req.getRequestDispatcher("/views/member/login.jsp").forward(req, resp);
        }
    }
2.修改login.jsp显示错误信息
1.注册表单增加id

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.模拟点击

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.登录表单提示错误信息逻辑修改

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

3.结果展示
1.验证码不正确

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb

2.自动点击到会员注册并显示错误信息

家居网购项目(首页搜索+验证码),家居网购项目,java,javaweb文章来源地址https://www.toymoban.com/news/detail-850341.html

到了这里,关于家居网购项目(首页搜索+验证码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java项目:基于JavaWeb的教务管理系统的设计与实现

    作者主页:夜未央5788  简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为基于WEB的教务管理系统。 主要系统功能包括: 学生管理:显示所有学生、添加学生; 课程管理:显示所有课程、添加课程; 学院管理:显示所有学院、添加学

    2024年02月11日
    浏览(41)
  • 尚硅谷JavaWeb电子书城项目(Java+Mysql+Tomcat+Jsp)

    自己写的在线电子书城项目,可改写,添加功能,如打折,分类,用户管理,评论等功能。 使用方法: 1.使用idea导入项目。 2.数据库要用项目resource文件里的book.sql文件建立。 3.修改jdbc.properites中的数据库信息。 4.使用maven加载pom.xml中的依赖。 5.配置好tomcat容器,运行项目。

    2024年02月04日
    浏览(50)
  • 计算机毕业设计 基于Java的敬老院管理系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

    🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不

    2024年02月07日
    浏览(44)
  • 首页搜索框传递参数,并在搜索页面中的搜索框中进行显示,搜索框绑定回车键进行搜索

    1.写出搜索条件和搜索框 2.添加scss样式 页面 3.搜索框选择条件,在搜索框中输入内容,然后进行页面跳转 在搜索框中输入内容,然后进行页面跳转 4.页面跳转后从地址栏中获取相关数据,搜索条件和搜索框中的内容 从地址栏中获取到相关数据searchText和selectSearch的值

    2024年02月10日
    浏览(98)
  • timestamp工具站上线即进搜索引擎首页,我做对了什么?

    首先来讲上线就进首页是很偶然的事,但是愚蠢的人类总是喜欢为自己的‘成功’找理由。以合理化自己就是天选之子,就是牛逼🤠。 然后到处跟别人讲自己的‘成功’经验,那么今天就为我刚做的工具站上线第二天就进入搜索引擎首页、有自然流量找找理由吧。😇 Unix

    2024年03月23日
    浏览(37)
  • Java项目之搜索引擎

    前置知识 搜索引擎的核心功能,就是查找到一组和用户输入的词/一句话 相关联的网页 :搜索词;搜索结果的标题,搜索结果的描述,展示URL,跳转过去的目标页面,称为“落地页”; 对于一个搜索引擎来说,首先,需要获取到很多很多的网页;然后再根据用户输入的

    2023年04月13日
    浏览(42)
  • Java项目——文档搜索引擎

    实现一个较为简单的搜索引擎,在拥有较多网页的基础上,在用户输入查询词之后,能够从这些网页中尽可能地匹配出用户想要的网页 当然,不同于百度搜狗这种搜索引擎,它们能够对互联网中大量的网站都进行搜索,我们这里实现的是针对「Java 文档」的搜索引擎,就像下

    2024年02月02日
    浏览(41)
  • 谷歌浏览器添加首页快捷方式,并设置默认搜索引擎为百度

    目录 1、添加首页快捷方式 ​2、谷歌浏览器设置默认搜索引擎 1、添加首页快捷方式 (1)首先要保证当前的默认搜索引擎为Google才可以添加首页的快捷方式。 (2)回到首页即可添加和自定义快捷方式的url (3)默认搜索引擎不是Google,则展示如下,无法添加和修改快捷方式

    2024年02月15日
    浏览(86)
  • 【UniApp开发小程序】小程序首页(展示商品、商品搜索、商品分类搜索)【后端基于若依管理系统开发】

    【说明】 界面中商品的图片来源于闲鱼,若侵权请联系删除 关于商品分类页面的实现,请在我的Uniapp系列文章中寻找来查看 关于页面中悬浮按钮的实现,请在我的Uniapp系列文章中寻找来查看 该工具类的作用是,给定一个图片的url地址,计算出图片的高宽比,计算高宽比的作

    2024年02月13日
    浏览(49)
  • 计算机毕业设计 基于大数据的智能家居销量数据分析系统的设计与实现 Java实战项目 附源码+文档+视频讲解

    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 ——————————

    2024年02月04日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包