Notes

JSP | 05 MVC设计模式&JavaBean

🌸Author Echo Pan


1. MVC设计模式

1.1. 背景

纯JSP写网页的代码重用性低、页面维护性差,开发不便。而我们可以将程序中的java代码、业务功能代码放到后台中,将逻辑代码(页面流程控制)放到Servlet中,JSP仅用来显示数据。这就是经典的MVC设计模式。

1.2. 设计模式

设计模式(Design Pattern)是一套可被反复使用的,经过编目分类的代码设计经验总结。好处是提高代码重可用性、让代码更易理解和维护、保证代码的可靠性。

传统的设计模式分三大类,分别是创建型、结构型和行为型。而最流行的软件设计模式即为MVC设计模式。

1.3. MVC概念

MVC即ModelViewController(模型 - 视图 - 控制器),其中Model是应用的核心。

其中Model一般使用JavaBean实现,view由JSP担任,Control通过Servlet组件实现。

使用MVC设计模式的好处有3个层次各司其职、分工明确,组件可重用性高(分离)。

2. JavaBean

2.1. 简介

Java语言写的可重用组件,本质上是个Java类。

最早Javabean用来做可视化界面,称为可视化的JavaBean;后来在Java Web开发中用于实现业务逻辑和封装业务对象,称为非可视化的JavaBean。我们一般常用的就是非可视化的,它不需要继承任何基类或者接口,默认实现序列化接口java.io.Serializable。只有在使用可视化bean时要继承java.awt.Component类。

2.2. 规范

一般把满足以下规范的java类称作bean

  1. 使用getXxx()setXxx()方法获取或更改成员变量的值,如果是boolean型,可以把getXxx()换成isXxx()
  2. 类中方法必须是public的,属性是private的;
  3. 类中必须包含一个无参的构造方法。

2.3. 组成

一个JavaBean可以包含以下三个部分:

  1. 属性(properties
  2. 方法(method
  3. 事件(event

JavaBean详解

3. MVC假分页部分代码

<%
NewsTitleBarDaoImpl newsTitleBarDao=new NewsTitleBarDaoImpl();
NewsTitleBar newsTitleBar=new NewsTitleBar();
request.setCharacterEncoding("UTF-8");
List<NewsContent> newsContentList = newsContentDao.newsSelectListByTitleName_Content_Writer(newsContent); 
    int pageSize=3;//每页元素数
    int count=newsContentList.size();//元素数
    int pageCount=count%pageSize==0?count/pageSize:count/pageSize+1;//总页数
    String pageNoStr=request.getParameter("pageNo");//当前页
    if(pageNoStr==null ||"".equals(pageNoStr))pageNoStr="1";//初值
    int pageNo=Integer.parseInt(pageNoStr);
    List<NewsContent> currentPageList=null;
    if(pageNo<=0)pageNo=1;//边界控制,第一页
    if(pageNo>=pageCount){
    pageNo=pageCount;//最后一页
    currentPageList=newsContentList.subList((pageNo-1)*pageSize,newsContentList.size());
    }else{
    currentPageList=newsContentList.subList((pageNo-1)*pageSize,(pageNo-1)*pageSize+pageSize);
    }
%>
    <ul id="fakePage">
    <li><a href="./NewsContentList.jsp?pageNo=<%=pageNo-1%>">上一页</a></li>
<%
    for(int i=1;i<=pageCount;i++){
    if(pageNo==i){
%>
    <li><a href="./NewsContentList.jsp?pageNo=<%=i %>" style="color:red;"><%=i %></a></li>
<%
    }else{
%>
    <li><a href="./NewsContentList.jsp?pageNo=<%=i %>"><%=i %></a></li>
<%  }
    }
%>
    <li><a href="./NewsContentList.jsp?pageNo=<%=pageNo+1%>">下一页</a></li>
    </ul>

上一章:04.会话跟踪&过滤器

下一章:00.

返回目录