jsp设计模式---MVC模式
一:介绍
以前自己是写asp和php代码的,后来为了赶上时代的步伐吧.我开始涉足jsp.
但是在刚刚开始写的时候,总是喜欢拿jsp和asp对比着来写程序.后来发现这样真的很笨.而且这样写jsp代码不如就写asp好了,根本就体现不出jsp和java的强大.当然这个就是我今天要和大家讨论的在jsp中实现MVC三层模式.
二:什么是MVC
MVC是MODEL_VIEW_CONTROL的缩写。MODEL_VIEW_CONTROL是软件设计的典型结构。在这种设计结构下,一个应用被分为三个部分:model,view和control,每个部分负责不同的功能。model是指应用程序的数据,以及对这些数据的操作;view是指用户界面;control负责用户界面和程序数据之间的同步,也就是完成两个方向的动作:一、在根据用户界面(view)的操作完成对程序数据(model)的更新,二、将程序数据(model)的改变及时反应到用户界面(view)上。
三:设计思路
当你构建一个网站时。你必须考虑界面的问题,而界面修改是非常平常的。如果你在jsp中实现所有的操作,一旦修改界面你麻烦大了。美工不懂jsp的,你必须自己去修改无数个文件,头不要太大,而此时一般时间都很紧,使用MVC则可以减少你的一些麻烦。
在设计时候jsp只负责显示页面,也就是说jsp调用Bean(Struts,servlet)传过来的数据然后显示而Bean(Struts,servlet)负责收集jsp需要的数据,用ArrayList(Arttibute)传给jsp。假如需要提交表单,一般也直接提交给Struts,servlet,处理后以后再返回处理信息。而其中相应的业务逻辑由Bean去实现。
四:Bean的设计
我一般在设计Bean的时候有两个目录:
比如说文章系统就有:
com.Guessbook.business
和
com.Guessbook.db
这两个文件夹(包)
business下放业务逻辑和封装数据
db下放操作数据库和数据库连接程序(当然我没有用数据池的情况下,建议使用存储过程)
五:设计实例
不知道为什么所有写设计实例和入门程序的都喜欢用留言板,那我也用用吧.
business下
有GuestbookInfo.java(用于封装数据) GuestbookFactory.java(连接DBGuestbook.java) Guestbook.java(用于写抽象类、接口并实现业务逻辑)
db下
有DBGuestbook.java(所有对数据库的操作都在这个里面,比如:insert,update,select,delete,并将没有操作在一个方法内) 和 DBConnection.java(数据库连接文件)
数据表结构
create table guestbook(
id int8 default nextval('seq_guestbook'), /**主键**/
title varchar(),/**主题**/
body text,/**内容**/
sayid int8,/**发言人**/
toid int8,/**接受人**/
saytime datetime default now(),/**留言时间**/
newflg smallint default 1/**是否查看过**/
);
以下是部分代码,仅参考:
GuestbookInfo.java
=======================
import java.util.*;
public class Guestbook(){
private int id;
private String title;
private body title;
private int sayid;
private int sayid;
private Date saytime;
private short newflg;
public Guestbook(){
}
public int getId(){
return this.id;
}
public void setId(int _id){
this.id=_id;
}
........
(全是get/set方法)
}
GuestbookFactory.java
============================================
public class GuestbookFactory {
private static String className = "com.Guestbook.db.DBGuestbook";
public GuestbookFactory() {
}
public static Guestbook getInstance() {
try {
return () Class.forName(className).newInstance();
}
catch (Exception e) {
return null;
}
}
}
Guestbook.java
==============================
package com.Guestbook.business;
import java.util.List;
public abstract class Guestbook {
protected GuestbookInfo gi;
public Guestbook() {
}
public GuestbookInfo getGi() {
return gi;
}
public void setGi(GuestbookInfo gi) {
this.gi = gi;
}
public abstract List getGuestbookList();
\\下面全是你对数据库操作的方法
}
DBGuestbook.java
============================
package com.Guestbook.db;
import java.sql.*;
import java.util.List;
import java.util.ArrayList;
import com.Guestbook.business.*;
public class DBGuestbook extends Guestbook {
String sql;
public DBGuestbook() {
}
public List getGuestbookList(){
ResultSet rs = null;
List GuestbookList = new ArrayList();
DBConnection conn = new DBConnection();
try{
rs=conn.executeQuery("select * from guestbook");
while (rs.next()){
GuessbookInfo gi=new GuestbookInfo();
gi.setId(rs.getInt("id"));
\\实现其他的方法 略
GuestbookList.add(gi);
}
}
catch (Exception e) {
System.err.println(
"com.Guessbook.db.DBGuestbook.getGuestbookList()" + "出错");
e.printStackTrace();
}
finally {
conn.close();
return GuestbookList;
}
}
}
六:技术优势
1:结构清晰
2:维护方便
3:保护代码比较好。
七:结束语
我只是简单的介绍一下,具体的使用你需要在实际运用中积累,如果你觉得他太垃圾,我说一声对不起了。
编写人:MIND