• 需要的jar包:mysql-connector-java.jar
  • build path只是个jar包的引用,部署的时候想不丢包最好还是手动拷贝到对应项目的lib文件下。
  • 在try{}中定义的变量为局部变量。
  • WEB-INF对于浏览器是无法直接通过url访问的,因此要想跳转到WEB-INF目录下必须采用服务端的foward方法而不能采用redirect方法。
  • 注意网页的编码问题,一般全采用utf-8就没乱码了。
  • 注意pageContext,request,session,application对象的scope,作用范围。

目录结构为:

首先我们创建实体类:Student

package micro.entity;

public class Student {
String name;
int no;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
} }
  • 创建dao,负责数据库的连接与关闭:
  • package micro.dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import com.mysql.jdbc.PreparedStatement; public class Dao {
    public static Connection getConnection() throws SQLException
    {
    String url = "jdbc:mysql://localhost:3306/micro";
    String username = "root";
    String password = "root";
    Connection conn = null;
    try
    {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(url, username, password);
    }
    catch(ClassNotFoundException e)
    {
    e.printStackTrace();
    }
    return conn;
    }
    public static void close(ResultSet rs,PreparedStatement ps,Connection conn) throws SQLException
    {
    try
    {
    rs.close();
    ps.close();
    conn.close();
    }
    catch(SQLException e)
    {
    e.printStackTrace();
    }
    }
    }
    • 创建查询方法类(按名字查询和按学号查询):
    • package micro.dao;
      
      import java.sql.Connection;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import micro.entity.Student; import com.mysql.jdbc.PreparedStatement; public class SearchDao {
      /**
      * @param micro
      * @return
      * @throws SQLException
      */
      // static String sql = "select * from Student where ? = ?";
      public static int getIdByName(String name) throws SQLException {
      int id = -1;
      try {
      Connection conn = Dao.getConnection();
      PreparedStatement ps = (PreparedStatement) conn
      .prepareStatement("select * from Student where name = ?");
      // ps.setString(1, "name");
      ps.setString(1, name);
      ResultSet rs = ps.executeQuery();
      // List<Student> list = new ArrayList();
      while (rs.next()) {
      id = rs.getInt("id");
      }
      Dao.close(rs, ps, conn); } catch (SQLException e) {
      e.printStackTrace();
      } return id;
      } /**
      * @param id
      * @return
      * @throws SQLException
      */
      public static String getNameById(int id) throws SQLException {
      Connection conn;
      String name = null;
      try {
      conn = Dao.getConnection();
      PreparedStatement ps = (PreparedStatement) conn
      .prepareStatement("select * from Student where id = ?");
      // ps.setString(1, "");
      ps.setInt(1, id);
      ResultSet rs = ps.executeQuery();
      while (rs.next()) {
      name = rs.getString("name");
      }
      Dao.close(rs, ps, conn); } catch (SQLException e) {
      e.printStackTrace();
      }
      return name;
      }
      }
      • 需要执行业务的servlet:
      • package micro.search;
        
        import java.io.IOException;
        import java.sql.SQLException; 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 micro.dao.SearchDao; /**
        * Servlet implementation class FindName
        */
        @WebServlet("/FindName")
        public class FindNameOrNo extends HttpServlet {
        private static final long serialVersionUID = 1L; /**
        * @see HttpServlet#HttpServlet()
        */
        public FindNameOrNo() {
        super();
        // TODO Auto-generated constructor stub
        } /**
        * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
        */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doPost(request, response);
        } /**
        * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
        */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String username = request.getParameter("username");
        int id = Integer.valueOf(request.getParameter("id")); if(!username.equals(""))
        {
        try
        {
        int no = SearchDao.getIdByName(username);
        request.setAttribute("id", no);
        }
        catch(SQLException e)
        {
        System.out.println("数据库出现异常");
        e.printStackTrace();
        }
        request.getRequestDispatcher("/WEB-INF/IdResult.jsp").forward(request, response);
        }
        else
        {
        try
        {
        String name = SearchDao.getNameById(id);
        request.setAttribute("name", name);
        }
        catch(SQLException e)
        {
        System.out.println("数据库出现异常");
        e.printStackTrace();
        }
        request.getRequestDispatcher("/WEB-INF/NameResult.jsp").forward(request, response);
        }
        } }
        • welcome.jsp页面:
        • <%@ page language="java" contentType="text/html; charset=utf-8"
          pageEncoding="utf-8"%>
          <!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>
          <form action="myQuery" method="post">
          请输入学生姓名:<input type="text" name="username" /> <br /> 请输入学生学号:<input
          type="text" name="id" /> <br /> <input type="submit" value="查询" />
          </form>
          </body>
          </html>
          • 返回学号的页面:
          • <%@ page language="java" contentType="text/html; charset=utf-8"
            pageEncoding="utf-8"%>
            <!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>
            查询结果对应的学号为:<%= request.getAttribute("id") %>
            </h1>
            <form action="welcome.jsp" method = "post" >
            <input type = "submit" value = "返回" />
            </form>
            </body>
            </html>
            • 返回名字的页面:
            • <%@ page language="java" contentType="text/html; charset=utf-8"
              pageEncoding="utf-8"%>
              <!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>
              该学号的同学名字为:<%=request.getAttribute("name")%>
              </h1>
              <form action="welcome.jsp" method="post">
              <input type="submit" value="返回" />
              </form>
              </body>
              </html>
              • web.xml:
              • <?xml version="1.0" encoding="UTF-8"?>
                <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                version="2.5">
                <servlet>
                <servlet-name>Query</servlet-name>
                <servlet-class>micro.search.FindNameOrNo</servlet-class>
                </servlet>
                <servlet-mapping>
                <servlet-name>Query</servlet-name>
                <url-pattern>/myQuery</url-pattern>
                </servlet-mapping>
                <welcome-file-list>
                <welcome-file>welcome.jsp</welcome-file>
                </welcome-file-list>
                </web-app>

java servlet数据库查询并将数据显示到jsp页面的更多相关文章

  1. java 读取数据库中文信息,为何在jsp页面中出现乱码

    有如下几种解决办法:1.保证项目的字符编码和每一个jsp页面的字符编码一致,如果不一致可能导致中文乱码问题<%@ page language="java" contentTy ...

  2. 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

    找了这么久资料,总算解决了 感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html 感谢百度:http://zhidao.baidu.com/link?url ...

  3. 【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)

    欲实现的功能目标:当点击下图的导出数据文件时弹出文件下载框,默认csv格式,用户自定义下载的本地路径 遇到的问题: 1.项目之前做过一次下载,但是是使用了本地文件模板.用输入流读取文件模板,插入数据, ...

  4. jsp采用数据库连接池的方法获取数据库时间戳context.xml配置,jsp页面把时间格式化成自己需要的格式

    <?xml version="1.0" encoding="UTF-8"?> <!-- 数据库连接池配置文件 --> <Conte ...

  5. Java获得数据库查询结果的列数和行数,打印查询结果

    Java连接数据库及简单操作见我以前的一篇随笔:http://www.cnblogs.com/meitian/p/5036332.html   一.获取查询结果的行数和列数 查询结果为ResultSe ...

  6. js获取后台json数据显示在jsp页面元素

    jsp id <font size=2 >Today:</font> <font id ="todaytotal" size=2 color=&quo ...

  7. JSON数据显示在jsp页面上中文乱码的解决办法

    在@RequestMapping属性添加属性produces = "text/html;charset=utf-8",设置字符集为utf-8即可 代码如下: @RequestMap ...

  8. Java Servlet 技术简介

    Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...

  9. 【Java】Java Servlet 技术简介

    Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创 ...

随机推荐

  1. easyui grid 增加合计行

    一.首先,easyui  grid 的 showfooter 属性设置为 true $aplgrid.datagrid({ data: globalExpenseClaimForm.ExpenseCl ...

  2. ArcGIS DataStore手册——管理篇

    第二章:ArcGIS DataStore管理维护 1.备份管理 备份的目的在于发生原始数据损坏或其他突发情况时,可避免数据丢失,并可快速的使用备份数据来恢复,以保证服务仍可使用. 单机模式下,可使用D ...

  3. 06_zookeeper原生Java API使用

    [Zookeeper构造方法概述] /** * 客户端和zk服务端的连接是一个异步的过程 * 当连接成功后,客户端会收到一个watch通知 * * ZooKeeper(String connectSt ...

  4. 基于zxing的二维码(网格)扫描

    基于zxing的二维码(网格)扫描 前言:对于二维码扫描我们使用的是开源框架Zxing或者Zbar,这里使用基于zxing的二维码扫描,类似支付宝网格扫描, 二维码原理介绍: 二维码是用某种特定的几何 ...

  5. JSON中的安全问题

    Web中使用JSON时最常见的两个安全问题: 1.跨站请求伪造: 即CSRF,是一种利用站点对用户浏览器信任发起攻击的方式.典型的就是JSON数组,更多信息请自行上网百度. 2.跨站脚本攻击. 是注入 ...

  6. 4 关于word2vec的skip-gram模型使用负例采样nce_loss损失函数的源码剖析

    tf.nn.nce_loss是word2vec的skip-gram模型的负例采样方式的函数,下面分析其源代码. 1 上下文代码 loss = tf.reduce_mean( tf.nn.nce_los ...

  7. Thinkphp中在本地测试很好,在服务器上出错,有可能是因为debug缓存的问题

    define('APP_DEBUG',false); 这个设置从true改为false后,一定要清空缓存,否则会出错.

  8. Sql Server 如何去掉内容里面的Html标签

    DECLARE @str NVARCHAR(MAX)= ' <!DOCTYPE html> <html> <head> </head> <body ...

  9. 使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期

    1.使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期: 1 var newdate = new Date(); 2 var nowyear = newdat ...

  10. ignore_user_abort函数制定计划任务

    PHP中的ignore_user_abort函数是当用户关掉终端后脚本不停止仍然在执行,可以用它来实现计划任务与持续进程,下面会通过实例讨论ignore_user_abort()函数的作用与用法.   ...