Your SlideShare is downloading. ×
Jsp讲义
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Jsp讲义

1,058
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,058
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JSP 讲义
    • JSP 技术概述
    • JSP 的运行环境
    • JSP 的核心技术
    • JSP 的组件技术
    • JSP 的数据库技术
    • Servlet 技术
  • 2.
    • 为何要学习 Jsp
    • JSP 的工作 原理
    • JSP 的页面 形态
    • 学好 JSP 的综合 要素
    JSP 技术概述
  • 3. Jsp 技术 概述 : 网页技术的演变
    • 网页技术经历的四个阶段
    • Html - >CGI - >PHP 、 ASP - >JSP
      • 静态网页和 动态 网页
      • 网页内容的自动更新功能及与用户的交互功能
      • 数据库技术的产生
    • JSP 介绍
    • 动态网页技术的 比较
  • 4. 动态网页技术
    • HTML 只有静态页面显示功能
    • CGI (公共网关接口)早期的动态网页技术
      • 实现 web 应用程序由静态到动态的变革
      • 可用不同的语言编写 , 脚本程序处理客户请求并做出响应 ,编程难,效率低,修改复杂
    • 微软的 ASP
      • VB 简单易学 , 安装方便 (IIS), 对机器要求不高
      • 传统的即时编译,效率低,安全性、稳定性差 , 仅限于 windows 系列的操作平台
  • 5. 动态网页技术
    • PHP
      • 简单易学 , 可跨平台 , 安全性好
      • 安装复杂 , 没有组件支持 , 缺少配套软件
    • SUN 公司的 JSP
    • ASP 、 JSP 的共同点
      • 都是 HTML 内嵌式语言 , 内嵌不同的脚本代码
      • 脚本程序在服务器端运行
      • 将生成的 HTML 页面返回给客户端
  • 6. Jsp 技术 概述 : 动态网页技术的比较 较差 较好 好 扩展性 Windows 和 unix windows 绝大部分 运行平台 简单 简单 容易掌握 难易程度 较大 较大 较小 运行耗损 较快 较快 快 运行速度 php asp jsp
  • 7. 动态网页技术的比较 较广 较广 较广 应用程度 不支持 支持 支持 对组件的支持 支持 不支持 支持 对 xml 的支持 较多 较少 多 厂商支持 多 多 多 数据库支持 多 较少 多 函数支持 好 较差 好 安全性 php asp jsp
  • 8. Jsp 技术 概述 : Jsp 特点
    • 可将页面的显示和页面的逻辑相分离
      • 用 Html 或 xml 标识设计页面
      • 用 jsp 标识或 java 脚本程序生成动态内容,并封装在 JavaBean 中
    • 生成可复用的组件(效率高 )
      • 将复杂的或常用的功能封装在组件中
      • 可数据共享,加速开发过程
    • 采用标识简化页面的开发
    • 一次编写,随处运行 (代码的可移植性)
    • 一次编译,一直运行 (代码执行效率高)
  • 9. JSP 特点
    • 支持绝大部分平台 (可跨平台操作)
      • JSP 独特的运行方式决定
      • 编译后生成的不是特定机器的可执行码,而是独立于处理器结构的字节代码。
    • JSP 通过 JAVA 可以访问几乎所有的数据库
      • 因为 Java 连接数据库技术是 JDBC 和 JDBC- ODBC 桥。
  • 10. Jsp 技术 概述 :为何使用 Jsp 小结
    • 随着 internet 的发展,动态 Web 页面被广泛使用
    • Jsp 是由 servlet 发展起来的,所以具有 servlet 所具有的强大功能,又因为 JSP 在编写上简单,又不需要手工编译,所以被广泛使用。
    • Jsp 是基于 Java 语言的,所以具有 Java 语言所具有的强大功能,如它的跨平台可操作性,安全性,快速性,以及在网络数据库应用上的优势。
    • B/S 模式比 C/S 模式简单,且更容易维护,被更加广泛的使用。
  • 11. JSP 的工作原理
    • 执行 HTML 页面请求,输入 URL 地址 ( http://www.netmen9.com/index.html )
    客户端 (IE) Web 服务器 http 请求 http 响应 index.html login … .
  • 12. JSP 的工作原理
    • HTML 工作原理
    • http://www.netmen9.com/index.html
    • 客户通过 web 浏览器向 web 服务器发送一个 Http 请求,即通过 http 协议向运行在域名为 netmen9.com 主机名为 www 的 web 服务器发送一个对 index.html 内容的请求,主机 web 服务器响应后,取出 index.html 文档发送到客户机,然后客户机把文档显示在用户界面上。
  • 13. JSP 工作原理图
    • 执行 JSP 页面请求 , 输入 URL 地址 http://www.netmen9.com/index.jsp
  • 14. Jsp 技术 概述 : JSP 的工作原理
    • JSP 工作原理 http://www.netmen9.com/index.jsp
    • 客户端通过 web 浏览器向 web 服务器发送一个 Http 请求, web 服务器判断后 (.jsp 扩展名 ), 由 JSP 引擎把 JSP 页面转换成中间代码 (.java) , JSP 引擎再调用服务器端的 Java 编译器对中间代码 (servlet) 进行编译,将中间代码变成字节代码 (.class), 再由 Java 虚拟机执行此字节代码,最后将结果以 html 页面的形式返回给客户端 。
  • 15. Jsp 技术 概述 : JSP 的页面形态
    • 它的页面结构很类似于 Microsoft 公司推出的 ASP 。 传统的 HTML 文件中加入 JAVA 代码片断, JAVA 代码内嵌在 “ <% %>” 标记符中
    • 页面组成
    • HTML 标识符
    • JSP 指令标识符
    • <% java 代码片断 %>
  • 16.
    • <% @ page language=“java” %>
    • <html>
    • <head>
    • <title> 标题 </title>
    • </head>
    • <body>
    • <% =“ hello world”%>
    • </body>
    • </html>
    Jsp 技术 概述 : JSP 的页面形态
  • 17. JSP 的页面形态及位置
    • <%@ page language=java %>
    • <html>
    • <head>
    • <title> 标题 </title>
    • <script> JavaScript 代码 </script>
    • </head>
    • <body>
    • <% Java 代码片断 %>
    • </body>
    • </html>
  • 18. Jsp 技术 概述 : 学好 JSP 的综合要素
    • 掌握 HTML 语言 : 可轻松建立 JSP 的表示页面。
    • 熟悉 Java 语言 : 特别是正确使用 Java 的类、接口和方法,可简单实现应用程序的功能 , 使得静态页面动态化,轻松连接数据库。
    • 掌握 JavaScript: 可控制浏览器及其页面资料 , 检查用户提交的窗体内容,使页面更规范更生动。
    • 掌握 Dreamweaver 页面排版软件 : 创建 显示页面更方便、更快捷。
  • 19. 学好 JSP 的综合要素
    • 掌握 taglib 标签技术
    • 了解 MVC 设计模式
    • 掌握 Struts 框架技术
    • 掌握 JBuilder 集成开发工具
  • 20. JSP 的运行环境
    • JAVA 运行环境如:包含 JAVA 编译器、 JAVA 虚拟机、 JDBC-ODBC 桥、 Java 类库等。
    • jdk1.4.1
    • JSP 服务器:
    • 用于转换 JSP 页面并充当 web 服务器的功能
    • 如: jswdk 、 tomcat 、 resin 、 WebLogic
    • 安装 Jdbc 驱动程序:用于连接数据库
    • JSP 开发编辑工具:
    • UltraEdit 、 HomeSet 、 EditPlus 等
    • JBuilder ( 集成开发工具 )
    • 安装和配置数据库如: Access 、 SQLServer 、 Oracle 、 Sybase 、 MySQL
  • 21. 运行 Web 应用程序要点
    • 设置环境 变量 : 为了能在任何目录下被访问。
    • 协议必须是 Http 协议: 因为它是 web 服务器支持的协议。
    • 缺省端口号 : 8080 (可更改 server.xml 文件)
    • 缺省主机名 : localhost 或 127.0.0.1
    • 默认页面地址 :
    • index.jsp 、 index.html 、 index.htm ( 可更改 web.xml 配置文件 )
  • 22. 设置运行 JSP 的环境变量
    • 开始-设置-控制面板-系统-高级-环境变量
    • JAVA_HOME: 表示 java 安装的目录 ( 新建或添加 )
    • CLASSPATH: 指向 java 类库(新建或添加 )
    • PATH: 指向可执行程序的路径 ( 添加 )
    • 例如下面的设置 :
    • JAVA_HOME: C:jdk1.4.1
    • CATALINA_HOME:Cjakarta-tomcat-5.0.27
    • CLASSPATH: C:jdk1.3lib ools.jar;C:jdk1.3libdt.jar;.
    • PATH: C:jdk1.3in;.
  • 23. Jsp 在 tomcat 上的运行环境 Jakarta-tomcat5.0.27 conf 目录下 web.xml ( 系统配置文件 ) Jakarta-tomcat5.0.27 conf 目录下 server.xml ( 系统配置文件 ) httpd : //localhost : 8080 测试 (IE 浏览器 ) omcat5.0/bin shutdown.bat 关闭 服务器 omcat5.0/bin startup.bat 启动服务器 系统默认路径 Windows 2000 OS tomcat Webserver
  • 24. Jakarta-tomcat5.0.27 webappsROOT 的子目录下 应用程序 .jsp.js .css.html 等程序 Jakarta-tomcat5.0.27 webappsROOTWEB-INF classes 的子目录 ( 包名 ) 下 JavaBean 或 servlet 编译后生成的 .class 文件 Jakarta-tomcat5.0.27 webappsROOTWEB-INF 应用配置文件 web.xml 系统默认位置 重要文件
  • 25. 开发第一个 jsp 程序
    • <html>
    • <head>
    • <title> 第一个 JSP 程序 </title>
    • </head>
    • <body>
    • <font face = &quot; 宋体 &quot;><font size=&quot;+2&quot;>
    • <center>
    • Hello World !
    • <p>
    • </body>
    • </html>
  • 26. 开发第一个 jsp 程序
    • <% ! String Greeting;%>
    • <%Greeting=&quot;Hello World !!&quot; ; %>
    • <% = Greeting%>
    • <p>
    • <%
    • String Greeting3=&quot;world !!!&quot;;
    • out.println(&quot;hello,&quot;+ Greeting3);
    • %>
    • <p>
    • <%!String Greeting1=&quot; 你好,世界 !!!!&quot;;%>
    • <%=Greeting1%>
    • <p>
    • <%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=gb2312&quot;%>
  • 27. 开发第一个 jsp 程序
    • <!— 注释 -->
    • <!-- Today is <%= new java.util.Date().toLocaleString() %> -->
    • <%-- This comment will not be visible --%>
  • 28. Jsp 核心技术
    • Jsp 脚本元素及实例
    • Jsp 指令元素及实例
    • Jsp 动作元素及实例
    • Jsp 内置对象及实例
  • 29. 事件举例
    • Submit 提交按钮激活 onsubmit() 事件
    • Button 按钮激活 onclick() 事件
    • <form action=&quot;User_List.jsp&quot; name=form1 id=form1 onsubmit=&quot;return confirm(' 您确定要删除吗? ')&quot; >
    • <a href=&quot;http://www.sina.com.cn&quot;
      • onMouseOver=&quot;StatusMsg(' 中国最全的新闻网站 ');
      • return document.returnValue&quot;> 新浪网 </a>
    • <input type=&quot;button&quot; id=&quot;reset&quot; name=&quot;reset&quot; value=&quot; 返回 &quot; onclick=&quot;javascript:history.go(-1)&quot; >
  • 30. Jsp 核心 技术 : Jsp 脚本元素及实例
    • “ 通常的 HTML”+“ <% 程序段 %>”==“JSP”
    • 扩展名为 .jsp
    • JSP 有下面所示的几种形式。
    • 1 、 注释 : <%-- 注解 --%>
    • 2 、 声明 : <%! 声明 %>
    • 3 、 表达式 : <%= 表达式 %>
    • 4 、 程序段 : <% 程序代码段 %>
  • 31. Jsp 核心 技术 : 注释 :<%-- 注解语 --%> 写在 JSP 程序中,但不会显示在客户的 HTML 源代码中 <%-- comment --%> <% // 单行注释 /** */ 多行注释 %> 隐 藏 注 释 写在 JSP 程序中,并显示在客户端 HTML 源代码中 <!-- comment --> <!-- comment [ <%= expression %> ]--> 显 示 注 释 描述 JSP 语法
  • 32. Jsp 核心 技术 : 注释实例
    • 实例
    • <!-- 此页面 <%=new java.util.Date()% > 被读取 -->
    • <!-- Today is <%= new java.util.Date().toLocaleString() %> -->
    • <%-- Today is <%= new java.util.Date().toLocaleString() %> --%>
    • <%-- This comment will not be visible --%>
  • 33. Jsp 核心 技术 : 声明: <%! 声明 %>
    • 声明你将要在 JSP 中用到的类、变量、方法等如下面所示:
    • <!-- 声明的同时可赋初值 -->
    • <HTML>
    • ……
    • <%! int i = 0 ; %>
    • <%! int a, b, c ; %>
    • <%! String a =“hello” ; %>
    • ……
    • </HTML>
  • 34. Jsp 核心 技术 : 表达式 :<%= 表达式 %>
    • JSP 表达式是一个值, 在运行后被自动转化为字符串 ,然后插入到这个表达式在 JSP 程序中所在的位置中。因这个表达式的值已被转化为字符串,所以 有输出显示 在屏幕上
    • <%int a=10,b=20; %>
    • <br>a+b = <%=a+b%>
    • <br>a*b= <%=a*b%>
  • 35. Jsp 核心 技术 : 程序段 :<% 代码片段 %>
    • <!-- 使用表达式和代码片段,从大到小显示字符串“ Hello”-->
    • <h2> 嵌入 JSP 脚本 </h2>
    • <%
    • for (int i=1; i<=6; i++) { //java 代码
    • %>
    • <H <%= i %> >Hello</H <%= i %> >
    • <% } %>
  • 36. Jsp 核心 技术 : 程序段 : <% 代码片段 %>
    • <!-- 使用表达式和代码片段,从小到大显示字符串“ Hello”-->
    • <% for(int i=6;i>0;i--)
    • {
    • out.print( &quot; <h &quot; + i + &quot;>Hello </h&quot; + i + &quot; > &quot; );
    • }
    • %>
  • 37. Jsp 核心 技术 : Jsp 指令元素及实例
    • 页面 page 指令 : 定义 JSP 文件的全局属性
    • Include 指令 : 它的执行结果就是将它包含的文件插入到 JSP 文件中放置 include 指令的地方 , 包含文件执行完毕后 , 继续执行主 jsp 文件的下一行 ( 和主文件一起编译 , 一旦改变 , 需重新编译主文件 )
    • taglib 指令 : 自定义标签 , 编写标签库配置文件
    • 格式如下 :
    • <% @ page attribute=value attribute-list ……%>
  • 38. Jsp 核心 技术 : 页面 page 指令的属性 language=&quot;java&quot; extends=&quot;package.class&quot; import =&quot;{package.class | package.*}, ...&quot; session=&quot; true | false&quot; buffer=&quot;none | 8kb | sizekb&quot; autoFlush=&quot; true | false&quot; ] isThreadSafe=&quot; true | false&quot; info=&quot;text&quot; ] errorPage =&quot;relativeURL&quot; contentType =&quot;mimeType [ ;charset=characterSet ]&quot; | &quot;text/html ; charset=ISO-8859-1 &quot; isErrorPage =&quot;true | false &quot;
  • 39. Jsp 核心 技术 : 页面 page 指令的实例
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; import=“java.util.*,java.sql.*” errorPage=“error.jsp”%>
  • 40. Jsp 核心 技术 : include 指令实例
    • 格式 <%@ include file= &quot; filename&quot; %>
    • Include 指令的使用
    • <%@ page contentType=&quot;text/html;charset=gb2312&quot;%>
    • <%@ include file=“header.jsp&quot; %>
    • <%@ include file=“side.jsp&quot; %>
    • <%@ include file=“footer.jsp&quot; %>
  • 41. Jsp 核心 技术 : include 指令分区实例 尾部 :footer.jsp 版本声明等 页面主体 :body.jsp 功能区 side.jsp 菜单 LOGO 头部 :header.jsp
  • 42. Jsp 核心 技术 : Jsp 动作元素及实例
    • <jsp:param> 可传递一个或多个参数 , 一般和其它动作 include 或 forward 共用
    • <jsp:include>
    • <jsp:forward>
    • 格式如下 :
    • <prefix:tag attribute=value attribute-list…/>
    • <jsp:param name=“ 参数名” value=“ 参数值” />
  • 43. Jsp 核心 技术 : include 动作实例
    • <jsp:include page=&quot;login.jsp&quot; flush=&quot;true&quot; />
    • <jsp:include page=&quot;login.jsp&quot; flush=&quot;true&quot; >
    • <jsp:param name=“username” value=“ 张三 &quot; />
    • </jsp:include>
    • 和 include 指令不同之处 , 包含的内容可以是动态
    • 的 , 在执行时才确定 , 比 include 指令运行效率低
  • 44. Jsp 核心 技术 : forward 动作实例
    • 作用 : 把当前页面重定向到另一个页面上
    • <jsp:forward page=&quot;http://www.sina.com.cn &quot; />
    • <jsp:forward page=&quot;login.jsp&quot;>
    • <jsp:param name=&quot;userId&quot; value=“001&quot; />
    • <jsp:param name=“pasd&quot; value=“xxx&quot; />
    • </jsp:forward>
  • 45. Include 动作实例( static.html )
    • <html>
    • <body>
    • <form method=post action=&quot;jsp_include.jsp&quot;>
    • <table>
    • <tr><td>please input your name:</td></tr>
    • <tr><td><input type=text name=name></td></tr>
    • <tr><td>input you password:</td><td>
    • <input type=text name=password></td></tr>
    • <tr><td><input type=submit value=login></td></tr>
    • </table>
    • </body>
    • </html>
  • 46. two.jsp
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; language=&quot;java&quot; %>
    • 举例说明 include 的工作原理:
    • <br>
    • this is a1=<%=request.getParameter(&quot;a1&quot;)%>
    • <br>
    • this is a2=<%=request.getParameter(&quot;a2&quot;)%>
    • <br>
    • <% out.println(&quot;hello from two.jsp&quot;);%>
  • 47. Jsp_include.jsp
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; language=&quot;java&quot; %>
    • <html><body>
    • <%@ include file=&quot;static.html&quot; %>
    • <a href=&quot;two.jsp&quot;>goto two--></a><br>
    • this examples show include works
    • <jsp:include page=&quot;two.jsp&quot; flush=&quot;true&quot;>
    • <jsp:param name=&quot;a1&quot; value=&quot;<%=request.getParameter(&quot;name&quot;)%>&quot; />
    • <jsp:param name=&quot;a2&quot; value=&quot;<%=request.getParameter(&quot;password&quot;)%>&quot; />
    • </jsp:include>
    • </body></html>
  • 48. forward 动作实例 (login.jsp)
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; %>
    • <html><body>
    • <form method=get action=checklogin.jsp>
    • <table>
    • <tr><td> 输入用户名: </td>
    • <td><input type=text name=name value=<%=request.getParameter(&quot;name&quot;)%>></td></tr>
    • <tr><td> 输入密码: </td>
    • <td><input type=password name=password></td></tr>
    • <tr colspan=2><td><input type=submit value=login></td></tr>
    • </table></body></html>
  • 49. checklogin.jsp
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; %>
    • <html><body>
    • <%
    • String name=request.getParameter(&quot;name&quot;);
    • String password=request.getParameter(&quot;password&quot;);
    • if(name.equals(&quot;hellking&quot;)) { %>
    • <jsp:forward page=&quot;success.jsp&quot;>
    • <jsp:param name=&quot;user&quot; value=&quot;<%=name%>&quot;/>
    • </jsp:forward>
    • <% } else {%>
    • <jsp:forward page=&quot;login.jsp&quot;>
    • <jsp:param name=&quot;user&quot; value=&quot;<%=name%>&quot;/>
    • </jsp:forward>
    • <% } %>
    • </body></html>
  • 50. success.jsp
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; %>
    • 登陆成功
    • <br>
    • 欢迎你 ,
    • <%=request.getParameter(&quot;name&quot;)%>
  • 51. Jsp 核心 技术 : jsp 内建对象及实例
    • out 对象
    • request 对象
    • response 对象
    • session 对象
    • application 内部对象
    • exception 内部对象
    • page 对象
    • pagecontext 对象
    • config 对象
  • 52. Jsp 核心 技术 : out 对象及实例
    • 实例 <!-- 显示字符串 -->
    • out.println(“ 学习使用 out 对象” ) ;
    • 作用 : 可向客户端输出任何原始数据类型、对象及以字符构成的数组
    • 常用方法 :
    • out.print(String) , out.println(String)
    • outout.clear() , out.close()
    • out 对象被封装在 javax.servlet.jsp.JspWriter
    • 接口中
  • 53. Jsp 核心 技术 : request 对象及实例
    • 实例 <!-- 提取表单数据 --><!-- 显示服务器名称 -->
    • request.getParameter(“name&quot;)
    • <%= request.getServerName()%>
    • 作用:接受客户端的请求,另外还可获取服务器端及客户端的各种参数 , 如 IP 地址,端口号等。
    • 常用方法
    • getParameter(String name) ; // 一般用它读取表单中参数
    • getParameterNames() ; getParameterValues(String name) ;
    • // 一般用于 checkbox 、 select 提交的数据,其值是个 String 数组
    • getAttribute(String name) ;
  • 54. request
    • getAttribute(String name) ;
    • setAttribute(String name , java.lang.Object obj);
    • removeAttribute(String name) ;
    • request 对象被封装在 HttpServletRequest 接口中 )
  • 55. Jsp 核心 技术 : respone 对象及实例
    • 实例 <!-- 数字钟表 --> 和 <!-- 重定向 -->
    • <%@page import=“java.util.Date”%>
    • <%response.setHeader(&quot;Refresh&quot;,&quot;1&quot;);%>
    • 现在时间是: <%=new Date()%>
    • sendRedirect(“http://www.sina.com.cn”);
    • 常用方法:
    • setContentType ( String contentType )
    • sendRedirect ( String location )
    • setHeader(String name,String value);
    • Responset 对象被封装在 HttpServletResponse 接口中
  • 56. Jsp 核心 技术 : session 对象及实例
    • 实例 <!-- 存储 --><!-- 调用 -->
      • session.setAttribute (&quot;thename&quot;, name);
      • String name = (String) session.getAttribute(“thename&quot;);
      • session.putValue(&quot;thename&quot;, name);
      • String name = (String) session.getValue(&quot;thename&quot;);
    • 作用:保存用户信息以便跟踪每个用户的操作状态,对于那些希望通过多个页面完成一个事务的应用是非常有用的。
    • 主要方法:
    • GetId() , Long getLastAccessedTime()
    • getCreationTime();
    • String[ ] getValueNames() , invalidate ()
  • 57. session
    • setAttribute(String name,Object value);
    • getAttribute(String name);
    • getAttributeNames(String name);
    • putValue(String name,Object value);
    • getValue(String name);
    • getValueNames();
    • removeValue(String name)
    • setMaxInactiveInterval(Int,interval);
    • 和 session 对应的是 HttpSession 接口
  • 58. Jsp 核心 技术 : application 对象及实例
    • 实例:计数器实例 ( 第四章 Page95)
      • Application.jsp
      • test_application.jsp
    • 作用:为多个应用程序保存信息,它在服务器启动时自动创建,一直保持直到服务器关闭为止。
    • 主要方法:
    • get Attribute(String name) ; setAttribute(String name,Object object) ;
    • getAttributeNames( ) ;
    • getInitParameter(String name ) ;
  • 59. Jsp 核心 技术 : exception 对象及实例
    • 作用:处理异常和错误,只能在错误页面中使用
    • 常用方法:
      • getMessage()
      • 返回错误信息 ( 返回描述例外的消息 )
      • toString()
      • 以字符串的形式返回一个对异常的描述
      • printStackTrace()
      • 输出一个错误和错误的堆栈
  • 60. Jsp 核心 技术 : page 对象及实例 7
    • 主要方法:
    • String toString()
    • 把对象转换成 String 类
  • 61. 动态页面和用户会话
    • 创建动态页面的内容
      • 根据时间的动态
      • 根据用户类型的动态
      • 根据用户自定义信息的动态
      • 根据用户不同区域、不同的语言的动态
      • 根据数据库内容的动态
    • 常用的用户会话跟踪方法
      • 隐藏字段
      • URL 重写
      • session
  • 62. 用户会话实例
    • 用于实现不同页面之间的数据交换
      • <Input type=“ hidden” name=“name” value=“ 张三” >
      • <a href=modify_passd.jsp ?id=“001”
        • &type=“ 一般用户” &city=“ 北京” …… >
      • session
        • Session.setAttribute(“name”,” 张三” );
        • Session.setAttribute(“type”,” 一般用户” );
        • Session.getAttribute(“name”);
        • Session.getAttribute(“type”);
  • 63. 解决中文显示的问题
    • 原因 :
    • 与 Jdk 版本及 web 服务器、浏览器使用的编码方式不同有关。
    • 解决的办法:
      • 在浏览器里设置编码为简体中文编码
      • 在 Jsp 的页面指令中指定字符集的编码方式为 gb2312 ,即添加如下指令:
      • <%@ page contentType=&quot;text/html; charset=gb2312 %>
  • 64. 中文显示问题
      • 对请求重新编码,添加如下指令 request.setCharacterEncoding(&quot;gb2312&quot;); response.setContentType(“text/html,charset=gb2312&quot;);
  • 65. JavaBean
    • 作用:用来封装事务逻辑、数据库操作
    • 组成:由属性和方法(事件)组成
    • 特性;使业务逻辑和前台程序分离,可实现代码的重复利用,易编写,易维护
    • 一个 JavaBean 实例:
    • 一般包括:包名,类名,构造函数,属性,定义属性的读、写方法, 其它方法 。
    • JavaBean 索引属性实例
  • 66.
    • <!– 名称: StudentInfo.java-->
    • package Student ;
    • public class StudentInfo {
    • int id; // 定义属性
    • String name;
    • public StudentInfo() { // 初始化
    • id=1001;
    • name=&quot; 张三 &quot;;
    • }
    • public void setId(int id){ // 定义方法
    • this.id=id;
    • }
    1
  • 67. 2
    • public int getId(){ // 定义方法
    • return this.id;
    • }
    • public void setName(String name){// 定义方法
    • this.name=name;
    • }
    • public String getName(){ // 定义方法 return this.name;
    • }
    • }
    • 改变 scope 范围为 page , session , application
    • 体会它们各自不同的生命周期
  • 68.
    • <!-- 名称: student.jsp 在 jsp 页面中引用 StudentInfo-->
    • <%@ page contentType=&quot;text/html;
    • charset=gb2312&quot;%>
    • <jsp:useBean id=&quot;StuBean&quot; scope=&quot;application&quot; class=&quot;Student.StudentInfo&quot; />
    • 学号 :<%=StuBean.getId() %><br>
    • 姓名 :<%=StuBean.getName() %>&nbsp;
    • <jsp:getProperty name=&quot;StuBean&quot; property=“name&quot; /><br>
    • <% StuBean.setName(&quot; 王五 &quot;); %>
  • 69. Hello.java
    • package Hai;
    • public class Hello{
    • public String name=&quot;every one&quot;;// 定义属性
    • public String output() // 定义方法
    • {
    • return &quot;hello &quot;+name;
    • }
    • }
  • 70. Hai.jsp
    • <jsp:useBean id=&quot;HelloBeans&quot; scope=&quot;session&quot; class=&quot;Hai.Hello&quot; />
    • <%=HelloBeans.output() %>
    • <br>
    • <%
    • HelloBeans.name=&quot;world&quot;;
    • out.print(HelloBeans.output());
    • %>
  • 71. 1
    • <!-- 索引属性实例 程序名: IndexBean.java-->
    • package com.jspdev.ch5;
    • public class IndexBean
    • {
    • //type 为属性的名字,类型是 String
    • private String[ ] type=new String[ ]{&quot;jsp&quot;,&quot;ejb&quot;,&quot;servlet&quot;,&quot;javamail&quot;,&quot;jca&quot;,&quot;jdbc&quot;};
    • //getXxx 方法,返回这个属性的值
    • public String[ ] getType()
    • {
    • return this.type;
    • }
  • 72. 2
    • //setXxx 方法,设置这个属性的值。
    • public void setType(String[ ] type)
    • { this.type=type; }
    • // 另外的设置属性和获得属性值的方法。
    • public void setType(int index,String value)
    • {
    • type[index]=value;
    • }
    • public String getType(int index)
    • {
    • return type[index];
    • }
    • }
  • 73. 3
    • 引用:
      • setType(4,”javabean”);
      • String type=getType(5);
      • String[ ] s=getType();
  • 74.
    • 创建 JavaBean
      • <jsp:useBean id=“ 组件名” scope=“ 范围” class=“ 类路径和类名” />
    • 设置 JavaBean 属性
      • <jsp:setProperty name=“ 组件名” property=“*” />
      • 上面必须和表单中参数名相匹配,快捷方式
      • <jsp:setProperty name=“ 组件名” property=“ 属性名” value=“ 属性值” />
      • <jsp:setProperty name=“ 组件名” property=“ 属性名” param=“ 参数名” />
    在 JSP 中使用 JavaBean 语法
  • 75. 设置 JavaBean 属性
    • 实例如下
    • <jsp:useBean id=“StuBean” scope=“session” class=“Student. StudentInfo” />
    • <jsp:setProperty name=“StuBean” property=“*” />
    • <jsp:setProperty name=“StuBean 名” property=“name 名” param=“username”/>
    • <jsp:setProperty name=“StuBean” property=“name” value=“ 李四” />
  • 76. 在 JSP 中使用 JavaBean 语法
    • 获取 JavaBean 的属性,有显示输出
      • <jsp:getProperty name=“ 组件名” property=“ 属性名” />
    • 如:
    • <jsp:useBean id=“StuBean” scope=“session” class=“ Student. StudentInfo” />
    • <jsp:getProperty name=“StuBean” property=“name” />
    • 其结果显示姓名
  • 77. JavaBean 小结
    • JavaBean 的常用属性
      • 简单型:伴随有 get/set 方法的变量
      • 索引型:索引属性表示一个数组值,可以使用 get/set 方法设置或取得数组的值
    • get/set 方法的常规写法
      • 变量的第一个字母是大字如: getName() ;
  • 78. JavaBean 小结
    • 编写 JavaBean 程序如: aa.java
    • 编译这个 Java 程序如: javac aa.java
    • 在 WEB-INFclasses 目录下建文件夹及其子文件夹
      • 其路径要和包名一致
      • java 文件名要和类名一致
    • 编写 jsp 程序, <jsp> 标签调用 JavaBean
  • 79. 字符串转化为其它类型的方法举例
    • 从表单中传来的数据类型都是字符串类型, JSP 内在机制会自动转化成 JavaBean 属性对应的类型
    方法 属性 Java.lang. Integer.valueOf(String) Integer Java.lang. Integer.valueOf(String).IntValue() int Java.lang.Boolean.valueOf(String) Boolean Java.lang.Boolean.valueOf(String).boolean.Value() boolean
  • 80. Jsp 的文件操作
    • 使用 java 的 IO 系统
    • 实例
      • 读取文件内容:
        • FileReader 类或 FieldInputStream 类
      • 写入内容到某个文件:
        • FileWriter 类或 FieldOutputStream 类
      • 文件上传
        • 使用 SmartUpload 上传工具
      • 文件下载
  • 81. 读取文件内容实例
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; import=&quot;java.io.*&quot; %>
    • <%
    • try
    • {
    • BufferedReader in=new BufferedReader(new FileReader(&quot;c:serSession.java&quot;));
    • String file=&quot;&quot;;
    • String temp=&quot;&quot;;
    • while((temp=in.readLine())!=null)
    • {
  • 82.
    • file+=temp;
    • }
    • in.close();
    • out.println(file);
    • out.flush();
    • }
    • catch(Exception e)
    • {
    • out.println(e);
    • e.printStackTrace();
    • }
    • %>
    读取文件内容实例
  • 83. 写入内容到文件实例
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; import=&quot;java.io.*&quot;%>
    • <html><body>
    • <%
    • request.setCharacterEncoding(&quot;gb2312&quot;);
    • String content=request.getParameter(&quot;content&quot;);
    • %>
    • <%
    • try
    • {
    • PrintWriter writer= new PrintWriter(new BufferedWriter(new FileWriter(&quot;c:oo.out&quot;, true )));
  • 84. 写入内容到文件实例
    • writer.write(content);
    • writer.close();
    • out.println(&quot; 已经把内容写入到 c:oo.java&quot;);
    • }
    • catch(Exception e)
    • {
    • out.println(e);
    • e.printStackTrace();
    • }
    • %>
    • <form action=&quot;writeFile.jsp&quot; method=post>
    • <textarea name=content cols=20 rows=5></textarea><br>
    • <input type=submit value= 提交 >
    • </form>
  • 85. 文件上传实例
    • <!-- 提交要上传的文件 -->
    • <body><hr><center>
    • upload file<br>
    • <form action=&quot;upload.jsp&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot; >
    • <table><tr><td>name:
    • <input type=&quot;file&quot; name=&quot;file2&quot; size=&quot;20&quot;></td></tr>
    • <tr><td><input type=&quot;submit&quot; value=&quot; 上传 &quot;></td></tr>
    • </table>
    • </form>
    • </center>
    • </body>
  • 86.
    • <!-- 保存上传文件 -->
    • <%@ page contentType=&quot;text/html; charset=gb2312&quot; language=&quot;java&quot; import=&quot;java.sql.*&quot; errorPage=&quot;&quot; %>
    • <%@ page import=&quot;com.jspsmart.upload.*&quot;%>
    • <jsp:useBean id=&quot;mySmartUpload&quot; scope=&quot;page&quot; class=&quot;com.jspsmart.upload.SmartUpload&quot; />
    • <html>
    • <head>
    • <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;>
    • </head>
    文件上传实例
  • 87.
    • <body>
    • <center> 正在上传文件 ...
    • <% try // 上载附件
    • {
    • mySmartUpload.initialize(pageContext);
    • mySmartUpload.service(request,response);
    • mySmartUpload.upload();
    • String fn=fn=mySmartUpload.getFiles().getFile(0).
    • getFileName();
    • mySmartUpload.save(&quot; upload/ &quot;);// 文件保存目录
    文件上传实例
  • 88.
    • out.println(&quot; 已经成功上传了文件,请查看 <a href=upload/&quot;+fn+&quot;> 这里 </a> ,看文件是否上传成功 &quot;);
    • }
    • catch(Exception e)
    • {
    • e.printStackTrace();
    • }
    • %>
    • <a href=FileUpload.html> 重新上传 </a>
    • </body>
    • </html>
    文件上传实例
  • 89. JavaBean 实例
    • index.jsp
      • title.jsp
      • main.jsp
      • menu.jsp
        • register.jsp (点击用户注册)
          • include.inc (功能:连数据库)
          • newuser.jsp (点击确定按钮)
            • UserInfo.java
            • UserRegist.java
  • 90. 数据库和 JDBC 技术
    • JDBC 介绍
      • JDBC 的任务
      • 同一个数据库建立连接
      • 向数据库发送 SQL 语句
      • 处理数据库返回的结果
      • JDBC 连接数据库的模型
      • JDBC 连接数据库的两层模型
      • JDBC 连接数据库的三层模型
      • JDBC API
  • 91. 数据库和 JDBC 技术
    • JDBC 是一种用于执行 SQL 语句的 API ,它是由一组 JAVA 语言编写的类和接口组成,它使得我们不用为某一个数据库而专门编写一个程序,对 Sybase 、 Oracle 、 INFORMIX 、 SQLServer… 等数据库均通用。因为它是用纯 JAVA 语言写的 , 所以可跨平台操作
  • 92.
  • 93. 数据库和 JDBC 技术
    • JSP 连接数据库的主要途径
      • JDBC 连接数据库
      • JDBC-ODBC 桥
        • 将 JDBC 调用映射为 ODBC 调用
        • 使 JDBC 能够访问 ODBC 数据源,
        • 效率相对低下( JDBC 初期时使用)
  • 94.
  • 95. JDBC 是如何连接数据库的 (一)装载驱动程序
    • 用 java.lang.Class 类的 forName() 的方法显式地加载驱动程序
    • JDBC-ODBC 桥驱动
    • Class.forName (“ sun . jdbc . odbc . JdbcOdbcDriver” );
    • JDBC 驱动
    • Class.forName (“ jdbc 驱动程序类名”);
    • 实例
    • // 装载 MS SQLServer JDBC 驱动
    • Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver”);
  • 96. (一)装载驱动程序
    • // 装载 MySQL JDBC 驱动
    • Class.forName (“org.gjf.mm.mysql.Driver”);
    • // 装载 Oracle JDBC 驱动
    • Class.forName(”oracle.jdbc.driver.OraclDriver”) ;
  • 97. (二)创建与数据库的连接
    • DriverManager 类 :作用于用户和驱动程序之间,并在数据库和相应驱动程序之间建立连接
    • Connection
    • 用 DriverManager 类的 getConnection 方法创建一个特定的连接,这个连接就是 Connection 类的有关数据库的实例.
    • Connection con=
    • DriverManager.getConnection (url , user name , password) ;
      • url :对不同的数据库驱动程序有所不同,有两种格式:
  • 98. Connection
      • 格式①:
      • jdbc :子协议:子名称 ( 如:本地 ODBC 数据源名 )
      • 例如: jdbc : odbc : SQLshopping
      • 格式②:
      • jdbc :子协议: // 主机名:端口号 / 数据库名
      • 例如: //MySQL
      • jdbc : mysql : //localhost : 3306/DBjsp
    • //MS SQLServer
    • jdbc:microsoft:sqlserver://127.0.0.1:1433;
    • DatabaseName=jspdev,”sa”,””
  • 99. Connection
    • 主要方法: close() ; rolback();
    • Statement creatStatement();
    • PreparedStatement prepareStatement (String sql);
  • 100. (三) 创建 Statement 用于执行 SQL 语句
    • Statement
    • 通过 Connection 类的 createStatement() 方法,创建 Statement 实例,用于实现对数据库的具体操作,如:查询、修改、删除等
      • Statement stmt=con.createStatement();
      • ResultSet rs=stmt.executeQuery(“select * from user_info”);
    • 主要方法
      • executeQuery() // 运行查询语句,返回 ResultSet 对象
      • executeUpdate() // 运行更新操作,返回更新的行数
      • execute() // 运行语句,返回是否有结果集
  • 101. 发布 SQL 语句
    • PreparedStatement 类
    • 是 Statement 类的子类,可以和查询信息一起预编译,然后用不同的输入参数来多次执行编译过的语句,至少包含 1 个?占位符。
    • PreparedStatement pstmt=
      • con.prepareStatement(“insert user_info values(?,?,?,?,?,?,?)”);
    • pstmt.setString(1,”hellking’);
    • pstmt.setInt(2,20);
    • ……
    • pstmt.executeUpdate();
  • 102. 发布 SQL 语句
    • CallableStatement 类
    • 是 PreparedStatement 的子类,用于执行对数据库已存储过程的调用,包含 1 个或多个?占位符
    • strSQL=“{call demo_account(?,?,?,?)}”;
    • CallableStatement sqlStmt=
    • con.prepareCall(strSQL);
    • sqlStmt.setString(1,”userid_3”);
    • sqlStmt.setString(2,”userid_1”);
    • ……
    • Int i=sqlStmt.executeUpude();
  • 103. (四)处理由 SQL 操作返回的结果集
    • ResultSet 结果集: 用来装载查询 结果, 结果集一般是一个表,包括查询返回的列标题和它的值。
      • ResultSet rs=stmt.executeQuery(“select * from table1”) ;
    • 主要方法:
      • String getString() ;
      • // 获取字符串对象,来自于指定的字段
      • Date getDate() ; // 获取 Date 类型的对象,同上
      • Blob getBlob() ; // 获取二进制大对象(图片)
      • Boolean next() ; // 向下移动一行,得到下一条查询结果
      • First() ; // 指向第一条记录
      • Last() ; // 指向最后一条记录
      • void close() ; // 关闭同数据库的连接释放所占有的 JDBC 资源
  • 104. ResultSet
    • 注意: ResultSet 维护指向当前数据行的游标,他的初始状态在第一行前,每调用一次 next 方法,游标下移一行,所以第一次调用要将它置于第一行,使它成为当前行,随着每次调用 next 导致游标下移一行。
  • 105. JDBC 小结
    • JDBC 是由 java.sql 包实现的,所以连接数据库操作之前要导入 java.sql 这个包
    • SQLServer2000 JDBC 安装
    • 默认安装路径为: D:Program FilesMicrosoft SQL Server 2000 Driver for JDBC, JDBC 驱动 的核心程序是安装目录 lib 下的三个 jar 文件 mssqlserver.jar , msbase.jar , msutil.jar
      • 将这三个 jar 文件拷贝到 d:j2sdk1.4.1jrelibext 目录下
      • 将这三个 jar 文件拷贝到 d:jakarta_tomcatROOTWEB-INFlib 目录下
  • 106. 常用 SQL 语句
    • 查询(表)
      • select * from user_info;
      • select * from user_info where userid<10;
    • 添加 ( 一条记录 )
      • insert into user_info (userid,username) values(1,” 张三” );
    • 删除 ( 一条记录 )
      • delete from user_info where userid=3;
    • 修改 ( 字段 )
      • update user_info set username =“李四” where userid=1;
  • 107. 第一个连接数据库实例
    • 建数据库,数据库名 jspdev ( page249 )
    • 建表,表名 book ,字段如下
      • bookId varchar(50)
      • bookname varchar(50)
      • publisher varchar(100)
      • price float
    • 添加数据到 book 表中(手工添加或 sql 脚本)
    • 编写 testMssql.jsp 程序 , 显示表头及内容(参照 page254 )
    • 在 IE 中运行这个程序
  • 108.
    • <% Class.forName(&quot;com.microsoft.jdbc.sqlserver.SQLServerDriver&quot;).newInstance();
    • Connection con= java.sql.DriverManager.getConnection(&quot;jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev&quot;,&quot;sa&quot;,&quot;&quot;);
    • Statement stmt=con.createStatement();
    • ResultSet rst=stmt.executeQuery(&quot;select * from book;&quot;);
    • while(rst.next())
    • {
    • out.println(&quot;<tr>&quot;);
    • out.println(&quot;<td>&quot;+rst.getString(&quot;bookId&quot;)+&quot;</td>&quot;);
    • out.println(&quot;<td>&quot;+rst.getString(&quot;bookName&quot;)+&quot;</td>&quot;);
    • out.println(&quot;<td>&quot;+rst.getString(&quot;publisher&quot;)+&quot;</td>&quot;);
    • out.println(&quot;<td>&quot;+rst.getFloat(&quot;price&quot;)+&quot;</td>&quot;);
    • out.println(&quot;</tr>&quot;);
    • }
  • 109. 使用 预处理语句 添加数据到数据库实例
    • 建表 contect (参照 page259 )
      • 设定用户名为主键
    • 编写 insert.jsp 程序,使用 预处理语句 添加多条记录到 contect 表中 ( 参照 page260)
    • 在浏览器中运行这个程序
    • 到 SQLServer2000 企业管理界面查看添加的结果是否正确
  • 110.
    • <%
    • try
    • {
    • // 装载驱动程序 Class.forName(&quot;com.microsoft.jdbc.sqlserver.SQLServerDriver&quot;).newInstance();
    • // 创建连接
    • Connection con=java.sql.DriverManager. getConnection (&quot;jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev&quot;,&quot;sa&quot;,&quot;&quot;);
    • // 创建执行语句使用 PreparedStatement======//
    • PreparedStatement pstmt= con.prepareStatement(&quot;insert into contact values(?,?,?,?,?,?)&quot;);
  • 111.
    • pstmt.setString(1,&quot; 王小华 &quot;);
    • pstmt.setInt(2,136234234);
    • pstmt.setString(3,&quot;010455554&quot;);
    • pstmt.setString(4,&quot;lxh@some.com&quot;);
    • pstmt.setDate(5,new java.sql.Date(new java.util.Date().getTime()));
    • pstmt.setString(6,&quot; 很久没有联系了 &quot;);
    • pstmt.execute();
    • //=======================//
    • pstmt.setString(1,&quot; 李小华 &quot;);
    • pstmt.setInt(2,136234234);
    • pstmt.setString(3,&quot;010455554&quot;);
    • pstmt.setString(4,&quot;lxh@some.com&quot;);
    • pstmt.setDate(5,new java.sql.Date(new java.util.Date().getTime()));
    • pstmt.setString(6,&quot; 很久没有联系了 &quot;);
  • 112.
    • // 执行插入数据操作。
    • pstmt.execute();
    • pstmt.close();
    • //== 使用 Statement========//
    • Statement stmt=con.createStatement();
    • // 一次添加一行数据
    • stmt.execute(&quot;insert into contact(userName,mobile) values(' 陈军 ',136555555)&quot;);
    • out.println(&quot; 添加数据成功 &quot;);
    • // 关闭连接、释放资源
    • stmt.close();
    • con.close();
    • }
    • catch(Exception e)
    • { e.printStackTrace(); }
    • %>
  • 113. 更新数据库内容实例
    • 编写 update.jsp 程序修改某个字段内容(参照 page263 )
    • 运行 query.jsp 确认修改结果的正确性
  • 114.
    • // 装载驱动程序
    • Class.forName(&quot;com.microsoft.jdbc.sqlserver.SQLServerDriver&quot;).newInstance();
    • // 创建连接
    • Connection con= java.sql.DriverManager.getConnection(&quot;jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev&quot;,&quot;sa&quot;,&quot;&quot;);
    • Statement stmt=con.createStatement();
    • int col=stmt.executeUpdate(&quot;update contact set mem=' 他下个月来北京 ' where userName=' 陈军 '&quot;);
    • out.println(&quot; 成功更新 &quot;+col+&quot; 条数据 &quot;);
    • // 关闭连接、释放资源
    • stmt.close();
    • con.close();
  • 115. 删除记录实例
    • 编写 delete.jsp 程序删除条记录 (
    • 运行 query.jsp 确认删除结果是否正确
  • 116.
    • <%
    • try
    • {
    • Class.forName(&quot;com.microsoft.jdbc.sqlserver.SQLServerDriver&quot;).newInstance();
    • Connection con= java.sql.DriverManager.getConnection(&quot;jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev&quot;,&quot;bn&quot;,&quot;bn&quot;);
    • Statement stmt=con.createStatement();
    • boolean col=stmt.execute(&quot;delete from contact where phone=null and mail=null and mobile=null&quot;);
    • stmt.close();
    • con.close();
    • }
    • catch(Exception e)
    • { e.printStackTrace(); }
    • %>
  • 117. JSP 通过 JavaBean 访问数据库实例
    • 小结上面的实例:编程简单,维护性差,代码的重用性得不到满足
    • 下例参照 page269)
    • 编写连接数据库的 ContactBean.java 程序
      • 初始化连接
      • 定义在数据库中添加信息的 addContact(); 方法
      • 定义查询数据库的 getContact(); 方法
    • 编写 jsp 程序 useBean.jsp 调用这个连接数据库的 Java 程序,页面容易维护,代码可重用。
  • 118. 在 Servlet 中使用 JDBC 访问数据库实例
    • 下例参照 page 272
    • 编写 Servlet 程序 ContactServlet.java
      • 初始化连接
      • 定义删除信息的 deleteContact() 方法
      • 定义查询数据库的 getContact() 方法
    • 编写 contact_sevlet_test.html 程序
      • 提交用户名
      • 设置删除操作按扭
      • 设置显示操作按扭
    • 修改 web.xml 配置文件添加 servlet 映射等
  • 119. 连接数据库综合实例 (page276)
    • 建表
      • 商品分类表
        • 表名: category
        • 字段: catid,name,descn
      • 商品信息表
        • 表名: product
        • 字段: productid,category,name,producer,price,descn
      • 手工添加一些数据到这两个表中
    • 编写这两个表的 JavaBean,
      • 名称: Category.java 和 Product.java
      • 作用:把每个数据表都做成一个值对象的类,在 JavaBean 和 JSP 之间传递数据时可通过值对象来进行
  • 120. 商品管理
    • 编写连接数据库的 JavaBean
      • 名称: DataBaseConnection.java
      • 功能:返回一个数据库的连接
    • 编写查看商品分类的 JavaBean
      • 名称: ViewCategory.java
      • 功能:返回商品的所有分类
      • 定义了 getAllCategory() 方法
    • 编写与商品操作相关的 JavaBean
      • 名称: ProductBean.java
      • 封装的业务逻辑有:
      • 添加一个商品,删除一个商品,更改商品的信息,搜索所有的商品信息, 按照商品的类别查找商品,返回给定商品的信息等
  • 121. 商品管理
    • 编写添加商品界面的 jsp 程序
      • 名称: addProduct.jsp
    • 编写执行添加商品功能的 JSP 程序
      • 名称: addProduct_do.jsp
    • 编写删除商品界面的 JSP 程序
      • 名称: deleteProduct.jsp
    • 编写执行删除商品功能的 JSP 程序
      • 名称: deleteProduct_do.jsp
    • 编写更改商品信息界面的 JSP 程序
      • 名称: modifyProduct.jsp
    • 编写执行更改商品功能的 JSP 程序
      • 名称: modifyProduct_do.jsp
  • 122. 商品管理
    • 编写查看所有商品信息的 JSP 程序
      • 名称: viewProduct.jsp
    • 编写主程序 index.html ,将所有功能整合在一个页面上。
    • 添加商品
    • 删除商品
    • 更改商品信息
    • 查看所有商品
    • 查看所有商品类型
  • 123. 分页显示实例( page310 )
    • 开发一个页面控制的 javabean 程序
      • 名称: PageBean.java
      • 属性: 当前是第几页,总页数,总行数,每页行数,本页中要显示的内容
      • 其中:总页数的计算如下:
      • if( 总行数 % 每页行数 )==0
      • 总页数 = 总行数 / 每页行数
      • else
      • 总页数 = 总行数 / 每页行数 +1
  • 124. 分页显示实例
    • 开发一个与逻辑业务相关的 javabean 程序
      • 名称: ContactBean.java
      • 连接数据库
      • 定义一个返回查询总记录数的方法
      • 定义获取指定页面数据的方法,结果返回