关于java:JavaWeb学习记录servlettomcatrequestrespondJSP实战项目使用三层架构模式开发

39次阅读

共计 3365 个字符,预计需要花费 9 分钟才能阅读完成。

一、我的项目形容

 实现品牌数据的增删改查操作 

二、环境筹备

2.1、创立新的模块 brand_demo,在 pom.xml 中引入我的项目须要坐标
    2.1.1、依赖:mybatis、mysql、servlet、jsp-api、2.2.2、插件:tomcat7-maven-plugin

2.2、创立三层架构的包构造:三层架构是将咱们的我的项目分成了三个层面,别离是:体现层、业务逻辑层、数据拜访层。1、数据拜访层(web/controller):对数据库的 CRUD 基本操作
        2、业务逻辑层 (service):对业务逻辑进行封装,组合数据拜访层层中基本功能,造成简单的业务逻辑性能。例如注册业务性能,咱们会先调用数据拜访层的 selectByName() 办法判断该用户名是否存在,如果不存在再调用数据拜访层的 insert() 办法进行数据的增加操作
        3、体现层 (mapper/dao):接管申请,封装数据,调用业务逻辑层,响应数据 



2.3、数据库表 tb_brand


2.4、实体类 Brand


2.5、MyBatis 根底环境
        Mybatis-config.xml
        BrandMapper.xml
        BrandMapper 接口

三、增删改查

3.1、查问所有操作
    3.1.1、流程图 


    3.1.2、编写 BrandMapper:在 mapper 包下创立创立 BrandMapper 接口,在接口中定义 selectAll() 办法
        /**
        * 查问所有
        * @return
        */
        @Select("select * from tb_brand")
        List<Brand> selectAll();

    3.1.3、编写工具类:在 com.itheima 包下创立 utils 包,并在该包下创立名为 SqlSessionFactoryUtils 工具类
        public class SqlSessionFactoryUtils {
            private static SqlSessionFactory sqlSessionFactory;
            static {
                // 动态代码块会随着类的加载而主动执行,且只执行一次
                try {
                    String resource = "mybatis-config.xml";
                    InputStream inputStream = Resources.getResourceAsStream(resource);
                    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                } catch (IOException e) {e.printStackTrace();
                }
            }
                public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}
        }


    3.1.4、编写 BrandService:在 service 包下创立 BrandService 类
        public class BrandService {SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();
            /**
            * 查问所有
            * @return
            */
            public List<Brand> selectAll(){// 调用 BrandMapper.selectAll()
                //2. 获取 SqlSession
                SqlSession sqlSession = factory.openSession();
                //3. 获取 BrandMapper
                BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
                //4. 调用办法
                List<Brand> brands = mapper.selectAll();
                sqlSession.close();
                return brands;
            }
        }



    3.1.5、编写 Servlet
        在 web 包下创立名为 SelectAllServlet 的 servlet,该 servlet 的逻辑如下:1、调用 BrandService 的 selectAll() 办法进行业务逻辑解决,并接管返回的后果
            2、将上一步返回的后果存储到 request 域对象中
            3、跳转到 brand.jsp 页面进行数据的展现

        @WebServlet("/selectAllServlet")
        public class SelectAllServlet extends HttpServlet {private BrandService service = new BrandService();
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {
                //1. 调用 BrandService 实现查问
                List<Brand> brands = service.selectAll();
                //2. 存入 request 域中
                request.setAttribute("brands",brands);
                //3. 转发到 brand.jsp
                request.getRequestDispatcher("/brand.jsp").forward(request,response);
            }
            @Override
            protected void doPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {this.doGet(request, response);
            }
        }

    3.1.6、编写 brand.jsp 页面
    <%-- 有坑,要设置 isELIgnored="false" 不然无奈解析 brands,${brands} 只会被当成字符输入 --%>

    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="button" value="新增" id = "add"><br>
    <hr>
    <table border="1" cellspacing="0" width="80%">
        <tr>
            <th> 序号 </th>
            <th> 品牌名称 </th>
            <th> 企业名称 </th>
            <th> 排序 </th>
            <th> 品牌介绍 </th>
            <th> 状态 </th>
            <th> 操作 </th>
        </tr>

        <c:forEach items="${brands}" var="brand" varStatus="status">
            <tr align="center">
                <td>${brand.id}</td>
                <%--<td>${status.count}</td>--%>
                <td>${brand.brandName}</td>
                <td>${brand.companyName}</td>
                <td>${brand.ordered}</td>
                <td>${brand.description}</td>
                <c:if test="${brand.status == 1}">
                    <td> 启用 </td>
                </c:if>
                <c:if test="${brand.status != 1}">
                    <td> 禁用 </td>
                </c:if>
                <td><a href="/brand_demo/selectByIdServlet?id=${brand.id}"> 批改 </a> <a href="#"> 删除 </a></td>
            </tr>
        </c:forEach>

    </table>
    <script>
        document.getElementById("add").onclick = function (){location.href = "/brand_demo/addBrand.jsp";}
    </script>
    </body>
    </html>

正文完
 0