mvc模式 :
1、模型层model。(表示数据和业务处理,对应组件是javaBase)
2、视图层view。(表示用户看到并与之交互的界面,对应组件是jsp和html)
3、控制层controller的缩写(用于接收用户输入并调用模型和视图去完成用户的请求,对应组件是servlet)
使对象间的耦合程度降到最低。
一 、 java技术中web编程技术的发展:model 1模式和model2模式
1、 model 1模式(纯jsp模式)
缺点:1、代码重用。 2、后期维护和扩展。 3、页面维护。
2、model 2模式(jsp+servlet+javaBase)
model 2 体现了基于mvc的设计模式,简单的说就是将数据的显示、流程控制、业务逻辑处理分离,使之相互独立。javaBase充当模型,jsp充当视图,servlet充当控制器。
二 设计模式和框架的区别
设计模式:设计模式是一套被反复使用的成功的代码设计经验的总结
框架:是一种可重用的,半完成的应用程序。
区别1、设计模式是设计重用,框架是部分代码重用和部分设计重用。
2、设计模式是抽象描述,框架有具体代码的实现。
3、设计模式针对各种应用,框架只针对某一特定应用。
三:mvc模式的优点
1、各司其职,互不干涉。 2、有利于开发中的分工。3、有利于组件的重用。
四、mvc模式的不足。
1、系统结构和实现较困难。2、视图和控制器过于紧密。3、不使用于小型甚至中等规模的应用程序。
五。基于mvc模式的框架
框架的特性1、可重用 2、半成品 3、应用程序
自定义mvc框架
一 model设计
二 controller设计
三 view设计
controller设计步骤
1、配置servlet访问路径
<servlet-mapping>
<serlet-name>ActionServlet</serlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
2、编写相关的数据访问层和业务层代码
3、controller设计
(1)定义action接口
public interface Action{
//定义一个返回字符串的方法,表示需要到哪个页面的url字符串
public String execute(HttpservletRequest request,HttpServletResponse response);
}
(2)action实现类
public Class LoginAction implements Action{
public String execute(HttpservletRequest request,HttpServletResponse response){
request.setCharacterEncoding("utf-8");
//...servlet实现功能
if(){
request.setAtrribute()
return "url";
}
}
}
4、实现controller类(servlet类)
public class ActionServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); //获得Action对象 Action action=this.getAction(request); String resultView=null; try { resultView=action.execute(request,response); } catch (Exception e) { // TODO: handle exception } if(resultView!=null){ request.getRequestDispatcher(resultView).forward(request, response); } } public Action getAction(HttpServletRequest request){ //获取请求的url String url=request.getRequestURI(); //获取上下文路径 String contextPath=request.getContextPath(); //截取上下文以后的路径 String actionpath=url.substring(contextPath.length()); //获取action字符串 String actionName=actionpath.substring(1, actionpath.lastIndexOf('.')).trim(); Action action=null; //添加新功能时在这里添加 if(actionName==""){ action=new LoginAction(); } return action; } }
5、配置web.xml