• jsp+EL+JSTL实现将数据库中的信息显示到jsp页面中


      案例描述:将数据库中的所有学生的信息显示到浏览器页面。

      创建数据库以及添加数据

      

     create table student(
     sid int primary key auto_increment,
       sname varchar(20) not null,
        sex varchar(2) not null,
        age int
         );
    //添加数据
    insert into student(sname,sex,age)values
    ("张三","男",18),
    ("李四","男",18),
    ("王五","男",18),
    ("赵柳","男",18);

      数据库截图

      

       项目的整体结构

      

       实体类-Student.java(用来存放数据

    package domain;
    /**
     * @author ztr
     * @version 创建时间:2021年4月18日 下午4:47:51
     * 类说明
     */
    public class Student {
        private int sid;
        private String sname;
        private String sex;
        private int age;
        public Student(int sid, String sname, String sex, int age) {
            super();
            this.sid = sid;
            this.sname = sname;
            this.sex = sex;
            this.age = age;
        }
        public Student() {
            super();
            // TODO Auto-generated constructor stub
        }
        public int getSid() {
            return sid;
        }
        public void setSid(int sid) {
            this.sid = sid;
        }
        public String getSname() {
            return sname;
        }
        public void setSname(String sname) {
            this.sname = sname;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "Student [sid=" + sid + ", sname=" + sname + ", sex=" + sex
                    + ", age=" + age + "]";
        }
        
    }

      model类-StudentModel(用来处理数据)

      

    package model;
    
    import java.sql.Connection;
    import java.util.List;
    
    import utils.BaseDao;
    import utils.JdbcUtils;
    import domain.Student;
    
    
    /**
     * @author ztr
     * @version 创建时间:2021年4月18日 下午4:49:08
     * 类说明
     */
    public class StudentModel {
        /**
         * 出库数据的java类
         */
        public List<Student> findAll(){
            Connection connection = null;
            List<Student> list = null;
            try {
                connection = JdbcUtils.GetConnection();
                String sql = "select * from student";
                list = BaseDao.getList(connection, Student.class, sql);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                JdbcUtils.closeResource(connection, null);
            }
        
            return list;
            
        }
    }

      utils包

      工具类JdbcUtils.java(用来获取数据库连接以及资源的关闭)

      

    package utils;
    
    import java.io.InputStream;
    import java.util.Properties;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    /**
     * @author ztr
     * @version 创建时间:2021年3月29日 上午10:20:16 类说明
     */
    /*
     * 获取连接
     * 
     * @return Connection
     */
    public class JdbcUtils {
    
        public JdbcUtils() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        private static DataSource source;
        static {
            try {
                Properties pro = new Properties();
                InputStream is = JdbcUtils.class.getClassLoader()
                        .getResourceAsStream("druid.properties");
                pro.load(is);
    
                source = DruidDataSourceFactory.createDataSource(pro);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        public static Connection GetConnection() throws Exception {
    
            Connection connection = source.getConnection();
            return connection;
    
        }
    
        /*
         * 关闭资源
         */
        public static void closeResource(Connection connection, PreparedStatement ps) {
            try {
                if (ps != null)
                    ps.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                if (connection != null)
                    connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        /*
         * 关闭资源
         */
        public static void closeResource1(Connection connection,
                PreparedStatement ps, ResultSet rs) {
            try {
                if (ps != null)
                    ps.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                if (connection != null)
                    connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                if (rs != null)
                    rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

      工具类-BaseDao.java(用来获取数据库中的数据)

      

    package utils;
    
    import java.lang.reflect.Field;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.util.ArrayList;
    import java.util.List;
    
    
    /**
     * @author ztr
     * @version 创建时间:2021年4月16日 上午11:21:09 类说明
     */
    public class BaseDao {
        // 通用的增删改操作
        public static void update(Connection connection, String sql, Object... args) {
            // 获取数据连接
            // 预编译sql语句返回preparedStatement
            PreparedStatement prepareStatement = null;
            try {
                prepareStatement = connection.prepareStatement(sql);
                // 填充占位符
                // prepareStatement.setObject的下标从1开始
                for (int i = 0; i < args.length; i++) {
                    prepareStatement.setObject(i + 1, args[i]);
                }
                // 执行
                prepareStatement.execute();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                // 资源的关闭
                JdbcUtils.closeResource(null, prepareStatement);
            }
        }
    
        /**
         * 返回一个数据
         * 
         * @param clazz
         * @param sql
         * @param args
         * @return
         */
        public static <T> T GetInstance(Connection connection, Class<T> clazz,
                String sql, Object... args) {
            PreparedStatement prepareStatement = null;
            // 获取结果集
            ResultSet resultSet = null;
            try {
                prepareStatement = connection.prepareStatement(sql);
                for (int i = 0; i < args.length; i++) {
                    prepareStatement.setObject(i + 1, args[i]);
                }
                resultSet = prepareStatement.executeQuery();
                // 获取元数据
                ResultSetMetaData metaData = resultSet.getMetaData();
                // 通过metaData获取结果集中的列数
                int columnCount = metaData.getColumnCount();
                if (resultSet.next()) {
                    T newInstance = clazz.newInstance();
                    for (int i = 0; i < columnCount; i++) {
                        // 获取列值
                        Object columnValue = resultSet.getObject(i + 1);
                        // 获取每列的列名
                        String columnName = metaData.getColumnLabel(i + 1);
                        // 利用反射
                        Field field = clazz.getDeclaredField(columnName);
                        // 考虑该属性是否为私有
                        field.setAccessible(true);
                        field.set(newInstance, columnValue);
                    }
                    return newInstance;
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                // 关闭资源
                JdbcUtils.closeResource1(null, prepareStatement, resultSet);
            }
    
            return null;
    
        }
        /**
         * 返回多条数据
         * @param connection
         * @param clazz
         * @param sql
         * @param args
         * @return
         */
        public static <T> List<T> getList(Connection connection, Class<T> clazz,
                String sql, Object... args) {
            PreparedStatement prepareStatement = null;
            // 获取结果集
            ResultSet resultSet = null;
            try {
                prepareStatement = connection.prepareStatement(sql);
                for (int i = 0; i < args.length; i++) {
                    prepareStatement.setObject(i + 1, args[i]);
                }
                resultSet = prepareStatement.executeQuery();
                // 获取元数据
                ResultSetMetaData metaData = resultSet.getMetaData();
                // 通过metaData获取结果集中的列数
                int columnCount = metaData.getColumnCount();
                // 创建集合对象
                ArrayList<T> list = new ArrayList<T>();
                while (resultSet.next()) {
                    T newInstance = clazz.newInstance();
                    for (int i = 0; i < columnCount; i++) {
                        // 获取列值
                        Object columnValue = resultSet.getObject(i + 1);
                        // 获取每列的列名
                        String columnName = metaData.getColumnLabel(i + 1);
                        // 利用反射
                        Field field = clazz.getDeclaredField(columnName);
                        // 考虑该属性是否为私有
                        field.setAccessible(true);
                        field.set(newInstance, columnValue);
                    }
                    list.add(newInstance);
                }
                return list;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                // 关闭资源
                JdbcUtils.closeResource1(null, prepareStatement, resultSet);
            }
    
            return null;
        }
    }

      controller类-StudentServlet.java

      

    package controller;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import domain.Student;
    import model.StudentModel;
    
    /**
     * Servlet implementation class StudentServlet
     */
    public class StudentServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //调用java类处理数据
            StudentModel model = new StudentModel();
            List<Student> list = model.findAll();
            //显示到jsp页面中
            request.setAttribute("list",list);
            request.getRequestDispatcher("/jsp/list.jsp").forward(request, response);
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }

      jsp页面-list.jsp

      

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1>学生信息显示页面</h1>
        <table border="1" width="600">
            <tr>
                <td>学生编号</td>
                <td>学生姓名</td>
                <td>学生性别</td>
                <td>学生年龄</td>
            </tr>
            <c:forEach var = "student" items="${list }">
            <tr>
                <td>${student.sid }</td>
                <td>${student.sname }</td>
                <td>${student.sex}</td>
                <td>${student.age }</td>
            </tr>
            </c:forEach>
            
        </table>
    </body>
    </html>

      将web项目部署到tomcat服务器中进行访问结果如下图所示

      

    笨鸟先飞
  • 相关阅读:
    (第七周)评论alpha发布
    (第六周)工作总结
    (第六周)团队项目6
    (第六周)团队项目5
    (第六周)团队项目4
    (第六周)团队项目燃尽图
    (第六周)团队项目3
    (第六周)课上Scrum站立会议演示
    Java第二次作业第五题
    Java第二次作业第四题
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/14674074.html
Copyright © 2020-2023  润新知