一、JSP、Servlet、JDBC的简单理解
JSP:
JSP与PHP、ASP、ASP.NET等语言类似,运行在服务端的语言。
JSP(Java Server Pages),中文名叫java服务器页面,其根本是一个简化的Servlet设计。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(Java Server Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
JSP文件后缀名为(*.jsp)。
JSP开发的WEB应用可以跨平台使用,既可以运行在Linux上也能运行在Window上。
Servlet:
Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序,Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
JDBC
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,
JDBC设有2中接口,一个是面向应用程序层,其作用是使得开发人员通过SQL调用数据库和处理结果,而不需要考虑数据库的提供商;另一个是驱动程序层,处理与具体驱动程序的交互,JDBC驱动程序可以利用JDBC API创建Java程序和数据源之间的桥梁。
二、生命周期
JSP:
JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。
以下是JSP生命周期中所走过的几个阶段:
编译阶段:
servlet容器编译servlet源文件,生成servlet类
初始化阶段:
加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
执行阶段:
调用与JSP对应的servlet实例的服务方法
销毁阶段:
调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例
Servlet
Servlet的生命周期一般分四步:加载-->实例化(init())-->服务(service())-->销毁(destroy())
加载:加载一般是在运行容器(Weblogic、tomcat)时来完成,将servlet类加载到Weblogic中,或者是客户端发来请求时也可以
实例化:实例化一般是即读取配置信息、读取初始化参数等,这些基本上在整个生命周期中只需要执行一次。
服务:服务一般是当容器接收到客户端请求时,Servlet引擎将创建一个ServletRequest请求对象和一个ServletResponse响应对象,然后把这两个对象作为参数传递给对应Servlet对象的service方法。
销毁: 销毁一般是Servlet的卸载是由容器本身定义和实现,在卸载Servlet之前需要调用destroy()方法,以让Servlet自行释放占用的系统资源。
JDBC
对于JDBC来说,生命周期就是一个连接数据库的过程,主要包含以下几个步骤
(1)加载JDBC驱动程序:Class.forName("com.mysql.jdbc.Driver");//这是连接mysql数据库的驱动;成功加载后,会将Driver类的实例注册到DriverManager类中。
(2)提供JDBC连接的URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
(3)创建数据库的连接:使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的与连接的数据库的路径、数据库的用户名和密码来获得.
如:String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ; String password = "root" ;
(4)创建一个Statement: Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
(5)执行SQL语句:Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute。
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象. 2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句.
(6)处理结果:1、执行更新返回的是本次操作影响到的记录数. 2、执行查询返回的结果是一个ResultSet对象.
(7)关闭JDBC对象:操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:1、关闭记录集 2、关闭声明 3、关闭连接对象
三、深入理解
JSP
一个JSP页面可以被分为以下几部分:
(1)普通的HTML标记符;
(2)JSP标记,如指令标记、动作标记;
(3)成员变量和方法;
(4)Java程序片;
(5)Java表达式.
一个完整的JSP页面如下所示:
<%@pagecontentType="text/html;charset=UTF-8"%><!--JSP指令标记-->
<%@pageimport="java.util.Date"%><!--JSP指令标记-->
<%!Date date;//数据声明
int sum;
public int add(intm,intn){//方法声明
return m+n;
}
%>
<HTML><BODY bgcolor=blue><!--HTML标记-->
<FONT size=4><P>程序片创建Date对象:
<%date=new Date();//Java程序片
out.println("<BR>"+date);
sum=add(12,34);
%>
<BR>在下一行输出和:<BR>
<%=sum+100%><!--Java表达式-->
</FONT></BODY></HTML>
Servlet
这是一个简单的Servlet页面 http://bbs.landingbj.com/t-0-347701-1.html
这个过程就是:1) 客户端发送请求至服务器端;2) 服务器将请求信息发送至 Servlet;3) Servlet 生成响应内容并将其传给服务器.响应内容动态生成,通常取决于客户端的请求;4) 服务器将响应返回给客户端.
其中JSP和Servlet的区别可以参考这个:http://bbs.landingbj.com/t-0-347571-1.html