Jsp/Servlet/JDBC_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2967 | 回复: 0   主题: Jsp/Servlet/JDBC        下一篇 
    本主题由 koei123 于 2015-6-2 8:56:17 移动
zhian.zuo
注册用户
等级:上士
经验:314
发帖:10
精华:0
注册:1970-1-1
状态:离线
发送短消息息给zhian.zuo 加好友    发送短消息息给zhian.zuo 发消息
发表于: IP:您无权察看 2014-7-8 11:01:07 | [全部帖] [楼主帖] 楼主

(一)Jsp/Servlet 工作原理

Servlet


Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器。
Servlet 运行在 Servlet 容器中,并由容器管理从创建到销毁的整个过程。

Servlet 的生命周期

(1) 加载和实例化
Servlet 容器装载和实例化一个 Servlet。创建出该 Servlet 类的一个实例。
(2) 初始化
在 Servlet 实例化完成之后,容器负责调用该 Servlet 实例的 init() 方法,在处理用户请求之前,来做一些额外的初始化工作。
(3) 处理请求
当 Servlet 容器接收到一个 Servlet 请求时,便运行与之对应的 Servlet 实例的 service() 方法,service() 方法再派遣运行与请求相对应的 doXX(doGet,doPost) 方法来处理用户请求。
(4) 销毁
当 Servlet 容器决定将一个 Servlet 从服务器中移除时 ( 如 Servlet 文件被更新 ),便调用该 Servlet 实例的 destroy() 方法,在销毁该 Servlet 实例之前,来做一些其他的工作。
其中,(1)(2)(4) 在 Servlet 的整个生命周期中只会被执行一次。

Servlet 的工作原理


结合右边给出的流程图:
当客户端浏览器向服务器请求一个 Servlet 时,服务器收到该请求后,首先到容器中检索与请求匹配的 Servlet 实例是否已经存在。若不存在,则 Servlet 容器负责加载并实例化出该类 Servlet的一个实例对象,接着容器框架负责调用该实例的 init() 方法来对实例做一些初始化工作,然后Servlet 容器运行该实例的 service() 方法。

若 Servlet 实例已经存在,则容器框架直接调用该实例的 service() 方法。service() 方法在运行时,自动派遣运行与用户请求相对应的 doXX() 方法来响应用户发起的请求。
通常,每个 Servlet 类在容器中只存在一个实例,每当请求到来时,则分配一条线程来处理该请求。


JSP 工作原理

结合右边给出的流程图:
当客户端浏览器向服务器请求一个 JSP 页面时,服务器收到该请求后,首先检查所请求的这个JSP 文件内容 ( 代码 ) 是否已经被更新,或者是否是 JSP 文件创建后的第一次被访问,如果是,那么,这个 JSP 文件就会在服务器端的 JSP 引擎作用下转化为一个 Servlet 类的 Java 源代码文件。紧接着,这个 Servlet 类会在 Java 编译器的作用下被编译成一个字节码文件,并装载到 jvm 解释执行。剩下的就等同于 Servlet 的处理过程了。
如果被请求的 JSP 文件内容 ( 代码 ) 没有被修改,那么它的处理过程也等同于一个 Servlet 的处理过程。即直接由服务器检索出与之对应的 Servlet 实例来处理。

需要注意的是,JSP 文件不是在服务器启动的时候转换成 Servlet 类的。而是在被客户端访问的时候才可能发生转换的 ( 如 JSP 文件内容没有被更新等,就不再发生 Servlet 转换 )。就 Tomcat 而言,打开目录 %Tomcat%/work/%您的工程文件目录%,然后会看到里面有 3个子目录:org/apache/jsp,若没有这 3 个目录,说明项目的 JSP 文件还没有被访问过,打开进到 jsp 目录下,会看到一些 *_jsp.java 和 *_jsp.class 文件,这就是 JSP 文件被转换成Servlet 类的源文件和字节码文件了。


Servlet 与 JSP

JSP 本质是一个 Servlet,它的运行也需要容器的支持。
在 JSP 和 Servlet 文件中都可以编写 Java 和 HTML 代码,不同的是,Servlet 虽然也可以动态的生成页面内容,但更加偏向于逻辑的控制。
JSP 最终被转换成 Servlet 在 jvm 中解释执行,在 JSP 中虽然也可以编写 Java 代码,但它更加偏向于页面视图的展现。
在 MVC 架构模式中,就 JSP 和 Servlet 而言,C 通常由 Servlet 充当,V 通常由 JSP 来充当。

JSP的指令和内置对象

JSP的三个编译指令:> page :该指令是针对当前页面的指令。

> include :用于指定包含另一个页面。

> taglib :用于定义和访问自定义标签。

格式如下:<%@ 编译指令名 属性名="属性值"... %>

JSP的7个动作指令:

编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作。

jsp:forward : 执行页面转向,将请求的处理转发到下一个页面。

jsp:param : 用于传递参数,必须与其他支持参数的标签一起使用。

jsp:include : 用于动态引入一个JSP页面。

jsp:plugin : 用于下载JavaBean或Applet到客户端。

jsp:useBeam : 创建一个JavaBean的实例(初始化)。

jsp:setProperty : 设置JavaBean实例的属性值。

jsp:getProperty : 输出JavaBean实例的属性值。

JSP脚本中的9个内置对象:

JSP脚本中包含了9个内置对象,这9个内置对象都是Servlet API接口的实例(可以直接使用)(application、config、exception、out、pageContext、request、response、session)。

JSP内置对象的实质:他们要么是_jspService()方法的形参,要么是_jspService()方法的局部变量,所以在JSP脚本中调用这些对象,无须创建它们。

二.JDBC

JDBC从物理结构上说就是Java语言访问数据库的一套接口集合。
从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。

JDBC API 使得开发人员可以使用纯Java的方式来连接数据库,并进行操作。
ODBC:基于C语言的数据库访问接口。
JDBC:是Java版的ODBC。
JDBC 特性:高度的一致性、简单性(常用的接口只有4、5个)。

数据库的连接是整个程序必要的接口,在实际中个个公司用到的数据库可能不一样,利用java程序实现了对不同数据库的连接。

MySQL
String Driver="com.mysql.jdbc.Driver"; //驱动程序
//连接的URL,db_name为数据库名
String URL="jdbc:mysql://localhost:3306/db_name";
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver);
Connection con=DriverManager.getConnection(URL,Username,Password);
Microsoft SQL Server
//连接SQL数据库的方法
String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
//db_name为数据库名
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name";
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver); //加载数据可驱动
Connection con=DriverManager.getConnection(URL,UserName,Password);
Oracle(用thin模��):
String Driver="oracle.jdbc.driver.OracleDriver"; //连接数据库的方法
String URL="jdbc:oracle:thin:@loaclhost:1521:orcl"; //orcl为数据库的SID
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver); //加载数据库驱动
Connection con=DriverManager.getConnection(URL,Username,Password);
DB2:
//连接具有DB2客户端的Provider实例
String Driver="com.ibm.db2.jdbc.app.DB2.Driver";
//db_name为数据可名
String URL="jdbc:db2://localhost:5000/db_name";
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver);
Connection con=DriverManager.getConnection(URL,Username,Password);


JSP/Servlet/JDBC的内容还有很多,这里只是相关内容的局部,在接下来的实践中慢慢熟练更深入的知识。

该贴由koei123转至本版2015-6-2 8:56:17




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论