第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

BookStroe第一篇【部署開發(fā)環(huán)境、解決分類模塊】

標簽:
Java
前言

巩固Servlet+JSP开发模式,做一个比较完整的小项目

成果图

该项目包含了两个部分,前台和后台。

前台用于显示

这里写图片描述

后台用于管理

这里写图片描述

该项目可分为5个模块来组成:分类模块,用户模块,图书模块,购买模块,订单模块


搭建环境
建立包结构

这里写图片描述

导入开发包

这里写图片描述

前台分帧页面
  • index.jsp【没有body标签的】

  <frameset rows="25%,*">
    <frame class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="${pageContext.request.contextPath}/client/head.jsp"/>
    <frame class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="${pageContext.request.contextPath}/client/body.jsp"/>
  </frameset>
  • head.jsp
<body style="text-align: center">
<h1>欢迎来到购物中心</h1>
  • body是空白的jsp页面

  • 效果:

这里写图片描述


后台分帧页面
  • manager.jsp【嵌套了framset标签,也是没有body标签的】

<frameset rows="25%,*">
    <frame class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="${pageContext.request.contextPath}/background/head.jsp"/>

    <frameset cols="15%,*">
        <frame class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="${pageContext.request.contextPath}/background/left.jsp"/>
        <frame class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="${pageContext.request.contextPath}/background/body.jsp"/>
    </frameset>
</frameset>
  • head.jsp

<body style="text-align: center">
<h1>后台管理</h1>
  • left.jsp

<a href="#">分类管理</a>

<br>
<br>
<a href="#">图书管理</a>
<br>
<br>

<a href="#">订单管理</a>
<br>
<br>
  • body.jsp是空白的

  • 效果:

这里写图片描述

分帧的文件夹目录结构

这里写图片描述

值得注意的是:

  • 文件夹的名字不能使用“manager”,不然会出现:403 Access Denied错误
  • frameset标签是可以嵌套的,分列用“cols”,分行用“rows”
导入工具类和方法的代码
  • 过滤中文乱码数据
  • HTML转义
  • DAOFactory
  • JDBC连接池
  • UUID工具类
  • c3p0.xml配置文件

这些代码都可以在我的博客分类:代码库中找到!


分类模块

首先,我们来做分类模块吧

创建实体Category
    private String id;
    private String name;
    private String description;

    //各种setter、getter
在数据库创建表

CREATE TABLE category (

  id          VARCHAR(40) PRIMARY KEY,
  name        VARCHAR(10) NOT NULL UNIQUE ,
  description VARCHAR(255)

);
编写CategoryDAO

/**
 * 分类模块
 *  1:添加分类
 *  2:查找分类
 *  3:修改分类
 *
 *
 * */
public class CategoryImpl {

    public void addCategory(Category category) {

        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

        String sql = "INSERT INTO category (id, name, description) VALUES(?,?,?)";
        try {
            queryRunner.update(sql, new Object[]{category.getId(), category.getName(), category.getDescription()});

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public Category findCategory(String id) {
        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());
        String sql = "SELECT * FROM category WHERE id=?";

        try {
            Category category = (Category) queryRunner.query(sql, id, new BeanHandler(Category.class));

            return category;

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }

    public List<Category> getAllCategory() {
        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());
        String sql = "SELECT * FROM category";

        try {
            List<Category> categories = (List<Category>) queryRunner.query(sql, new BeanListHandler(Category.class));

             return categories;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }
}
测试DAO

public class demo {

    @Test
    public void add() {

        Category category = new Category();
        category.setId("2");
        category.setName("数据库系列");
        category.setDescription("这是数据库系列");

        CategoryImpl category1 = new CategoryImpl();
        category1.addCategory(category);

    }

    @Test
    public void find() {

        String id = "1";
        CategoryImpl category1 = new CategoryImpl();
        Category category = category1.findCategory(id);

        System.out.println(category.getName());
    }
    @Test
    public void getAll() {

        CategoryImpl category1 = new CategoryImpl();
        List<Category> categories = category1.getAllCategory();

        for (Category category : categories) {
            System.out.println(category.getName());
        }
    }

}
抽取成DAO接口

public interface CategoryDao {
    void addCategory(Category category);

    Category findCategory(String id);

    List<Category> getAllCategory();
}
后台页面的添加分类
  • 在超链接上,绑定显示添加分类的页面

<a href="${pageContext.request.contextPath}/background/addCategory.jsp" target="body">添加分类</a>
  • 显示添加分类的JSP页面

<form action="${pageContext.request.contextPath}/CategoryServlet?method=add" method="post">

    分类名称:<input type="text" name="name"><br>
    分类描述:<textarea name="description"></textarea><br>
    <input type="submit" value="提交">

</form>
  • 处理添加分类的Servlet

        if (method.equals("add")) {

            try {
                //把浏览器带过来的数据封装到bean中
                Category category = WebUtils.request2Bean(request, Category.class);
                category.setId(WebUtils.makeId());

                service.addCategory(category);
                request.setAttribute("message", "添加分类成功!");

            } catch (Exception e) {
                request.setAttribute("message","添加分类失败");
                e.printStackTrace();
            }
            request.getRequestDispatcher("/message.jsp").forward(request, response);

        }
  • 效果:

这里写图片描述


后台页面的查看分类
  • 在超链接上,绑定处理请求的Servlet

        else if (method.equals("look")) {

            List<Category> list = service.getAllCategory();
            request.setAttribute("list", list);
            request.getRequestDispatcher("/background/lookCategory.jsp").forward(request, response);

        } 
  • 显示分类页面的JSP

<c:if test="${empty(list)}">

    暂时还没有分类数据哦,请你添加把
</c:if>
<c:if test="${!empty(list)}">

    <table border="1px">
        <tr>
            <td>分类名字</td>
            <td>分类描述</td>
            <td>操作</td>
        </tr>

    <c:forEach items="${list}" var="category">

        <tr>
            <td>${category.name}</td>
            <td>${category.description}</td>
            <td>
                <a href="#">删除</a>
                <a href="#">修改</a>
            </td>
        </tr>

    </c:forEach>

    </table>
</c:if>
  • 效果:

这里写图片描述


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
1.5萬
獲贊與收藏
6489

關(guān)注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消