`

Java Web快速入门——第5讲

阅读更多

1、JavaBean
 
    JavaBean是使用Java语言编写的组件。组件是组成一个大的系统的一部分,并且组件能够完成特定的功能,能够共享。
    可以认为JavaBean是Java类,但是具有特定的功能,并且这些功能是共享的。例如,连接数据库的功能可以封装单独的Java类,常用处理方法可以封装成JavaBean。

2、早期的JSP中提供的对JavaBean的支持

   <jsp:useBean>标签用于定义JavaBean的对象;<jsp:setProperty>标签用于设置JavaBean的属性;<jsp:getProperty>用于获取并输出JavaBean的属性。
   因为Java Web中,很少在JSP中直接访问JavaBean,所以实际上这些标签几乎没有用。现在主要在Servlet中访问JavaBean。

3、JavaBean的编写和用法

   例:以用户信息验证为例介绍JavaBean的编写。
 
   1)声明包
package bean;

   2)引入相应的类或者包
import java.sql.*;
// java.sql是访问数据库所需要的包

   3)类头的定义
public class UserBean

   4)成员变量
private String username;
private String userpass;

   5)构造方法
// JavaBean要求应该提供一个无参数的构造方法
   public UserBean(){
   }

   public UserBean(String username,String userpass){
      this.username = username;
      this.userpass = userpass;
   }

   6)对属性进行操作的方法
   包括获取属性值的方法和对属性进行赋值的方法。
   命名方法:
   对于普通属性来说,如果属性为a,应该提供setA(属性类型 a)方法和getA()方法。
   对于布尔类型的属性来说,应该提供类似于isA()方法。
   public void setUsername(String username){
      this.username = username;
   }

   public String getUsername(){
      return username;
   }

   public void setUserpass(String userpass){
      this.userpass = userpass;
   }

   public String getUserpass(){
      return userpass;
   }

   7)功能类方法
   该JavaBean完成的功能是判断用户信息是否合法,需要在JavaBean中编写相应的方法。  
   public boolean login(){
      return username.equals(userpass);
   }

   8)编译JavaBean
   9)部署
   所有的Java类都应该放在WEB-INF下面的classes下面,所以该JavaBean也应该放在这个地方。

4、使用JDBC的准备工作

   JDBC是Java DataBase Connectivity的缩写,是一组标准的接口,用于完成Java应用与各种数据库之间的交互。
   要使用JDBC需要做哪些准备工作?
   1)创建数据库
   2)得到JDBC驱动程序,驱动程序是完成具体的交互过程的,每种数据库有自己特定的驱动程序,从数据库管理系统的提供商的网站下载
   3)要知道数据库的相关信息:JDBC驱动程序的名字、数据库的位置、数据库的端口、用户名和口令、url的格式(建立连接的时候用)
   注意:我们使用JDBC-ODBC桥的方式连接数据库。JDBC-ODBC桥是一种类型的驱动程序,共有4种类型的驱动程序,JDBC-ODBC桥是建立在ODBC数据源基础上的。驱动是JDK中附带的,不用下载。

5、创建数据库及测试数据
create table usertable
(
   username varchar(10) primary key,
   userpass varchar(10)
)
insert into usertable values('lisi','lisi');
insert into usertable values('zhangsan','zhangsan');

6、创建ODBC数据源
   在 开始--〉设置--〉控制面板-->管理工具--〉数据源(ODBC)  设置ODBC数据源的名字为bookstore
7、修改login方法,通过数据库进行验证
   1)使用JDBC连接数据库的基本过程
   加载驱动程序;
   建立与数据库之间的连接;
   创建一个执行SQL语句的语句对象;
   编写要执行的SQL语句;
   使用语句对象执行SQL语句;
   如果有结果,需要对结果进行处理;
   关闭相关对象;
   注意:异常处理。

   2)修改login方法
   public boolean login() throws Exception{
      // return username.equals(userpass);
      // 第一步:加载驱动程序,如果使用其它的驱动程序,写出相应的名字即可
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

      // 第二步:建立连接,第一个参数是url(定位数据库),第二个参数是用户名,第三个参数是口令
      Connection con = DriverManager.getConnection("jdbc:odbc:bookstore","","");  // bookstore是所创建的ODBC数据源的名字

      // 第三步:创建SQL语句
      String sql = "select * from usertable where username=? and userpass=?";

      // 第四步:创建语句对象,用于执行SQL语句的
      PreparedStatement stmt = con.prepareStatement(sql);

      // 对变量赋值,第一个参数表示变量的序号(第几个问号),第二个参数表示所赋的值
      stmt.setString(1,username);
      stmt.setString(2,userpass);

      // 第五步:执行SQL语句,因为有查询结果,所以使用executeQuery方法,结果保存在rs中
      ResultSet rs = stmt.executeQuery();

      //  rs相当于一个表格,有若干行、若干列组成,指针指向第一条记录的前面
      // 第六步:对结果进行处理,使用next方法进行遍历,使用get方法得到当前行的列
      boolean b = rs.next();

      // 第七步:关闭相关对象
      rs.close();
      stmt.close();
      con.close();

      return b;     
   }

   3)修改LoginProcessServlet.java

修改后的代码为:

package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import bean.*;

public class LoginProcessServlet extends HttpServlet
{
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
        // 获取用户输入的信息
        String username = request.getParameter("username");
        String userpass = request.getParameter("userpass");

        // 调用JavaBean,创建对象、初始化、然后调用方法
        UserBean user = new UserBean();
        user.setUsername(username);
        user.setUserpass(userpass);
        boolean b = false;
        try{
            b = user.login();
        }catch(Exception e){
            // 当产生异常的时候,把异常信息输出在界面上
                // 设置编码方式
                response.setContentType("text/html;charset=gb2312");
                // 得到输出流对象
                PrintWriter out = response.getWriter();
                out.println(e.toString());
                return;
        }

        // 转向响应界面
        if(b){
           RequestDispatcher rd = request.getRequestDispatcher("success.jsp");  // 跳转到成功的页面
           rd.forward(request,response); // 完成跳转
        }else{
           RequestDispatcher rd = request.getRequestDispatcher("index1.jsp");  // 跳转到登录页面
           rd.forward(request,response); // 完成跳转
        }
/*
        if( username.equals("zhangsan") && userpass.equals("zhangsan") )
        {
           RequestDispatcher rd = request.getRequestDispatcher("success.jsp");  // 跳转到成功的页面
           rd.forward(request,response); // 完成跳转
        }else
        {
           RequestDispatcher rd = request.getRequestDispatcher("index1.jsp");  // 跳转到登录页面
           rd.forward(request,response); // 完成跳转
        }
*/
  }

  public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
     doGet(request,response);
  }

}


找到:
        boolean b = user.login();
修改为:     
        boolean b = false;
        try{
            b = user.login();
        }catch(Exception e){
            // 当产生异常的时候,把异常信息输出在界面上
                // 设置编码方式
                response.setContentType("text/html;charset=gb2312");
                // 得到输出流对象
                PrintWriter out = response.getWriter();
                out.println(e.toString());
                return;
        }

分享到:
评论

相关推荐

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    第5章 Web应用的缔造者 ——Servlet技术 5.1 本章学习任务 5.1.1 本章知识体系 5.1.2 实例开发任务 5.2 与时俱进——了解Servlet技术 5.2.1 初步认识Servlet 5.2.2 Servlet与JSP的区别 5.3 为我所用——Servlet技术...

    深入体验Java Web开发内幕

    4.2 Servlet开发入门  4.3 Servlet的特点及运行过程  4.4 ServletConfig接口  4.5 GenericServlet与HttpServlet类  4.6 ServletContext接口  4.7 思考与实践 第5章 HttpServletResponse的...

    JSP2.0技术手册part5

    本书图文并茂,以丰富的实例为引导,全面介绍了主流的Java Web开发技术——JSP2.0,重点介绍JAVA在展示层的两项重要技术:Java Servlet 与JavaServer Pages。它们是最重要的Java核心技术。对这两项技术的深入了解,...

    Eclipse+Web开发从入门到精通(实例版)

    第4 章 在 Eclipse 中进行资源构建 ——Ant 使用实例... 60 4.1 Ant 简介... 60 4.1.1 构造文件的主要标记... 60 4.1.2 Ant 的常用任务(Task)... 62 4.2 Eclipse 与Ant 的集成... 64 4.2.1 创建Ant...

    学通Java的24堂课

    第5堂课 数组应用 131 第6堂课 面向对象编程 155 第7堂课 字符串处理 189 第2部分 提高篇 第8堂课 类的继承与多态特性 219 第9堂课 其他类特性与异常处理 257 第10堂课 swing编程基础 283 第11堂课 多线程...

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

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

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

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    android开发入门与实战(下)

    第5章 千里之行始于足下——第一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 ...

    android开发入门与实战(上)

    第5章 千里之行始于足下——第一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 ...

    《Google Android开发入门与实战》.pdf

    第5章 千里之行 始于足下——第一个应用helloworld 52 5.1 helloworld应用分析 52 5.1.1 新建一个android工程 52 5.1.2 填写工程的信息 52 5.1.3 编程实现 53 5.1.4 运行项目 54 5.2 调试项目 ...

    Python编程入门经典

    第5章 函数 67 5.1 将程序放在单独的文件中 67 5.2 函数:在一个名称下聚集 代码 69 5.2.1 选择名称 70 5.2.2 在函数中描述函数 70 5.2.3 不同的位置相同的名称 72 5.2.4 添加注释 73 5.2.5 要求函数使用提供的值 73...

    android开发入门教程

    第16章 Android综合案例五——手机信息查看助手 16.1 手机信息查看助手功能规划和可行性分析 16.1.1 手机信息查看助手功能规划 16.1.2 手机信息查看助手可行性分析 16.2 手机信息查看助手功能实现 16.2.1 手机信息...

    Google.Android开发入门与实战

    第5章 千里之行始于足下——第一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 ...

    Google Android开发入门与实战的代码

    第5章 千里之行 始于足下——第一个应用HelloWorld 52 5.1 HelloWorld应用分析 52 5.1.1 新建一个Android工程 52 5.1.2 填写工程的信息 52 5.1.3 编程实现 53 5.1.4 运行项目 54 5.2 调试项目 ...

    Java数据库编程宝典3

    第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 5.4.1 DriverManager 5.4.2 驱动程序 5.4.3 连接 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    第5 章 Spring Boot 基础 122 5.1 Spring Boot 概述 122 5.1.1 什么是Spring Boot 122 5.1.2 Spring Boot 核心功能 122 5.1.3 Spring Boot 的优缺点 124 5.1.4 关于本书的Spring Boot 版本 124 5.2 Spring Boot 快速...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    第5 章 Spring Boot 基础 122 5.1 Spring Boot 概述 122 5.1.1 什么是Spring Boot 122 5.1.2 Spring Boot 核心功能 122 5.1.3 Spring Boot 的优缺点 124 5.1.4 关于本书的Spring Boot 版本 124 5.2 Spring Boot 快速...

Global site tag (gtag.js) - Google Analytics