Jsp改造OA项目
-
使用Servlet+JSP完成oa项目的改造
- 使用servlet收集数据
- 使用jsp展示数据
- 将之前的原型html文件修改为jsp在文件头部添加
- <%@page contentType="text/html;charset=utf-8"%>
- 将全部文件拷贝在web目录下,完成所有页面的正常跳转
-
模板设计模式DeptServlet
-
这里写的servlet就实现了前端代码的分离,三个点
- 处理的结果集封装到bean对象中
- 将bean对象封装在容器中
- 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规范,具有更强的通用性