JSP改造OA项目

Jsp改造OA项目

  • 使用Servlet+JSP完成oa项目的改造

    • 使用servlet收集数据
    • 使用jsp展示数据
    • 将之前的原型html文件修改为jsp在文件头部添加
      • <%@page contentType="text/html;charset=utf-8"%>
    • 将全部文件拷贝在web目录下,完成所有页面的正常跳转
  • 模板设计模式DeptServlet

    • 这里写的servlet就实现了前端代码的分离,三个点

      1. 处理的结果集封装到bean对象中
      2. 将bean对象封装在容器中
      3. request域共享数据,转发
    • package com.servlet;
      //oa3.0
      import com.bean.Dept;
      import com.utils.DBUtil;
      import jakarta.servlet.ServletException;
      import jakarta.servlet.annotation.WebServlet;
      import jakarta.servlet.http.HttpServlet;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      
      import java.io.IOException;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import java.util.ArrayList;
      
      /**
       * @ProjectName: web_suc
       * @Title: DeptServlet
       * @Description: TODO
       * @Author: Widows
       * @Date: 2022/12/19 16:11
       */
      @WebServlet("/dept/list")
      public class DeptServlet extends HttpServlet {
          @Override
          protected void service(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              String servletPath = request.getServletPath();
              if("/dept/list".equals(servletPath)){
                  doList(request,response);
              }
          }
          private void doList(HttpServletRequest request,HttpServletResponse response)
                  throws ServletException,IOException{
              ArrayList<Dept> depts = new ArrayList<Dept>();
              Dept dept = null;
              //连接数据库获取数据
              Connection conn = null;
              PreparedStatement ps = null;
              ResultSet rs = null;
      
              try {
                  conn = DBUtil.getConnection();
                  String sql = "select deptno,dname,loc from dept";
                  ps = conn.prepareStatement(sql);
                  rs = ps.executeQuery();
                  while (rs.next()){
                      String deptno = rs.getString("deptno");
                      String dname = rs.getString("dname");
                      String loc = rs.getString("loc");
                      /**
                       * 将以上零散的数据封装成一个个对象
                       * 每次循环完都会创建一个新的对象,而对象的引用只有一个dept。
                       * 那么之前的对象内存地址没有指向会变成垃圾值,所以把之前对象的内存地址
                       * 存储在一个容器中,这样就不会变成垃圾值被gc回收
                       */
                      dept = new Dept();
                      dept.setDeptno(deptno);
                      dept.setDname(dname);
                      dept.setLoc(loc);
                      //将封装的对象存储在容器中
                      depts.add(dept);
                  }
              } catch (SQLException e) {
                  e.printStackTrace();
              }finally {
                  DBUtil.close(conn,ps,rs);
              }
              //request共享域
              request.setAttribute("deptList",depts);
              //转发
              request.getRequestDispatcher("/list.jsp").forward(request,response);
          }
      }
      /*........*/
      
  • JSP页面

    • 从请求域中取出ArrayList集合
    • 遍历集合,取出每个部门对象,动态生成标签
  • JavaBean是什么?

    • java是咖啡,bean是豆子,java程序是由一个个bean组成的
    • javabean是符合某种规范的java类,比如:
      • 有无参构造方法
      • 属性私有化
      • 对外提供get,set方法
      • 实现java.io.Serializable
      • 重写toString方法
      • 重写hashCode和equals方法
    • JavaBean是java中的实体类,用来负责数据的封装
    • 符合JavaBean规范,具有更强的通用性
posted @   RepublicLine  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?
点击右上角即可分享
微信分享提示