搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
JSP网站开发详解:JSP+Servlet+Tomcat+Eclipse+SSH
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121071263
  • 作      者:
    唐友国,湛洪波编著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2008
收藏
编辑推荐
  在Web应用领域,动态网页技术作为Web系统开发的核心,越来越受到业内人士的青睐。目前主流的动态网页技术主要是指ASP、PHP和JSP,本书全面讲述JSP技术及其相关技术,如与Struts、Hiberante和Spring的集成等。
  考虑到Java Web应用开发的知识和技能需要和读者的知识结构,本书将JSP基础知识和Java Web应用开发经验融为一体。内容上做到全面而深入,囊括JSP技术的核心和精髓,以及Java Web应用开发整体解决方案知识。通过由浅入深,实例举证的分析讲解,使得读者在了解JSP基础知识的同时,具备全面的Java Web应用系统开发知识。
  以经验为后盾,以实用为目标,以实例为导向,以实践为指导。
展开
作者简介
  石志国,信息安全专业博士,研究方向:WEB计算,网络安全、分布式可信计算和操作系统安全。从事计算机应用软件的设计、开发、研究和教学等工作。主讲课程有《网络安全》、《动态网站编程》、《JAVA程序设计》等。 曾作为一线老师执教北京新东方IT教育、北大青鸟APTECH、中软国际等国内著名职业教育中心,讲解程序设计编程,并编写北京新东方学校全套,NET技术、ASP编程班和JSP编程班讲义。曾在中国教育电视台一套主讲网站编程课程。在清华大学、中国科学院、北京科技大学、中央广播电视大学等高校讲解程序设计相关课程,并开设讲座。
展开
内容介绍
  本书介绍了使用JSP及其相关技术开发网络应用程序的基础知识和方法,全书共分为3个部分。其中第1部分介绍了使用JSP开发网络应用系统的必备知识;第2部分介绍了将JSP与Struts、Hibernate和Spring等技术结合的基础知识和集成方法;第3个部分精选了实用性很强的6个典型模块和3个小型的网络应用程序,分别是新闻发布系统、电子相册系统和在线购物系统,书中从系统需求分析、代码设计到方案实施全面地介绍了这些实例。本书的随附光盘中包含了所有这些网络应用程序实例的源程序,读者稍加修改,即可将其应用于自己的开发项目中。
  本书适用于使用JSP开发网络应用程序的初、中级技术人员,以及对相关技术感兴趣的读者,也可以作为高等院校相关专业的辅导教材。
展开
精彩书摘
  第1篇  基础篇
  第1章  JSP开发基础
  1.1  JSP的概念和作用
  1.1.4 学习JSP网站编程
  如何学习JSP编程,以成为一个成功的JSP开发人员?一个常见的误解是把JSP当做简化的Java,开发人员通常试着没有学习要求的支持技巧而直接学习JSP。JSP是一个衔接技术,并且要成功地衔接开发人员需要理解的另外的技术。如Java、HTML和JavaScript,这是学习JSP之前最好能掌握的。
  笔者的建议如下。
  (1)架设Web Server,并理解它。
  因为Apache是免费的且在大多数平台上工作,所以为训练目的,推荐Apache。
  (2)学习和理解HTML。
  务必要了解HTML基础,特别是HTML布局中如table及body等这些重要标记的使用方法。许多开发人员通过HTML IDE学习HTML。因为大多数HTML IDE产生混乱的TM1语法,所以花时间学习手工编写HTML是很有必要的,使用JSP和HTML混合编程精通HTML语法是重要的。
  (3)学习Java语言编程基础。
  必须认真学习Java,因为它是一门全新的面向对象编程语言,和C、C++并列为3大开发语言。并且JSP和Servlet都是以Java语言为基础的,因此Java基础很重要。如果有面向对象编程语言(如C++)经验,那么学习Java将会很快。不用担心学习Swin9或Java的图形方面,因为在JSP中不会使用这些特征。集中精力在Java工作的细节,学>-j Java的逻辑及面向对象的编程思想,也要在Java Bean上花时间。学习Applet是好的,但是如Swin9及JSP之类的大多数应用将不使用小程序。
  在这方面的书籍很多,典型的有《Thinkin in Java》(第三版)及《Java2核心技术》等。
  (4)学习JavaScript。
  JavaScript是网页编程中一种高效的脚本语言,用其可以减轻编写JSP页面中一些重要功能的负担。应该学习如何用JavaScript在HTML中验证输入的Form元素,也要学习JavaScript如何能在一页HTML以内修改Form的元素。还要学习如何编写JavaScript函数,最后要求能从一页HTML内的事件中触发JavaScript函数。
展开
目录
第1篇  基础篇
第1章  JSP开发基础
1.1  JSP的概念和作用
1.1.1  什么是JSP
1.1.2  JSP和Servlet扮演的角色
1.1.3  JSP和其他框架的集成
1.1.4  学习JSP网站编程
1.2  安装和配置JDK
1.2.1  安装JDK
1.2.2  配置JDK
1.3  安装和配置Tomcat
1.3.1  安装Tomcat服务器
1.3.2  测试安装是否成功
1.4  开发第1个JSP页面
1.4.1  创建Form提交表单
1.4.2  创建表单处理Servlet
1.4.3  创建JSP显示页面
1.4.4  部署第1个Web应用
1.5  小结
第2章  JSP 基本语法
2.1  JSP基础
2.1.1  JSP和Servlet的关系
2.1.2  典型的JSP文件
2.1.3  JSP文件组成结构
2.1.4  JSP的生命周期
2.2  JSP页面元素
2.2.1  页面指令元素
2.2.2  脚本元素
2.2.3  动作元素
2.3  JSP内建对象
2.3.1  输出对象out
2.3.2  请求对象request
2.3.3  响应对象response
2.3.4  会话对象session
2.3.5  页面上下文对象pageContext
2.3.6  全局对象application
2.3.7  Servlet初始化参数对象config
2.3.8  页面对象page
2.4  使用JSP实现简单登录实例
2.4.1创建登录HTML表单
2.4.2  使用Request获得数据
2.4.3  处理表单数据
2.4.4  使用Session保存用户对话
2.5  小结
第3章  Servlet 基础
3.1  Servlet概念
3.1.1  什么是Servlet
3.1.2  Servlet技术的特点
3.1.3  Servlet的生命周期
3.1.4  开发并部署一个简单的Servlet
3.2  基本Servlet结构
3.2.1  init方法
3.2.2  service方法
3.2.3  doGet、doPost和doXxx方法
3.2.4  destroy方法
3.3  Servlet的基本配置
3.3.1  Servlet的名称及路径配置
3.3.2  初始化参数
3.3.3  启动装入优先级
3.3.4  Servlet映射
3.4  Servlet请求和响应
3.4.1  Request实现请求
3.4.2  Response处理响应
3.5  Servlet请求转发
3.5.1  使用sendRedirect转发
3.5.2  使用Dispatch转发
3.5.3  Redirect和Request Dispatch的区别
3.6  使用Servlet改进登录实例
3.6.1  在Servlet中获得数据
3.6.2  使用Servlet将用户转向到指定页面
3.6.3  在Servlet中使用Session
3.7  小结
第4章  JSP和Servlet的集成
4.1  JSP和Servlet结合的两种模式
4.1.1  模式一
4.1.2  模式二
4.1.3  两种模式的比较
4.1.4  MVC模式
4.1.5  JSP和Servlet实现的MVC模式
4.2  使用MVC编程改进登录实例
4.2.1  JSP实现表现层
4.2.2  JavaBean模型层
4.2.3  Servlet控制层Control
4.3  小结
第5章  JDBC数据库访问技术
5.1  JDBC和驱动程序
5.1.1  为什么需要JDBC
5.1.2  数据库驱动程序
5.1.3  使用JDBC访问数据库的过程
5.2  JDBC处理数据库方法
5.2.1  加载并注册数据库驱动
5.2.2  建立到数据库的连接
5.2.3  访问数据库
5.2.4  Statement和PreparedStatement
5.2.5  ResultSet结果集
5.2.6  事务处理
5.3  连接不同的数据库
5.3.1  连接MySQL数据库
5.3.2  连接MSSQL数据库
5.3.3  连接Oracle数据库
5.4  存取二进制文件
5.4.1  二进制文件的存取过程
5.4.2  在数据库中存取图片
5.5  使用JDBC操作数据库示例
5.5.1  在JSP页面中查询数据
5.5.2  分页
5.5.3  增、删及改数据
5.6  使用JDBC改进用户登录模块
5.6.1  在JSP中访问数据库
5.6.2  在Servlet中访问数据库
5.6.3  在JavaBean中访问数据库
5.7  小结
第6章  JSP常用技巧
6.1  会话跟踪技巧
6.1.1  使用session的会话跟踪
6.1.2  使用cookie跟踪会话
6.2  数据共享技巧
6.2.1  使用Java static属性
6.2.2  基于session会话
6.2.3  基于Web范围
6.3  错误处理技巧
6.3.1  JSP错误的常见类型
6.3.2  定向错误到友好页面
6.3.3  Web.xml中的配置HTTP错误
6.3.4  在JSP页面中处理错误
6.4  JSP文件上传技巧
6.4.1  使用JSP SmartUpload上传
6.4.2  SmartUpload文件上传实例
6.5  在JSP中使用JavaBean
6.5.1  使用JavaBean的原因
6.5.2  JavaBean的基本概念
6.5.3  在JSP中使用JavaBean
6.5.4  访问JavaBean属性
6.5.5  设置JavaBean属性
6.6  小结
第7章  JSP中常见问题及其处理
7.1  中文乱码问题
7.1.1  出现中文乱码的原因
7.1.2  JSP显示中文乱码处理
7.1.3  JSP页面传递中文乱码处理
7.1.4  Servlet接收参数中文乱码处理
7.1.5  URL参数中文乱码处理
7.1.6  数据库中文乱码处理
7.2  数据库处理问题
7.2.1  找不到数据库驱动Driver
7.2.2  无法连接数据库
7.2.3  数据库连接线程不足的问题
7.2.4  数据库查询性能差的问题
7.3  国际化问题
7.3.1  在JSP中实现国际化
7.3.2  时间格式的国际化
7.3.3  语言国际化
7.4  JSP安全问题
7.4.1  防范SQL注入式攻击
7.4.2  JSP中使用认证授权
7.5  小结
第8章  在Eclipse中开发JSP和Servlet
8.1  MyEclipse的下载与安装
8.1.1  安装Eclipse
8.1.2  安装Eclipse多国语言包
8.1.3  下载和安装MyEclipse
8.1.4  绑定Tomcat服务器与My-Eclipse
8.1.5  在Eclipse中启动Tomcat服务器
8.2  在Eclipse中创建Web工程
8.2.1  新建工程向导
8.2.2  Web工程目录结构
8.2.3  在Eclipse中添加类库
8.3  新建JSP页面
8.3.1  使用向导新建JSP页面
8.3.2  在Eclipse中编辑JSP页面
8.3.3  添加表单Form元素
8.4  新建Servlet
8.4.1  使用向导新建Servlet
8.4.2  查看Web.xml
8.4.3  编写处理代码
8.5  连接数据库
8.5.1  添加MySQL数据库驱动程序
8.5.2  建立数据库表
8.5.3  新建连接数据库类
8.5.4  修改Servlet处理数据库
8.6  在Eclipse中调试JSP和Servlet
8.6.1  部署Web项目
8.6.2  运行JSP
8.6.3  在Servlet中设置断点
8.6.4  在JSP中设置断点
8.6.5  跟踪监控变量
8.7  小结
第9章  表达式语言EL
9.1  表达式语言概述
9.2  语法
9.2.1  [ ]和.操作符
9.2.2  算术运算符
9.2.3  关系运算符
9.2.4  逻辑运算符
9.2.5  Empty运算符
9.2.6  条件运算符
9.2.7  改变运算符的优先级
9.3  隐含对象
9.4  命名变量
9.5  保留字
9.6  表达式语法实例
9.7  其它功能
9.8  小结
第10章  标准标签库JSTL
10.1  JSTL概念
10.1.1  JSTL概述
10.1.2  安装JSTL标签库
10.2 一般用途的标签
10.2.1  标签
10.2.2  标签
10.2.3  标签
10.2.4  标签
10.3  条件标签
10.3.1  标签
10.3.2  标签
10.3.3  标签
10.3.4  标签
10.4  迭代标签
10.4.1  标签
10.4.2  标签
10.5  与URL有关的标签
10.5.1  标签
10.5.2  标签
10.5.3  标签
10.5.4  标签
10.6  函数标签
10.6.1  标签
10.6.2  标签
10.6.3  标签
10.6.4  标签
10.6.5  标签
10.6.6  
10.7  使用标签库改进用户登录实例
10.8  小结
第11章  定义标签扩展
11.1  JSP标签扩展
11.1.1  自定义标签的原因
11.1.2  标签类型及结构
11.2  自定义标签接口
11.2.1  Tag接口
11.2.2  IteratorTag接口
11.2.3  BodyTag接口
11.2.4  SimpleTag接口
11.3  标签开发实例
11.3.1  实现Tag接口
11.3.2  从TagSupport继承
11.4  标签库配置
11.4.1  创建标签库描述文件
11.4.2  在Web中使用标签
11.5  小结
第2篇  扩展篇
第12章  基于MVC的Struts框架
12.1  JSP集成Struts框架
12.1.1  Struts体系结构
12.1.2  Struts的MVC模式
12.1.3  Struts流行的原因
12.1.4  在Struts中集成JSP
12.2  Struts核心组件
12.2.1  控制组件Action
12.2.2  模型组件
12.2.3  视图组件ActionForm
12.3  Struts HTML标签库
12.3.1  Struts的标签体系
12.3.2  HTML标签库
12.3.3  HTML标签
12.3.4  Form标签
12.4  Struts Bean标签库
12.5  Struts Logic标签库
12.6  Struts验证Validator框架
12.6.1  Validator框架
12.6.2  安装与配置及应用Validator框架
12.7  小结
第13章  Eclipse中开发Struts登录实例
13.1  MyEclipse对Struts的支持
13.1.1  文件创建向导支持
13.1.2  struts-config.xml可视化编辑器
13.2  在Eclipse中创建Struts工程
13.2.1  新建Struts工程向导
13.2.2  Struts项目结构
13.2.3  Struts类的包结构
13.2.4  查看web.xml和struts-config.xml文件
13.3  利用向导创建JSP
13.3.1  创建JSP页面
13.3.2  创建ActionForm
13.3.3  创建Action
13.3.4  创建Forward
13.3.5  查看Struts-config.xml文件
13.4  在Eclipse中编辑JSP页面
13.4.1  Struts标签输入支持
13.4.2  编写struts-config.xml文件
13.5  Struts验证支持
13.5.1  添加验证支持配置
13.5.2  添加页面输入验证
13.6  在Eclipse中调试Struts
13.6.1  部署Struts项目
13.6.2  运行入口页面
13.6.3  在Action中设置断点
13.6.4  跟踪ActionForm变量
13.7  小结
第14章  使用Hibernate实现JSP持久层
14.1  Hibernate ORM技术
14.1.1  Hibernate概念和体系结构
14.1.2  Hibernate数据库处理API
14.2  Hibernate基本配置
14.2.1  Hibernate的下载和安装
14.2.2  Hibernate开发的基本步骤
14.2.3  Hibernate配置文件
14.2.4  持久化类
14.2.5  对象/关系映射文件
14.3  Hibernate基本操作
14.3.1  持久化对象
14.3.2  查询对象
14.3.3  更新对象
14.3.4  删除对象
14.3.5  Hibernate基本操作实现实例
14.4  Hibernate对象标识符
14.5  Hibernate查询HQL语言
14.5.1  HQL语言特点
14.5.2  HQL查询构成
14.5.3  子查询
14.6  在JSP中使用Hibernate
14.6.1  使用Hibernate的JSP项目结构
14.6.2  在JSP中使用Hibernate访问数据库
14.7  小结
第15章  使用Spring集成JSP
15.1  Spring概述
15.1.1  控制反转IoC容器
15.1.2  面向方面的AOP编程
15.1.3  Spring如何集成JSP
15.2  基于Spring IoC容器开发
15.2.1  Spring的依赖注入
15.2.2  Bean封装机制
15.2.3  Bean的基本配置
15.3  Spring 集成JDBC
15.3.1  Spring及JDBC支持
15.3.2  JDBCTemplate API技术
15.3.3  JDBCTemplate与Template设计模式
15.3.4  JDBCTemplate对JDBC的改进
15.3.5  JDBCTemplate与数据库事务管理
15.3.6  在JSP中使用Spring集成JDBC
15.4  Spring集成Hibernate
15.4.1  Spring的Hibernate支持
15.4.2  HibernateDaoSupport支持
15.4.3  Hibernate SessionFactory注入
15.4.4  使用HibernateTemplate模板
15.4.5  HibernateTemplate的简捷方法
15.4.6  在JSP中使用Spring集成Hibernate
15.5  小结
第16章  在Eclipse中开发Hibernate和Spring
16.1  在Eclipse中开发Hibernate
16.1.1  为已有JSP项目添加Hibernate支持
16.1.2  Hibernate项目结构
16.1.3  Hibernate类包结构
16.1.4  hibernate.cfg.xml文件
16.2  创建映射文件
16.2.1  连接到数据库
16.2.2  新建Java类和映射文件
16.2.3  完善Java类及映射文件
16.3  应用DAO模式
16.3.1  编写业务层及其方法
16.3.2  编写DAO业务接口
16.3.3  编写DAO Hibernate实现
16.3.4  在JSP和Servlet中调用Hibernate
16.3.5  调试Hibernate应用
16.4  在Eclipse中开发Spring
16.4.1  为已有JSP项目添加Spring支持
16.4.2  Spring项目结构
16.4.3  Spring类包结构
16.4.4  applicationContext.xml文件
16.5  使用Spring ORM改进Hibernate
16.5.1  修改Spring配置文件
16.5.2  创建Hibernate sessionFactory连接
16.5.3  创建pojo映射
16.5.4  创建HibernateTemplate
16.6  小结
第3篇  实战篇
第17章  登录验证模块
17.1  在MySQL中建立用户信息表
17.1.1  确定用户字段
17.1.2  创建数据库和用户表
17.2  登录验证的建模分析
17.2.1  活动图
17.2.2  登录与注册的运行流程分析
17.3  创建用户数据连接缓冲池
17.3.1  下载与设置数据连接缓冲池类包
17.3.2  创建数据连接缓冲池
17.3.3  重载ActionServlet以应用连接缓冲池
17.3.4  配置web.xml应用重载的DataActionServlet
17.4  实现用户登录
17.4.1  创建登录视图组件
17.4.2  创建登录的控制器组件
17.4.3  创建模型组件
17.4.4  配置web.xml和struts-config.xml文件
17.4.5  验证用户输入数据的有效性
17.4.6  登录演示
17.5  实现新用户注册
17.5.1  创建注册视图组件
17.5.2  创建注册的控制器组件
17.5.3  创建模型组件
17.5.4  验证用户输入数据的有效性
17.5.5  配置web.xml和struts-config.xml文件
17.5.6  配置资源包属性文件
17.5.7  注册演示
17.6  小结
第18章  网站统计模块
18.1  需求分析及数据库设计
18.1.1  需求分析
18.1.2  数据库设计
18.2  获取统计数据
18.2.1  获取客户端信息
18.2.2  截取用户操作系统和浏览器信息
18.2.3  保存信息到数据库
18.2.4  防止重复记录
18.3  显示网站访问计数器
18.3.1  显示当前在线人数计数器
18.3.2  显示网站访问量计数器
18.3.3  使用图片样式显示计数器
18.4  生成统计分析结果
18.4.1  使用SQL命令统计分析
18.4.2  JFreeChart简介
18.4.3  生成日流量统计折线图
18.4.4  生成月流量统计柱状图
18.4.5  生成访问时段分布统计柱状图
18.4.6  生成浏览器类型统计饼状图
18.4.7  生成操作系统类型统计立体饼状图
18.5  小结
第19章  邮件收发模块
19.1  邮件相关协议简介
19.2  JavaMail简介
19.2.1  配置JavaMail开发环境
19.2.2  JavaMail邮件处理过程
19.2.3  JavaMail常用类
19.2.4  一个简单的邮件发送程序
19.3  发送HTML格式的邮件
19.3.1  撰写邮件页面
19.3.2  邮件发送Servlet
19.3.3  配置web.xml文件及运行
19.3.4  处理主题与正文中的乱码问题
19.4  发送带附件的邮件
19.4.1  发送本地文件形式的附件
19.4.2  发送远程文件形式的附件
19.5  实现邮件接收
19.5.1  接收邮件的一般过程
19.5.2  一个简单的邮件接收Servlet程序
19.6  小结
第20章  网页搜索模块
20.1  搜索引擎概述
20.1.1  搜索引擎分类
20.1.2  搜索引擎的实现原理
20.1.3  搜索引擎的相关技术
20.2  用第三方API实现站内搜索
20.2.1  使用Google API
20.2.2  使用百度API
20.3  基于Java的全文搜索引擎Lucene
20.3.1  Lucene概述
20.3.2  搜索应用程序与Lucene之间的关系
20.3.3  Lucene类包简介
20.3.4  建立索引
20.3.5  搜索索引
20.4  构建Lucene Web搜索程序
20.4.1  搜索程序的工作流程
20.4.2  建立搜索页面
20.4.3  建立搜索控制Servlet
20.4.4  创建索引
20.4.5  搜索索引
20.4.6  运行程序
20.5  小结
第21章  上传和下载模块
21.1  上传和下载简介
21.2  一个简单的文件下载程序
21.3  通过Servlet实现文件上传
21.3.1  建立文件上传表单
21.3.2  利用Servlet实现文件上传
21.3.3  配置web.xml并运行
21.4  使用FileUpload组件上传文件
21.4.1  FileUpload上传处理过程
21.4.2  一个简单的文件上传实例
21.4.3  配置web.xml并运行
21.4.4  查看上传进度
21.5  小结
第22章  新闻发布系统
22.1  系统分析与总体设计
22.1.1  需求分析
22.1.2  总体设计
22.2  数据库设计与实现
22.2.1  数据库需求分析
22.2.2  数据库逻辑设计
22.2.3  创建数据表
22.3  编写数据库处理类
22.4  编写JavaBean实现
22.4.1  处理管理员数据JavaBean
22.4.2  处理一级栏目数据JavaBean
22.4.3  处理二级栏目数据JavaBean
22.4.4  处理新闻数据JavaBean
22.5  设计后台页面与功能实现
22.5.1  实现管理员登录
22.5.2  实现一级栏目的功能
22.5.3  实现二级栏目的功能
22.5.4  实现栏目下的相关新闻功能
22.5.5  后台管理主页面集成
22.5.6  演示后台功能
22.6  前台页面设计与功能实现
22.6.1  主页面设计与功能实现
22.6.2  新闻显示页面设计与功能实现
22.7  小结
第23章  在线相册系统
23.1  系统分析与总体设计
23.1.1  系统功能描述
23.1.2  选择平台与架构
23.2  数据库设计与实现
23.2.1  数据库需求分析
23.3  实现DAO层
23.3.1  DAO组件的定义
23.3.2  实现DAO组件
23.4  实现Web层
23.4.1  相册管理
23.4.2  相册列表
23.4.3  上传相片
23.4.4  查看相片
23.4.5  管理相片
23.5  小结
第24章  在线购物系统
24.1  系统分析与总体设计
24.2  数据库设计与实现
24.2.1  数据库需求分析
24.2.2  数据库逻辑设计
24.3  设计与搭建架构
24.3.1  设计视图层
24.3.2  设计控制层
24.3.3  设计对象模型
24.3.4  设计数据访问层
24.4  在线购物页面
24.4.1  实现购书主页
24.4.2  实现二级分类页
24.4.3  实现图书详细页
24.5  商品查询
24.5.1  实现表示层
24.5.2  实现业务逻辑
24.5.3  实现数据访问层
24.6  管理购物车
24.6.1  添加商品到购物车
24.6.2  更新图书数量
24.6.3  取消购物车中的商品
24.7  生成订单导航页面
24.7.1  确认收货及定货地址
24.7.2  选择送货时间及运费
24.7.3  选择包装类型及费用
24.7.4  选择付款方式
24.7.5  选择缺货处理及余款处理方式
24.7.6  确认订单
24.7.7  成功生成订单
24.8  小结
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证