您的位置:首页 > 运维架构 > 网站架构

技术架构演变之早期jsp项目开发技术架构(一)

2010-07-01 14:55 555 查看
一、 技术架构简介
1. 底层数据连接:
使用连接池技术
1. 目的:
为了解决不必要的资源浪费,使用他来减少打开和关闭数据库的操作
2. 操作:
·通过Connection Pool来管理连接
·DataSource去管理Connection Pool
·DataSource又被JNDI绑定
3. 实例代码:
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DataBaseConnection {
final String JNDINAME = "java:comp/env/jdbc/jwxwj";
Connection conn = null;
// 定义一个得到连接的方法
public Connection getCon() {
try {
// 初始化查找命名空间
Context ctx = new InitialContext();
// 找到DataSource
DataSource ds = (DataSource) ctx.lookup(JNDINAME);
conn = ds.getConnection();
} catch (Exception e) {
System.out.println(e);
}
return conn;
}
}

/*
* 1.web.xml中增加: <resource-ref> <description>SqlServer Datasource example</description>
* <res-ref-name>jdbc/shell</res-ref-name> <res-type>javax.sql.DataSource</res-type>
* <res-auth>Container</res-auth> </resource-ref>
*
* 2.tomcat/conf/server.xml的GlobalNamingResources中增加 <Resource name="jdbc/mydb"
* type="javax.sql.DataSource" password="mypwd"
* driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2"
* maxWait="5000" validationQuery="select 1" username="sa"
* url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"
* maxActive="4"/>
*
* 3.在tomcat/webapps/myapp/META-INF/context.xml的Context中增加: <ResourceLink
* global="jdbc/shell" name="jdbc/shell" type="javax.sql.DataSource"/>
*/

2. 对应数据库字段得值对象(Value Object 简称:vo
1. 这个就是一个普通得JavaBean,里面包含对应数据库字段得get/set方法。
2. 如果有必要可以重写一下toString()方法。

3. 对应值对象(vo)的对象操作(Value Object Control 简称:vocontrol
1. 这里就是实现对vo得操作,比如一些基本操作CRUD和一些特殊操作登陆验证等。
2. 比如:
public class UserControl {
private String sql;// 定义sql语句
private Connection con;// 定义连接对象
private DataBaseConnection db;// 定义连接池对象
private PreparedStatement ps;
private ResultSet rs;
public UserControl() {
super();
// TODO Auto-generated constructor stub
}
// 定义一个查看用户是否登录的方法
public boolean logined(User user) throws ClassNotFoundException,
SQLException {
int login = 0;
// 创建一个连接数据库对象
this.db = new DataBaseConnection();
sql = "select * from userInfo where UserName = ?";
String name = user.getUserName();
// 得到连接池的连接
this.con = db.getCon();
ps = this.con.prepareStatement(sql);
ps.setString(1, name);
// 执行
rs = ps.executeQuery();
if (rs.next()) {
login = rs.getInt("login");
}
// 关闭连接
rs.close();
ps.close();
this.con.close();
if (login == 1) {
// 没登录
return true;
} else {
// 已经登录
return false;
}
}

4. 相应用户请求的Servlet
1. 这里就是调用对应vocontrol来实现用户请求的处理。
2. 这里还需要建立特殊的几个Servlet:
(1) Servletfilter过滤器
用于进行统一得编码和登录验证的检查。
(2) Servletlistener监听器
用于对Session进行相应的监听。

5. 界面交互(jsp/html
1. 通过jsp提供的一些标签进行遍历,分支等操作
2. 当然也可以自己建立自己需要得标题在前台jsp页面进行交互操作。这样达到jsp页面无java代码得目的。

二、 总结
1. 属于一个早期在做jsp项目的时候使用到的技术架构,很简单。
2. 存在很多得细节问题没有进行处理:比如异常处理,缓存处理等。
3. 而且在早期还使用了将数据全部查询出来再进行处理分页得状况,这样严重影响到了项目的效率。

项目源码:http://download.csdn.net/source/2506991
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐