首页 > 其他分享 >JSP改造OA项目

JSP改造OA项目

时间:2022-12-19 20:56:08浏览次数:41  
标签:java rs 改造 request OA dept JSP import servlet

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规范,具有更强的通用性

标签:java,rs,改造,request,OA,dept,JSP,import,servlet
From: https://www.cnblogs.com/RepublicLine/p/16993032.html

相关文章

  • Pytorch学习笔记之tensorboard
      训练模型过程中,经常需要追踪一些性能指标的变化情况,以便了解模型的实时动态,例如:回归任务中的MSE、分类任务中的Accuracy、生成对抗网络中的图片、网络模......
  • How to Download OBS Studio for Mac
    HowtoDownloadOBSStudioforMac https://filmora.wondershare.com/screen-recorder/download-obs-for-mac.html#:~:text=Download%20and%20Install%20OBS......
  • Java笔记(8)——重载(Overload)与重写(Override)的区别
    1、重写(Override)  重写是子类对允许访问的父类的方法进行重新编写的过程,方法名、返回值和参数列表不能变,方法中的内容可以变化。特点就是:子类可以根据自己的需要对父类的......
  • 巨蟒python全栈开发数据库前端6:事件onclick的两种绑定方式&&onblur和onfocus事件&&wi
      1.回顾上节内容(JavaScript)一.JavaScript概述1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.JavaScript是一门前后端都可以写的一......
  • lightdb extra_float_digits--控制浮点数精度
    lightdb中extra_float_digits参数可以用来控制浮点数输出的精度,其采用原生c语言的float4/float8实现,可能我们在平时使用中并不太会留意,但是显示的时候会有一些问题。建一......
  • OAuth 2 Developers Guide
    IntroductionThisistheuserguideforthesupportfor ​​OAuth2.0​​​.ForOAuth1.0,everythingisdifferent,so ​​seeitsuserguide​​.Thisusergu......
  • <%@ include file=""%>与<jsp:include page=""/>区别
         通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用include。具体在哪些时候用<%@includefile=""%>,哪些时候用<jsp:in......
  • Jsp底层实现原理
    JSP底层原理分析在WEB-INF目录外创建一个index.jsp文件将项目部署成功之后启动服务器,浏览器访问该jsp页面,在服务器启动页面可以看到CATALINE_BASE这个信息org.......
  • AWS 下 EKS 部署 Dashboard
    一.准备工作打开AWSCloudShell安装eksctlcurl--silent--location"https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname-s)_amd64.tar.g......
  • SwaggerUI--SosoApi
     ​​1、SwaggerUI是什么?​​SwaggerUI是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger-UI的官方地址:​​http://swagger.io/​​Github上的项目地址: ......