🌸Author Echo Pan
纯JSP写网页的代码重用性低、页面维护性差,开发不便。而我们可以将程序中的java
代码、业务功能代码放到后台中,将逻辑代码(页面流程控制)放到Servlet
中,JSP仅用来显示数据。这就是经典的MVC设计模式。
设计模式(Design Pattern)是一套可被反复使用的,经过编目分类的代码设计经验总结。好处是提高代码重可用性、让代码更易理解和维护、保证代码的可靠性。
传统的设计模式分三大类,分别是创建型、结构型和行为型。而最流行的软件设计模式即为MVC设计模式。
MVC
概念MVC即Model
、View
、Controller
(模型 - 视图 - 控制器),其中Model
是应用的核心。
其中Model
一般使用JavaBean
实现,view
由JSP担任,Control
通过Servlet
组件实现。
使用MVC
设计模式的好处有3个层次各司其职、分工明确,组件可重用性高(分离)。
用Java
语言写的可重用组件,本质上是个Java
类。
最早Javabean
用来做可视化界面,称为可视化的JavaBean
;后来在Java Web
开发中用于实现业务逻辑和封装业务对象,称为非可视化的JavaBean
。我们一般常用的就是非可视化的,它不需要继承任何基类或者接口,默认实现序列化接口java.io.Serializable
。只有在使用可视化bean
时要继承java.awt.Component
类。
一般把满足以下规范的java
类称作bean
:
getXxx()
和setXxx()
方法获取或更改成员变量的值,如果是boolean
型,可以把getXxx()
换成isXxx()
;public
的,属性是private
的;一个JavaBean
可以包含以下三个部分:
properties
)method
)event
)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>