`
lixucheng
  • 浏览: 79798 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询

阅读更多
目标:
l 掌握JDBC链接数据库的基本过程;
l 掌握使用JDBC进行数据查询。
主要内容:
l 在上一次的实例基础上,通过连接数据库完成用户登录功能,介绍JDBC的基本用法;
l 通过显示所有用户信息进一步介绍JDBC的用法和查询结果的处理。
1、JDBC概念
Java Database Connectivity的缩写,用于连接Java应用程序与各种关系数据库的标准接口。对于编程人员来说,连接任何数据库都是相同的。
2、要使用JDBC开发应用需要哪些准备工作?
安装数据库,包括数据库表的创建;
根据数据库的类型,得到数据库的JDBC驱动程序,不同的数据库管理系统需要不同的JDBC驱动程序,并且不同版本的数据库管理系统需要的驱动程序有可能不同的;这里使用Oracle数据库,驱动程序需要放在WEB-INF\lib下面。
数据库的相关信息:数据库的IP地址,服务的端口号,数据库的名字,连接数据库的用户名和密码。
3、举例:使用数据库对用户登录信息进行验证。
需要修改User.java中验证用户信息的方法。
1)在类的前面增加了一个import语句:
import java.sql.*;
2)增加的后的check方法如下:
public boolean check()
{
/*
if(username==null || userpass==null)
return false;
if(username.equals("zhangsan") && userpass.equals("lisi"))
{
return true;
}else{
return false;
}
*/
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
boolean b = true;
try{
// 指出连接数据库所需要的驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立与数据库之间的连接
//myserver修改为数据库服务器IP,mydb为数据库名
con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");
// 编写查询数据库信息的SQL语句
String sql="select * from usertable where username='"+username+"' and userpass='"+userpass+"'";
System.err.println(sql);
// 创建语句对象,用于执行SQL语句
stmt = con.createStatement();
// 执行SQL语句得到结果集
rs = stmt.executeQuery(sql);
// 判断rs中是否有数据
if(rs.next())
b = true;
else
b = false;
}catch(Exception e){
System.out.println(e.getMessage());
}
finally{
// 关闭相关对象
if(rs!=null) try{ rs.close(); }catch(Exception ee){}
if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}
if(con!=null) try{ con.close(); }catch(Exception ee){}
}
return b;
}
4、运行测试
可以使用数据库中的用户名和口令进行登录。
5、向页面传递查询结果
很多时候,客户端需要从服务器端得到数据并显示,因为数据的查询是由JavaBean完成的,对JavaBean的调用是通过Servlet完成的,Servlet中可以得到查询的结果,但是显示信息是由JSP页面完成的,如何把Servlet中查询的信息传递给JSP页面呢?
前面介绍过可以通过request、session和application传递信息,因为可以让Servlet和JSP处于相同的请求,所以3个对象都可以使用。但是因为session和application的保存时间比较长,容易造成服务器资源的浪费,所以通常采用request存储。
下面通过查询并显示所有信息的功能来介绍具体用法。需要完成的工作如下:
l 在User.java中添加查询所有用户信息的方法;
l 编写查询所有用户信息的控制器;
l 编写显示信息的JSP页面。
6、在User.java中添加方法
查询所有用户信息的方法如下:
public ArrayList getAllUser()
{
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ArrayList users = new ArrayList();
try{
// 指出连接数据库所需要的驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立与数据库之间的连接
con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");
// 编写查询数据库信息的SQL语句
String sql="select * from usertable";
// 创建语句对象,用于执行SQL语句
stmt = con.createStatement();
// 执行SQL语句得到结果集
rs = stmt.executeQuery(sql);
// 遍历结果集
while(rs.next())
{
String username = rs.getString(1);
String userpass = rs.getString(2);
// java.util.Date birthday = rs.getDate(3);
// int age = rs.getInt(4);
User user = new User();
user.setUsername(username);
user.setUserpass(userpass);
users.add(user);
}
}catch(Exception e){
System.out.println(e.getMessage());
}
finally{
// 关闭相关对象
if(rs!=null) try{ rs.close(); }catch(Exception ee){}
if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}
if(con!=null) try{ con.close(); }catch(Exception ee){}
}
return users;
}
需要在类的前面引入java.util包,代码如下:
import java.util.*;
7、编写控制器
代码如下:
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javabean.*;
import java.util.*;
public class GetAllUser extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
// 第一步:获取用户的输入信息,这里不需要
// 第二步:调用JavaBean
User user = new User();
ArrayList users=null;
users = user.getAllUser();
// 第三步:传值
request.setAttribute("users",users);
// 第四步:选择一个界面对用户进行响应
String forward="userlist.jsp";
RequestDispatcher rd = request.getRequestDispatcher(forward);
rd.forward(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
doGet(request,response);
}
}
这里假设使用userlist.jsp对用户进行响应。
8、配置控制器
在Web.xml中添加如下代码:
<servlet>
<servlet-name>getAllUser</servlet-name>
<servlet-class>servlet.GetAllUser</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getAllUser</servlet-name>
<url-pattern>/getAllUser</url-pattern>
</servlet-mapping>
9、编写userlist.jsp响应
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:forEach var="user" items="${users}">
用户名:${user.username} 口令:${user.userpass}<br>
</c:forEach>
这里的c:forEach标签用于循环处理,items指出循环遍历的集合,var声明循环变量,表示集合中的一个元素。循环体中通过表达式语言显示用户信息。
10、 运行测试
http://127.0.0.1:8080/ch7/getAllUser

参考教材:Java Web程序设计基础教程

分享到:
评论

相关推荐

    从Java走向Java+EE+.rar

    第6章 JSP——前后台更好地分离 79 6.1 JSP的概念 79 6.2 JSP页面的组成 80 6.2.1 JSP的指令元素 82 6.2.2 JSP的脚本元素 83 6.2.3 JSP的标准动作元素 85 6.2.4 JSP中的内置对象 87 6.3 实例——利用...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    此外,还要考虑开发人员的水平,学习了两年的jsp开发,对于这个系统的编写,我想完整的之需要两个月就可以写出程序,再花上几天的调试,计划两个月左右就可以完成投入使用了。 我们掌握了数据库及其应用技术、...

    Spring.3.x企业应用开发实战(完整版).part2

    11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 SqlFunction类 11.7 小结 第12章 整合其他ORM框架 12.1 Spring整合ORM技术 12.2 在Spring中使用...

    Spring3.x企业应用开发实战(完整版) part1

    11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 SqlFunction类 11.7 小结 第12章 整合其他ORM框架 12.1 Spring整合ORM技术 12.2 在Spring中使用...

    低清版 大型门户网站是这样炼成的.pdf

    第7章 ssh 2热身——构建新闻发布系统 427 7.1 门户网站新闻资讯基本分类 427 7.2 新闻发布系统需求分析 429 7.3 新闻发布系统功能设计 429 7.4 新闻栏目后台管理 432 7.4.1 展示层jsp 2+struts 2 标签库实现 ...

    java web 视频、电子书、源码(李兴华老师出版)

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    李兴华Java Web开发实战经典(高清版) Part2

    7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用&lt;jsp:useBean&gt;指令 7.3、JavaBean与表单 7.4、设置属性:&lt;jsp:setProperty&gt; 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置...

    JAVA程序开发大全---上半部分

    网上这本书的电子版不好这,这是用money换来的——和大家分享! 由于书太大,我把书分成两部分别上传。 内容简介 本书系统全面地介绍了Java中的各项主流技术,以及基于这些技术的商业化应用程序的开发技巧,在讲解...

    jive.chm

    4 Jive的中文问题及解决办法 5 Java程序的国际化和本地化介绍 6 Java的i18n问题 7 Java国际化——资源包的使用 8 国际化 9 Supported Encodings 10 native2ascii - Native-to-...

    JAVA上百实例源码以及开源项目源代码

    得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...

    JAVA上百实例源码以及开源项目

    得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...

Global site tag (gtag.js) - Google Analytics