一、目标效果

1、能实现对数据库中的数据进行打印

这里的数据来自于数据库手动添加,暂时没有数据添加页面。隔行换色需要实现。

2、输入框能够实现查询工作

两个输入框都能单一和配合查询,描述支持模糊查询。

可以直接跳到末尾查看动图效果

二、工作准备

1、涉及的知识点

  • JDBC
  • JSP
  • JSTL
  • Servlet
  • EL

2、jar 包准备

  • mysql-connector-java-5.1.41-bin.jar
  • jstl.jar
  • standard.jar
  • servlet-api.jar

3、开发工具

  • IntelliJ IDEA
  • Navicat Premium

三、代码实现

1、新建数据库,micro_message。再建一个表,message。表的结构如下

2、新建 Web 项目 MicroMessage

3、新建包

com.liuyanzhao.bean,存放实体类

com.liuyanzhao.servlet,存放Servlet类,实现控制,要调用 service 类

com.liuyanzhao.dao,存放数据库操作类,增查改查等方法

com.liuyanzhao.service,存放业务功能类,调用 dao 类,返回一个数据集合

4、在 WEB-INF 下新建一个 lib 文件夹,放 jar 包,然后将 jar 包添加到环境(path)中

注意:Eclipse只需要右键 Build path;

IntelliJ IDEA 可以快捷键 Ctrl+Alt+Shift+S 打开下图,选择指定项目点击右边的绿色的 + ,添加 jar包到环境中

5、依次按顺序新建下面文件

① com.liuyanzhao.bean 下新建 Message.java

  1. package com.liuyanzhao.bean;
  2. /**
  3. * 与消息对应的实体类
  4. */
  5. public class Message {
  6. private int id;
  7. private String command;
  8. private String description;
  9. private String content;
  10. public Message() {
  11. }
  12. public int getId() {
  13. return id;
  14. }
  15. public void setId(int id) {
  16. this.id = id;
  17. }
  18. public String getCommand() {
  19. return command;
  20. }
  21. public void setCommand(String command) {
  22. this.command = command;
  23. }
  24. public String getDescription() {
  25. return description;
  26. }
  27. public void setDescription(String description) {
  28. this.description = description;
  29. }
  30. public String getContent() {
  31. return content;
  32. }
  33. public void setContent(String content) {
  34. this.content = content;
  35. }
  36. }

② com.liuyanzhao.servlet 下新建 ListServlet.java

  1. package com.liuyanzhao.servlet;
  2. import com.liuyanzhao.service.ListService;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.io.IOException;
  8. /**
  9. * 列表页面初始化控制
  10. */
  11. public class ListServlet extends HttpServlet {
  12. @Override
  13. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14. //解决乱码
  15. request.setCharacterEncoding("utf-8");
  16. //接受表单内容
  17. String command = request.getParameter("command");
  18. String description = request.getParameter("description");
  19. //向页面传值
  20. request.setAttribute("command",command);
  21. request.setAttribute("description",description);
  22. //业务需要
  23. ListService listService = new ListService();
  24. //查询消息列表并传给页面
  25. request.setAttribute("messageList",listService.queryMessageList(command,description));
  26. //向页面跳转
  27. request.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(request,response);
  28. }
  29. @Override
  30. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  31. this.doGet(req, resp);
  32. }
  33. }

③ 在WEB-INF 下 新建 web.xml,给 Listservlet 类添加映射

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  5. version="3.1">
  6. <servlet>
  7. <servlet-name>ListServlet</servlet-name>
  8. <servlet-class>com.liuyanzhao.servlet.ListServlet</servlet-class>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>ListServlet</servlet-name>
  12. <url-pattern>/List.action</url-pattern>
  13. </servlet-mapping>
  14. </web-app>

④ 在 WEB-INF 下新建一个文件夹 名 jsp,在 jsp内新建一个文件夹 名back,在 back 下新建 list.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  7. %>
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  11. <meta http-equiv="X-UA-Compatible"content="IE=9; IE=8; IE=7; IE=EDGE" />
  12. <title>内容列表页面</title>
  13. <link href="<%=basePath%>resources/css/all.css" rel="stylesheet" type="text/css" />
  14. </head>
  15. <body style="background: #e1e9eb;">
  16. <form action="<%=basePath%>List.action" id="mainForm" method="post">
  17. <div class="right">
  18. <div class="current">当前位置:<a href="javascript:void(0)" style="color:#6E6E6E;">内容管理</a> &gt; 内容列表</div>
  19. <div class="rightCont">
  20. <p class="g_title fix">内容列表 <a class="btn03" href="#">新 增</a>&nbsp;&nbsp;&nbsp;&nbsp;<a class="btn03" href="#">删 除</a></p>
  21. <table class="tab1">
  22. <tbody>
  23. <tr>
  24. <td width="90" align="right">指令名称:</td>
  25. <td>
  26. <input name="command" type="text" class="allInput" value="${command}"/>
  27. </td>
  28. <td width="90" align="right">描述:</td>
  29. <td>
  30. <input name="description" type="text" class="allInput" value="${description}"/>
  31. </td>
  32. <td width="85" align="right"><input type="submit" class="tabSub" value="查 询" /></td>
  33. </tr>
  34. </tbody>
  35. </table>
  36. <div class="zixun fix">
  37. <table class="tab2" width="100%">
  38. <tbody>
  39. <tr>
  40. <th><input type="checkbox" id="all" onclick="#"/></th>
  41. <th>序号</th>
  42. <th>指令名称</th>
  43. <th>描述</th>
  44. </tr>
  45. <c:forEach items="${messageList}" var="message" varStatus="status">
  46. <tr <c:if test="${status.index % 2!= 0}">style="background-color:#ECF6EE;"</c:if>>
  47. <td><input type="checkbox" /></td>
  48. <td>${status.index+1}</td>
  49. <td>${message.command}</td>
  50. <td>${message.description}</td>
  51. </tr>
  52. </c:forEach>
  53. </tbody>
  54. </table>
  55. </div>
  56. </div>
  57. </div>
  58. </form>
  59. </body>
  60. </html>

注意:

  • jsp 中的css样式和图片这里就不添加了,这里主要还是学习 JavaWeb,主要还是 看 form 标签之前的内容
  • 第四行的 jstl 核心库
  • bathPath 是获得 根目录的路径,即 index.php的路径
  • ${command} 和 ${description} 是 EL 表达式,通过 Servlet 传值
  • <c:forEach> 和 <c:if> 都是 jstl 的内容

⑤ com.liuyanzhao.dao 下新建 MessageDao.java

  1. package com.liuyanzhao.dao;
  2. import com.liuyanzhao.bean.Message;
  3. import java.sql.*;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. /**
  7. * 和message表相关的操作
  8. */
  9. public class MessageDao {
  10. /**
  11. * 根据查询条件查询消息列表
  12. */
  13. public List<Message> queryMessageList(String command,String description) {
  14. List<Message> messageList = new ArrayList<Message>();
  15. //数据库连接
  16. try {
  17. Class.forName("com.mysql.jdbc.Driver");
  18. Connection conn = null;
  19. conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/micro_message" +
  20. "?useUnicode=true&characterEncoding=utf8","root","");
  21. StringBuilder sql = new StringBuilder(" SELECT id,command,description,content FROM message where 1=1 ");
  22. List<String> paramList = new ArrayList<String>();
  23. if(command != null && !"".equals(command.trim())) {
  24. sql.append(" and command=? ");
  25. paramList.add(command);
  26. }
  27. if(description != null && !"".equals(description.trim())) {
  28. sql.append(" and description like '%' ? '%' ");
  29. paramList.add(description);
  30. }
  31. PreparedStatement ptmt = conn.prepareStatement(sql.toString());
  32. for (int i=0;i<paramList.size();i++) {
  33. ptmt.setString(i+1,paramList.get(i));
  34. }
  35. ResultSet rs =  ptmt.executeQuery();
  36. while (rs.next()) {
  37. Message message = new Message();
  38. messageList.add(message);
  39. message.setId(rs.getInt("id"));
  40. message.setCommand(rs.getString("command"));
  41. message.setDescription(rs.getString("description"));
  42. message.setContent(rs.getString("content"));
  43. }
  44. } catch (ClassNotFoundException e) {
  45. e.printStackTrace();
  46. } catch (SQLException e) {
  47. e.printStackTrace();
  48. }
  49. return messageList;
  50. }
  51. }

注意:

  • 第 27 行,SELECT 所有要查询的字段,不要用 SELECT *
  • sql 语句最好前后都加个 空格,因为空格是分隔符
  • 第 35 行,模糊查询处,问号的两边别忘了加空格
  • messageList 定义在 try 外面,防止异常出现,空指针
  • 因为我们查询的是不是单条语句,是多条的,所以用集合,而不用对象

⑥ com.liuyanzhao.service 下新建 ListService.java

  1. package com.liuyanzhao.service;
  2. import com.liuyanzhao.bean.Message;
  3. import com.liuyanzhao.dao.MessageDao;
  4. import java.util.List;
  5. /**
  6. *列表相关的业务功能
  7. */
  8. public class ListService {
  9. public List<Message> queryMessageList(String command, String description) {
  10. MessageDao messageDao = new MessageDao();
  11. return messageDao.queryMessageList(command,description);
  12. }
  13. }

四、运行程序

1、配置 Tomcat 服务器,并启动

2、运行结果如下

本文地址:https://liuyanzhao.com/5502.html

JDBC+Servlet+JSP实现简单的数据遍历和查找功能相关推荐

  1. mysql员工管理系统_简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    java java8 java开发 简单的员工管理系统(Mysql+jdbc+Servlet+JSP) 员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用my ...

  2. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之14.Servlet请求头信息

    –典型的请求头信息 –读取HTTP请求头 –使用表格显示所有请求头信息 –理解各种请求头的含义 –区分不同的浏览器类型 ##############Michael分割线################ ...

  3. 基于javaweb的慢病报销管理信息系统(java+mysql+jdbc+servlet+jsp)

    基于javaweb的慢病报销管理信息系统(java+mysql+jdbc+servlet+jsp) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...

  4. 基于javaweb+jsp的生病慢病报销管理信息系统(java+MySQL+Jdbc+Servlet+Jsp)

    基于javaweb+jsp的生病慢病报销管理信息系统(java+MySQL+Jdbc+Servlet+Jsp) 一.项目简述 功能: 慢病管理,医疗机构管理,家庭管理,费用交纳,费用报销,报表统计等等 ...

  5. javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统(功能包含登录、用户管理、住客信息管理、房型管理、房间管理、会员星级管理、订单管理等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的酒店客 ...

  6. JDBC+Servlet+JSP整合开发之22.JSP简介

    –对JSP的需求 –JSP的结构 –JSP的好处 –JSP实例 ?创建一个简单的JSP页面 ########################################### ? JSP –JSP ...

  7. JDBC+Servlet+JSP整合开发之26.JSP内建对象

    –使用内建对象的目的  –内建对象  –out 内建对象  –request 内建对象  –response 对象  –session 内建对象  –pageContext 内建对象  –applic ...

  8. Java项目:慢病报销管理信息系统(java+MySQL+Jdbc+Servlet+Jsp)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能: 慢病管理,医疗机构管理,家庭管理,费用交纳,费用报销,报表统计等等功能. 二.项目运行 环境配置: Jdk1.8 + ...

  9. jsp员工管理系统mysql_简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用mysql+jdbc+Struts2+bootstrap做成了一个ATM系统(主要有对数据的增删改查操作), ...

  10. 员工管理系统之mysql_简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    员工管理系统 由于学业要求,须要完成一个过关检测,可是由于检测以前没有作好准备,且想到以前用mysql+jdbc+Struts2+bootstrap作成了一个ATM系统(主要有对数据的增删改查操做), ...

最新文章

  1. 机器学习开发的灵药:Docker容器
  2. 计算机视觉经典任务分类
  3. Navicat for Oracle Cannot load OCI DLL
  4. 拉力赛 (Standard IO)
  5. 怎么判断是不是欧拉回路_儿科医生分享:宝宝好动调皮?怎么判断孩子是不是多动症...
  6. 阿里云能耗宝发布,助力中小企业绿色升级,参与碳中和万亿市场
  7. Asp.Net中global.asax文件的描述
  8. paip.百度空间 JAVA程序发文总结
  9. C# action 返回值_C#与ABB机械手建立通信,并控制机械手动作 - 龙拓电子
  10. Palo Alto推出全新Traps高级终端功能,强化勒索软件防御优势
  11. matlab weibpdf函数,MATLAB常用函数
  12. java计算机毕业设计基于web旅游网站的设计与实现源码+数据库+系统+lw文档+mybatis+运行部署
  13. linux下find搜索jpg格式图片,Linux文件查找命令-find
  14. 如何解决word添加脚注后正文跑到下一页的问题
  15. Redis分布式锁真的安全吗?
  16. mysql中column的用法_关于MySQL的一些用法
  17. 为计算机房的电脑安装防火墙和杀毒软件,杀毒软件和防火墙的关系,哪个重要...
  18. 【C语言程序设计】C语言求最小公倍数(详解版)!
  19. MobSDK如何轻松实现App社会化功能及免费短信验证功能
  20. xfs文件系统恢复工具xfs_undelete

热门文章

  1. boxplot函数--Matplotlib
  2. 湖北省首条短途运输航线“荆门—武汉”航线运营
  3. js弹出框、遮罩层、可拖动学习
  4. 一键安装Tengine服务器,TengineRPM(LTMP)构建高效、稳定、安全、易用的Web平台
  5. 学会写出"图形界面+数据库"的程序要多长时间?
  6. 程序员——知识 [转载]
  7. 2、使用Keras构建回归模型
  8. 浏览器中调用Linux程序,一个可以使用浏览器通过ssh连接linux的程序
  9. 多表查询过滤重复数据_数据分析工具SQL—多表查询
  10. 1小时学会jQuery,全程无废话,直接上代码