MVC架构模式与利用JAVABEAN分页
时间:2011-01-21
众所周知MVC不是设计模式,是一个比设计模式更大一点的模式,称作设计模式不合理,MVC模式应该叫架构模式,MVC里面用了许多小的模式,例如策略模式,组合模式,聚集模式,可以用到的模式有十几种之多,而设计模式里也就27种,MVC很重要,现在流行的STRUTS框架也是类似的实现,建议大家有时间可以研究下STRUTS,现在很多公司都开始使用这个框架来做大型的企业系统开发,STRUTS是APACHE的一个开源项目,所有资料都可以从APACHE网站得到。当然目前国内也有翻译了一些STRUTS文章,不过大都不完整,介绍的都是初级的知识,如果想要进一步学习的话可以买本STRUTS的书.
mvc也就是模型-视图-控制台,M就是javabean,V就是JSP,C就是java Servlet。
第一步写Hashtable类,把所有类与JSP文件路径写进这里
第二步写最抽象的接口interface,给出一个方法,例如
public void execute(HttpServlet servlet,HttpServletRequest request,HttpServletResponse response);
所有的与客户端交互的SERVLET类都必须实现这个接口的execute方法,这样才能在工厂中执行。
第三步写控制台,其实这个我觉得就是工厂模式的一种更高的工厂模式,。
根据动作来执行相应的类
WEB.XML文件只要配置一个动作就可以了,这个大家应该熟悉了吧,例如
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>servlet_name</servlet-name>
<servlet-class>servlet_class_path</servlet_class>
</servlet>
<servlet-mapping>
<servlet-name>servlet_name</servlet-name>
<url-pattern>映射名</url-pattern>
</servlet-mapping>
</web-app>
方便了不少吧。不用每个类每个动作都在XML文件里加上。况且对以后功能上的增加修改都比较方便。
利用JAVABEAN分页其实很简单,但要写好写的有结构一点的话最少也需要3个类,一个BEAN类,一个处理页码等其他数据,一个得到客户端值,下面我给出一个例子,如果有什么不懂请跟贴。
简单的BEAN类
package geezer_Model.geezer_user;
public class listuser_bean {
String name;
String pass;
public void setName(String name){
this.name=name;
}
public void setPass(String pass){
this.pass=pass;
}
public String getName(){
return this.name;
}
public String getPass(){
return this.pass;
}
}
简单的处理分页数据的类
package geezer_Model.geezer_user;
import javax.sql.*;
import java.sql.*;
import geezer_controller.*;
import geezer_Database.getConnection;
public class listuser_page {
public listuser_page() {
}
Connection conn=null;
Statement simt=null;
ResultSet rs=null;
int intpage=1;
int intpagecount=10;
int pagecount=20;
int page_listcount=1;
String sql;
public listuser_bean[] getPage(int intpage,int intpagecount,String sql){
this.intpage=intpage;
this.intpagecount=intpagecount;
this.sql=sql;
listuser_bean[] tmie=null;
try{
conn=getConnection.getNewConnection();
simt=conn.createStatement();
rs=simt.executeQuery(this.sql);
if(rs.next()){
rs.last();
pagecount=rs.getRow();
page_listcount=(pagecount+intpagecount-1)/intpagecount;
if(intpage>page_listcount){
intpa
|