`
lovnet
  • 浏览: 6704699 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Oracle培训(四十四)——Servlet第四章知识点总结——资源访问

 
阅读更多

Oracle培训(四十四)——Servlet第四章知识点总结——资源访问

分布式开发

1. 分布式开发

a) 什么是分布式开发:

i. 是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。

ii. 用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。

b) 特点:

i. 运行在不同的地址空间中的计算器互相通讯.

ii. 双层模型(客户机/服务器)由多个客户跟一个或多个服务器通话.

2. 分布式Java技术

a) JAVA数据库连接(JDBC)

b) Java远程方法调用(RMI / IIOP)

c) 公共对象请求代理体系结构( CORBA) 通过Java接口描述语言(IDL)描述

3. 资源类型

a) 数据库

b) 网页

c) 文件

d) 图片

e) ……

目标

熟悉和掌握如何访问数据库资源

熟悉和掌握如何访问页面资源

熟悉和掌握如何访问环境信息

知识点预览

数据访问

Servlet与资源访问

数据访问

1. JAVA数据库连接(JDBC)

a) 作用:

i. 使JAVA客户端程序与数据库隔断

ii. 提供一个由数据库驱动实现的通用接口类

b) 创建步骤:

i. 第一步:获得数据库连接参数信息

ii. 第二步:注册数据库驱动

iii. 第三步:实例化连接对象

iv. 第四步:实例化statement对象

v. 第五步:执行SQL语句

vi. 第六步:处理结果集

vii. 第七步:关闭对象,释放资源

2. 一个数据库Servlet 示例

<init-param>

      <param-name>driver</param-name>

      <param-value>com.mysql.jdbc.Driver</param-value>

    </init-param>

    <init-param>

      <param-name>url</param-name>

      <param-value>jdbc:mysql://localhost:3306/mydatabase</param-value>

    </init-param>

    <init-param>

      <param-name>user</param-name>

      <param-value>root</param-value>

    </init-param>

    <init-param>

      <param-name>password</param-name>

      <param-value>admin</param-value>

</init-param>


3. JDBC 优势与不足

a) 优势:

JDBC能够处理多用户并发访问同一数据引发的并发问题.

b) 不足

i. 每建立一个数据库连接需要一至三秒.

ii. 每一个请求都要创建一个新的连接,效率是很低的.

iii. 当数据库环境发生变化时,应用程序会出错

1. 数据库名称、登录信息

2. 数据库类别

4. 通过JNDI访问数据库

a) 必须有一个数据源使用JNDI绑定

b) Servlet通过一个映射到JNDI名称的数据源引用名称来获取数据源

<Resource name="jdbc/wcleye" 

type="javax.sql.DataSource"    password="admin"

driverClassName="com.mysql.jdbc.Driver"   username="root"

maxIdle="2" maxWait="10" url="jdbc:mysql://localhost:3306/mydatabase"

author="Container"

/>


5. 数据源示例

try{

Context initCtx=new InitialContext();

ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/wcleye");

if(ds!=null){

Connection con=ds.getConnection();

return con;

}else{

return null;

}

}catch(Exception ne){

ne.printStackTrace();

return null;

}


Servlet与资源访问

1. 分发不同的结果到一个视图页面

a) 把结果集封装到一个JavaBean

b) 从一个ServletContext获取分发器

c) RequestDispatcher 类

d) 分发请求到一个新的资源上

2. 封装结果

a) 创建一个持有学生状态的学生类

3.Servlet中修改doGet()方法

4.Servlet中增加一个dispResultSet()方法

5.Servlet中修改doGet()方法

6. 视图页—users.jsp

<table>

<tr><td>Id</td><td>name</td><td>password</td></tr>

<%

ArrayList users=(ArrayList)request.getAttribute("users");

Iterator i=users.iterator();

while(i.hasNext()){

User s=(User)i.next();

%> 

 

<tr>

<td><%=s.getId() %></td><td><%=s.getName() %></td><td><%=s.getPassword() %></td>

</tr>

 

<%

}

%>


7. 分发请求到一个新的资源上

a) 从一个请求分发器中有两种方法来分发请求

i. Forward:把请求从一个servlet跳向同一个服务器上的另一个资源上

ii. Include: :包括资源的内容

b) 两种得到请求分发器的方法

i. ServletRequest.getRequestDispatcher() //相对路径

ii. ServletConext.getRequestDispatcher() //绝对路径

c) 新资源可以访问其他不同范围属性的请求和响应

i. javax.servlet.ServletContext—application in jsp

ii. javax.servlet.http.HttpSession—session in jsp

iii. javax.servlet.ServletRequest—request in jsp

iv. javax.servlet.jsp.PageContext—page in jsp

8. 访问环境条目

a) 通过JNDI服务

b) 部署描述包括:

Environment name="isReady" value="true" type="java.lang.Boolean" override="false"/>

c)servlet中的代码片断

资源访问回顾

数据库访问

通用JDBC客户端

通过JNDI

资源可以通过请求分发器访问:

jsp

Servlet

资源可以通过JNDI访问:

环境变量

资源环境变量

EJB(企业级应用JavaBean )

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics