JSP+Servlet实现前端展现数据库中的数据 您所在的位置:网站首页 前端怎么从数据库获取数据信息 JSP+Servlet实现前端展现数据库中的数据

JSP+Servlet实现前端展现数据库中的数据

2024-07-09 22:55| 来源: 网络整理| 查看: 265

学了很长时间的JSP和Servlet,虽然还是没有完全的理解其中的原理,但是总会一点点的技术,这次,就来实现把数据库中的数据在前端展示出来。

一、需求

实现数据库中的数据展现在前端界面

二、设计 

技术选型:Servlet  JSP  Mysql  JDBC  Druid  BeanUtil  Tomcat  

数据库设计:这是我第一次做这个小小的案例,所以就设计一张物品表

                     id name value  三个字段,id是主键,这张的表中的值事先都是添加好的,直接使用即可

具体的设计思路如下:

 

画了一小会的思路图片,虽然不好看,但是思路很清晰,接着就是根据设计思路,写代码啦! 

三、开发

 环境搭建:创建数据库环境,创建项目导入jar包

编码如下:

导入的jar包:

 

文件的目录结构:

 这样一切都准备就绪了,那我们从哪开始写代码呢?

目前我是从dao层开始,不知道你们从哪开始?

首先写dao层:

在写dao层之前,应该先写连接数据库的工具类和一些配置文件:

DruidUtil类;

package util; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; /** * druid数据库连接池的工具类 */ public class DruidUtil { private static DataSource ds; static { //加载配置文件和建立连接池 try { Properties pro = new Properties(); InputStream resourceAsStream = DruidUtil.class.getClassLoader().getResourceAsStream("Druid.properties"); pro.load(resourceAsStream); ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * 获取数据库连接池 * @return */ public static DataSource getDataSource(){ return ds; } /** * 获取连接池中的一个连接 * @return * @throws SQLException */ public Connection getconnection() throws SQLException { return ds.getConnection(); } /** * 关闭数据库的资源 三个对象都存在时 * @param conn * @param res * @param pstmt */ public static void close(Connection conn, ResultSet res, PreparedStatement pstmt){ if (conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (res!=null){ try { res.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pstmt!=null){ try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 关闭数据库的连接(只存在Connection和PreparedStatement对象时) * @param conn * @param pstmt */ public void close(Connection conn,PreparedStatement pstmt){ if (conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pstmt!=null){ try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

Druid.properties

driverClassName = com.mysql.cj.jdbc.Driver url=jdbc:mysql:///student?serverTimezone=GMT&useSSL=false username=root password=yanzhiguo140710 #初始化连接数量# initialSize = 5 #最大连接数量 maxACtive = 10 #等待时间 3秒 maxWait = 3000

写完之后,就可以写dao层的代码了:

首先写UserDao接口,然后写UserDaoImpl的实现类

UesrDao接口:

package dao; import domain.Users; import java.util.List; public interface UsersDao { public List findAll(); }

UserDaoImpl实现类:

package dao.impl; import dao.UsersDao; import domain.Users; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import util.DruidUtil; import java.util.List; /** * dao层 操纵数据库 * 从数据库中拿出数据 传给servive层 */ public class UsersDaoImpl implements UsersDao { private JdbcTemplate template = new JdbcTemplate(DruidUtil.getDataSource()); @Override public List findAll() { String sql = "select * from goods"; List query = template.query(sql, new BeanPropertyRowMapper(Users.class)); return query; } }

这样就写完了dao层的代码

对了没还有一个重要的Javabean还没写:

package domain; /** * 用户类 把数据用类对象展示 * 相当于JavaBean */ public class Users { Integer id; String name; Integer value; public Users(Integer id, String name, Integer value) { this.id = id; this.name = name; this.value = value; } public Users(){ } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getValue() { return value; } public void setValue(Integer value) { this.value = value; } @Override public String toString() { return "Users{" + "id=" + id + ", name='" + name + '\'' + ", value=" + value + '}'; } }

Service层

根据设计思路,先写UserService接口:

package service; import domain.Users; import java.util.List; public interface UsersService { public List findAll(); }

USerServiceImpl实现类:

package service.impl; import dao.UsersDao; import dao.impl.UsersDaoImpl; import domain.Users; import service.UsersService; import java.util.List; /** * 调用dao层中Usersdao中方法 获得数据库中的数据 */ public class UsersServiceImpl implements UsersService { @Override public List findAll() { UsersDaoImpl dao = new UsersDaoImpl(); List users_list = dao.findAll(); return users_list; } }

这样Service层就写完了

view层:

这主要是处理请求的代码:

package web.servlet; import domain.Users; import service.UsersService; import service.impl.UsersServiceImpl; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @WebServlet("/userServletList") public class UserServletList extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //用service层来完成数据库的查询 UsersService usersservice = new UsersServiceImpl(); List list = usersservice.findAll(); //将数据存在数据域中 System.out.println(list); request.setAttribute("list",list); //转发到list.jsp中 request.getRequestDispatcher("/list.jsp").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }

这样三层就基本写完了,剩下的就是前端页面的展示,我在写的过程中,利用了bootstrap框架没这样,这样写代码简单。

index.jsp

志国出品 点击查看信息

list.jsp:

Title 物品列表 物品信息列表 编号 名称 价格 ${s.count} ${li.name} ${li.value}

这样就基本写完了,剩下的时间就是努力找Bug了

总结

1、Java中导入包的时候将lib文件夹变成Add as library

2、导入jar包,要注意千万别导错了!!!!

3、要熟悉jsp中的对象,以及他们的用法

4、使用EL和JSTL时,要注意使用的是否正确,别忘了$

5、写前端代码时,可以参考bootstrap文档

6、dao层的代码一定要细心,否数据都拿不出来

7、关键时Servlet的书写,这部分最难理解,还需加强

8、花了1个小时写代码,找Bug花了好几个小时,啊啊啊啊啊啊啊啊,痛苦啊,不过最终还是写出来了,还是很高兴的。

最后,希望每个人都能在这条道路上继续坚持下去,加油!!! 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有