MVC架構模式與利用JAVABEAN分頁!(原創)

衆所周知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){


        intpage=page_listcount;


      }


      int pagewo=(intpage-1)*intpagecount+1;


      if(pagewo>0){


        rs.absolute(pagewo);


      }


      tmie=new listuser_bean[intpagecount];


      int i=0;


     do{


        tmie=new listuser_bean();


        tmie.setPass(rs.getString("password"));


        tmie.setName(rs.getString("username"));



      } while(rs.next() && ++i < intpagecount);


    }


    }catch(Exception e){


      e.printStackTrace();


    }


    setListCount(page_listcount);


    setCount(pagecount);


    return tmie;


  }


  public void setCount(int a){


    this.pagecount=a;


  }


  public void setListCount(int b){


    this.page_listcount=b;


  }


  public int getCount(){


    return pagecount;


  }


  public int getListCount(){


    return page_listcount;


  }


}


根據客戶端數據來進行顯示


package geezer_Model.geezer_user;


import java.io.*;


import javax.servlet.*;


import javax.servlet.http.*;


import javax.sql.*;


import java.sql.*;


import geezer_controller.*;


import geezer_Database.getConnection;


public class listuser implements Geezer_Action{


public void execute(HttpServlet servler,HttpServletRequest request,HttpServletResponse response)
     throws IOException{


   response.setContentType("text/html");


   PrintWriter out=response.getWriter();


   Statement simt=null;


   ResultSet rs=null;


   Connection conn=null;


   int intpage=1;


   int intpagecount=2;


   try{


     intpage = Integer.parseInt(request.getParameter("intpage"));



   }catch(Exception e){


       intpage=1;
   }


   if (intpage<=0){


     intpage=1;


   }


   try{


     intpagecount =Integer.parseInt(request.getParameter("intpagecount"));


   }


   catch(Exception e){


     intpagecount=2;


   }


   listuser_bean[] pages=null;


   listuser_page page=new listuser_page();



   String sql="select * from userlist";


   pages=page.getPage(intpage,intpagecount,sql);


   out.println("count=" + page.getCount() + "<br>");


   out.println("ListCount=" + page.getListCount() + "<br>");


   if(intpage>page.getListCount()){


     intpage=page.getListCount();


   }


  for (int i=0;i<pages.length;i++){


     if(pages==null){


       break;


     }


     out.println(pages.getName()+" "+pages.getPass()+"<br><br>");


   }


  out.println("<script language=javascript>");


  out.println("function check(theform,value){");


  out.println("theform.intpage.value=value;");


  out.println("theform.submit();");


  out.println("}</script>");


  out.println("<form action=/main?action=listuser method=post name=theform>");


  out.println("<input type=hidden name=intpage>");


  out.println("<a href=javascript:check(theform,"+(intpage+1)+");>next</a><br>");


  out.println("<a href=javascript:check(theform,"+(intpage-1)+");>back</a>");


  out.println("</form>");


}


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章