A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Java新人 初级黑马   /  2019-9-6 16:48  /  1331 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

三层架构:软件设计架构
  1.界面层(表示层):用户看的界面.用户可以通过界面上的组件和服务器进行交互
  2,业务逻辑层: 处理业务逻辑的
  3, 数据访问层:操作数据存储文件


创建三个模块
(web,service,dao)

开发规范;
  公司域名
  项目名
  
  禅道
  www.baidua.com
  包名
    1.域名反写:
            com.baidua
    2,拼接项目名
           com.baidua.chandao
          
        3,细分包结构
           com.baidua.chandao
                               
                                                       
##
  1,需求:用户信息得增删改查
  设计:
    技术选型:
        Servlet+jsp+Mysql+JDBCTempleat+Durid+BeanUtils+tomcat       
        数据库设计:
      
    开发:
       环境搭建
         创建数据库环境
         创建项目,导入需要的jar包
       编码
             
          
    测试
   
    部署运维       
                                                       
                                                       
Servlet
  1,接收前台数据
  2,把数据传给service
  3,接收最后的结果
  4,返回前台页面展示数据

Service
  1,接收Servlet的数据
  2,传给dao
  2,接收dao结果
  4,返回给Servlet

Dao
  1,接收Service的数据
  2, 去数据库执行sql
  3, 拿结果
  4, 返回servlet
  
  
1, 学的不咋地的
      导师代码一行行写注释
       看
      把代码删了开始写

2,   先把注释写好
      跟着注释写代码

3,   逻辑和代码都需要一步步写出来

4, 扩展
     注册之前的用户是否存在的判断
   


接收前台数据 ,前台数据怎么定义  不是sql语句,



   锻炼自己的业务逻辑:
       业务逻辑?
          
          第一步 创建前台数据?
                
                         三层架构分为三步
                           web service dao
                          
                           web :接收前台数据
                           service 执行业务了逻辑
                           dao : 接收后台数据

1,添加
  表单提交用户信息(前台页面表单标签)
  数据到servlet,通过beanUtils 把数据封装到对象中
  servlet把user传给service
  service传给dao,dao执行插入操作,把数据插入到数据库
  service访问用户列表的servlet(数据要重新查询)
  
2,删除
  前台页面点击删除触发删除操作 (confirm().id的传递)
  servlet接收id,传给service,传给dao
  dao根据id执行删除操作
  servlet访问用户列表的servlet(数据要重新查询)


3,修改
  
     



如果外界传入了一个不合法的id,我们应该怎么做 ?

回显操作  
   
  


  
  回顾:
    列表显示
        登录
        添加
        修改
        删除
       
        围绕:三层架构
              web
                     1,接收前台数据(request.getParamter())
                         2,把数据进行封装(BeanUtils)
             3, 把数据传给service(loginUser=loginService.login(u))
                         4, 对service返回的结果进行判断    if(loginUser==null)
                         5, 返回页面
                              responce.getWriter().write()
                                  responce.sendRedirect()
                                  responce.getRequestDispatcher().forward()
                                  
                        6, service
                把数据传给dao(loginUser=loginDao.login(u))
                接收结果返回给web(return loginUser)
                 
              dao
                  去数据库执行操作(CRUD)
                                  把结果返回service
                                  
       
----------------------------------------------------------------------

选中删除
分页
复杂分页(了解)


删除选中:
  1,获取选中条目的id
  2,将这些id提交到DelSelectedServlet
  
   DelSelectedServlet
       
                                  

   

onsubmit是一个事件,submit是一个属性


删除选中:
   三层架构:
     
         
分页:
  为什么要用分页
    (防止内存溢出)
           减轻服务器内存的开销
           提升用户体验
            
        分析:
        输入:客户端给服务器端数据
    输出:服务器端给客户端数据
       
  思路:
   //int totalCount  总记录数  
     int totalPage    总页码 =总记录数%每页显示条数==0?总记录数/每页显示条数:总记录数/每页显示条数+1
         List list;      煤业的数据list集合
         int currentpage   当前页码
         
       
分页实现:
    前台:
      每页显示数
          当前页码
          
         传递给后台
        
      前台页面展示
        数据    EL+JSTL
        页码    JSTL+EL+总页数
        总条数
        当前页               

    后台:       
       后台把数据返回给前台
             1,数据--->list
                 2,总记录数
         3,总页数
         4,当前页码
                 5,每页显示数
                   把目标数据进行封装  --->PageBean
1,前台传递给后台   每页显示数,当前页码
2   后台接收参数  --->查到对应的数据返回给前台
         封装PageBean
                 如何封装:
                    1,数据---->List      数据库查询
                           SELECT * FROM 表 WHERE 条件 LIMIT index,count
                                index --> 开始查询的索引
                                        count --> 每页显示的条数
                                          index的计算方式
                                              (当前页-1)*每页显示数
                        2,总记录数           数据库查询
                        3,总页数             自己计算
                       
                        4,当前页码            前台传递的参数
                        5,每页显示数          前台传递的参数
  


servlet
     接收当前页,每页数
         
         
         
         
         
         
         
         
         
         
         
分页?
        减轻服务器压力
        提升用户体验
       
分页实现
        前台
                传递给后台
                        每页显示数
                        当前页码
                前台页面展示
                        数据        EL+JSTL
                        页码        JSTL+EL+总页数
                        总页数       
                        总条数
                        当前页        c:if
               
        后台
                后台把数据返回给前台
                        1.数据->List
                        2.总记录数
                        3.总页数
                        4.当前页码
                        5.每页显示数
                       
                把目标数据进行封装->PageBean
               
               
       
1.前台传递给后台   每页显示数,当前页码
2.后台       
        接收参数 -> 查到对应的数据返回给前台
        封装PageBean
        如何封装
                1.数据->List                数据库查询
                        SELECT * FROM 表 WHERE 条件 LIMIT index,count
                                index        ->   开始查询的索引
                                count        ->         每页显示的条数                ->每页显示数(已经存在)
                                        index的计算方式
                                                (当前页-1)*每页显示数               
                       
                2.总记录数                        数据库查询
                3.总页数                        自己计算
                        总记录数%每页显示数 == 0 ? 总记录数/每页显示数 : 总记录数/每页显示数+1
                               
                4.当前页码                        前台传递的参数
                5.每页显示数                前台传递的参数
        把pageBean对象存到request域中,请求转发显示       
       
         
         
service
   封装PageBean
   new 对象
   set方法设置

dao
  查数量
  查数据  





  


                                               
                                                       
        复杂分页
     
       动态SQL(掌握!!)
  
   前端
      提交:    rows currentpage
                    name address email
       
      展示:   
           数据
           分页效果
               显示页码数      ${pb.totalPage}
               显示总个数       ${pb.tatalCount}
               遍历显示页码
                       <c:foreach begin and var>
                         <li>${i}>
               当前页
                  <c:if test="{i==currentpage}">'
               上一页/下一页
               pb.currentPage+1>pb.totalPage
               pb.currentPage=1

               pb.currentPage+1>pb.totalPage
               pb.currentPage=pb.totalPage
                          
        后台:     
               
                          

   后台   
                                                       
                                                       
                                                       
                                                       
                                                       
                                                       
  面试很有可能会问你业务逻辑,并让你详解逻辑的可行性                                       
                                                       
                                                       
                                                       
        也叫面向接口的编程方式:service实现类的好处,将来如果某个实现类功能有缺陷我们只需要替换某个实现类就好,而不需要去改动接口,提升了程序的扩展性和可维护性                                       
                                                       
                                                       

  目的:
     查询用户的所有信息
     增加用户的信息
     删除用户的信息
     修改用户的信息

     选中删除
     用户分页查询
     加强版用户分页查询         
                                                       
                                                       
                                                       

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马