java servlet数据库查询并将数据显示到jsp页面
- 需要的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页面的更多相关文章
- java 读取数据库中文信息,为何在jsp页面中出现乱码
有如下几种解决办法:1.保证项目的字符编码和每一个jsp页面的字符编码一致,如果不一致可能导致中文乱码问题<%@ page language="java" contentTy ...
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
找了这么久资料,总算解决了 感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html 感谢百度:http://zhidao.baidu.com/link?url ...
- 【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)
欲实现的功能目标:当点击下图的导出数据文件时弹出文件下载框,默认csv格式,用户自定义下载的本地路径 遇到的问题: 1.项目之前做过一次下载,但是是使用了本地文件模板.用输入流读取文件模板,插入数据, ...
- jsp采用数据库连接池的方法获取数据库时间戳context.xml配置,jsp页面把时间格式化成自己需要的格式
<?xml version="1.0" encoding="UTF-8"?> <!-- 数据库连接池配置文件 --> <Conte ...
- Java获得数据库查询结果的列数和行数,打印查询结果
Java连接数据库及简单操作见我以前的一篇随笔:http://www.cnblogs.com/meitian/p/5036332.html 一.获取查询结果的行数和列数 查询结果为ResultSe ...
- js获取后台json数据显示在jsp页面元素
jsp id <font size=2 >Today:</font> <font id ="todaytotal" size=2 color=&quo ...
- JSON数据显示在jsp页面上中文乱码的解决办法
在@RequestMapping属性添加属性produces = "text/html;charset=utf-8",设置字符集为utf-8即可 代码如下: @RequestMap ...
- Java Servlet 技术简介
Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...
- 【Java】Java Servlet 技术简介
Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创 ...
随机推荐
- ubuntu终端颜色设置
在 .bashrc中增加 PS1='${debian_chroot:+($debian_chroot)}\[\033[00;32m\]\u @ \h\[\033[00m\]:\[\033[00;34m ...
- 关于moucedown 的3种触发方式
与 click 事件不同 mousedown 按下鼠标就可以触发 click 只能用鼠标左键触发, 而mousedown 可以由单击.中键.或右击 触发 根据对event.which 的判断,可以 ...
- 【阿里云产品公测】ACE下上传文件永久存储实践
本帖主要内容: ;$,=VB:' 在阿里云的ACE下,我是如何实现让上传的文件永久保存的? ,%"!8T 本文以PHP为例,具体知识点如下: WD# 96V 第一,扩展服务“存储 ...
- [uva] 10067 - Playing with Wheels
10067 - Playing with Wheels 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Ite ...
- SQL UNION操作符使用
SQL UNION 操作符 SQL UNION 操作符合并两个或多个 SELECT 语句的结果. SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意 ...
- 微软在Build 2016开发者大会中发布 “认知服务”,牛津计划有正式名字啦!
2016年3月30日:微软在Build 2016开发者大会中发布“认知服务”. 在Build 2016开发者大会中,微软发布了新的智能服务:微软认知服务(Microsoft Cognitive Ser ...
- Python学习---内置函数的学习
内置函数 [Py3.5官方文档]https://docs.python.org/3.5/library/functions.html#abs Built-in Functions abs() dict ...
- git branch 进入编辑状态
命令行输入git branch,发现进入编辑状态,都要:wq,非常不方便,这样配置 git config --global core.pager ''
- empty() isset() isnull() 比较
有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚.这里再重复一次,但不是从概念去说,直接用程序例子来说话,应 ...
- POJ 3368 Frequent values 【ST表RMQ 维护区间频率最大值】
传送门:http://poj.org/problem?id=3368 Frequent values Time Limit: 2000MS Memory Limit: 65536K Total S ...