• 需要的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. js和jq获取宽度和高度

    Javascript: console.log(document.body.clientWidth); //网页可见区域宽(body) console.log(document.body.client ...

  2. 在oracle表中插入空字段和null测试

    create table testTable ( id number, name ) ) select * from testTable ,'user1') ,'') ,null) select co ...

  3. angular2 文件上传

    ng2-file-upload文件上传 1.安装ng2-file-upload模块 npm install ng2-file-upload --save 2.如果使用systemjs打包,需要在配置s ...

  4. .net 流(Stream) - StreamWriter和StreamReader、BinaryReader和BinaryWriter

    转自:http://www.oseye.net/user/kevin/blog/86 一.StreamWriter和StreamReader 从上一篇博文可知文件流.内存流和网络流操作的都是字节,每次 ...

  5. 玩转Metasploit系列(第一集)

    "如果我有七个小时的时间来砍树,那么我一定会花6个小时来磨我的斧头." –Abraham Lincoln ??这句话一直引导着我做事的思路,而且从未改变过.这篇文章翻译自Offen ...

  6. calcurse 日程管理软件

    包括有命令行与界面操作两部分: 命令行操作: 1.显示所有的 appointment and events root@zsf:/etc# calcurse -a09/15/13: - 21:35 -& ...

  7. 用jq给link和script标签加随机的版本号(兼容IE5)

    $("link,script").each(function(){ var t=Math.random().toFixed(4); /*var $tag=$(this).prop( ...

  8. (二)给Centos配置网络以及使用xshell远程连接Centos

    好吧,我对网络协议以及ip配置知识的匮乏,让我在这里折腾了将近一天才搞定.可以说基本上网上遇到的问题我都遇到了.在这里,记下正确的步骤来给Centos配置网络.希望以后少走弯路. 首先我要说明的是,我 ...

  9. Cocos2d-x 3.1.1 学习日志3--C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011292087/article/details/37598919 有关const成员.stati ...

  10. tp3.2中前台模板中日期时间的转换

    {$vo.create_time|date='Y-m-d',###} 其中###是占位符