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

一、           技术架构简介

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.xmlGlobalNamingResources中增加 <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.xmlContext中增加: <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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值