`
M_ittrue
  • 浏览: 77740 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

MVC总结报告

阅读更多
    最近听了两节的MVC讲解,特在此做一个小小的个人总结以便日后三省。
MVC(Model-View-Control,模型—视图—控制器模式),这样一说,还是略显抽像的。因为我们是在做一个简单的Blog,所以总结自然而然也是跟它相关而谈的。简单而论吧,Model模型就是我们后台的JavaBean(例如对数据table的设定与操作(pjo与dao类)),View视图就相当于我们的游览器的Jsp页面,所以控制器Control自然就是我们的Servlet了,这样MVC就把它们进行了一个简单的分类,方便分配自己的工作。
    以上都只是一些定义罢了,真正的用处还没讲到的。我们先从我们可以看到的的地方讲起吧,JSP自然是负责生成一些从数据库抽出来后显示的动态页面。动态页面可以简单而粗略的理解为,不同的用户登陆会得到相同结构而不同容内的页面。当然们在页面进行相关操作时,可能会发出信息请求,这时请求会发送到Servlet,在MVC里面只有一个Servlet,它在Web里面是采用了通配符*去进行模糊匹配的比如:
 
<servlet>
    <servlet-name>Constorl</servlet-name>
    <servlet-class>cn.netjava.Servlet.Constorl</servlet-class>
  动态参数,是一对名值对
  <init-param>
    <param-name>LoginAction</param-name>//类名
    <param-value>cn.netjava.action.LoginAction</param-value>//类所在路径
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Constorl</servlet-name>
    <url-pattern>*.lsk</url-pattern> 这里的*就是起模糊匹配的,其中lsk是只是一个任意认识名,像我们特定的一个页面要提交给特定的Servlet的进候,我们只要在写Servlet的地方写上类似于LoginActio.lsk这样的Servlet名字即可。


  以上在Web.xml的配置都是为让所有的###.lsk Servlet找到*.lsk这个通往你自己在后台定义的Servlet做准备的。下面贴出一个我简单的Servlet代码:
package cn.netjava.Servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import cn.netjava.action.Action;
import cn.netjava.action.ActionFactory;

/**
 * Servlet implementation class Constorl
 */
public class Constorl extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public Constorl() {
        super();
    }

	public  void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	 //得到所请求的Servlet路径,例如在这里我测试是请求的登陆Servlet那么完整路径将是:/LoginAction.lsk
	  String path = request.getServletPath();

//下面的思路就是根据不同的请求Servlet路径去结取其中的动作名(像LoginAction.lsk动作名就是LoginAction,然后去一个动作工厂去生产相关的操作类,从而得到相关的实例,最后返回用户请求的页面。
	  int index = path.indexOf(".");//取得LoginAction.lsk中间的"."的下标
	  String name = path.substring(1, index);//结取动作名LoginAction
	  String className = this.getInitParameter(name); //从Web.xml获取对应的类名
	  //根据类名得到相应的Action的对象
	  Action act = ActionFactory.getSingleObject().getAction(className);
         //传入当前request,response对象,并反回用户请求页面
	  String pagePath = act.exctue(request, response);
         //传发
	  request.getRequestDispatcher(pagePath).forward(request, response);
	}

}


package cn.netjava.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//动作接口,其它所有动作类都必须实现的接口
public interface Action {
	public String exctue(HttpServletRequest request,HttpServletResponse response);
}


package cn.netjava.action;
//动作工作类,生产相应的动作类和实例
public class ActionFactory {
  private 	static  ActionFactory actionFactory = null;
//私有构造器,采用单实例方法
  private ActionFactory (){	  
  }
  //定义成静态单实例方法,直接用类名调用
  public static ActionFactory getSingleObject(){

	  if( null ==actionFactory){
		  actionFactory = new ActionFactory();
	  }
	  return actionFactory;
  }
  //获得对应的实例
  public Action getAction(String className){
	  Action act = null;
	 try{
             //反射机制,以类名,反射到一个类上面去
		Class cl = Class.forName(className); 
           //得到实例
		 act = (Action) cl.newInstance();
	 }catch(Exception ef ){
		 ef.printStackTrace();
	 }
	 return act;
  }
} 


package cn.netjava.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//负责处理登陆的相关信息的Servlet
public class LoginAction implements Action{

	public String exctue(HttpServletRequest request,
			HttpServletResponse response) {
            //简单的对用户名与密码进行匹配,如果符合则反回主页面,否则,去到错误页面
		String userName = request.getParameter("userName");
		String userPwd = request.getParameter("userPwd");
		if("netjava".equals(userName) && "netjava".equals(userPwd)){
			return "main.html";
		}
		return "error.jsp";
	}

}


   嗯,最后再做一个简单的总结吧,其实MVC的流程并不难。打个比如吧,就相当于一下订菜到上菜的流程,JSP页面就相当于我们的菜单(可见的),而在页面的提交就相当于我们点菜,而我们的Servlet自然就相当于我们的服务员了(所有的订单都要通过这个服务员),然后这个服务员就会拿去让厨师做出相应的菜(这不就是相当于Servlet根据用户请求的路径最终得到相应的类实例么?),最后上菜了!(也就是返回的JSP页面)。这就是我对MVC的初步理解,希望大家多多指教,谢谢。
0
0
分享到:
评论

相关推荐

    MVC编程实训实验报告

    在本篇MVC编程实训实验报告中,我们将深入探讨如何运用MVC(Model-View-Controller)模式来实现文件的上传、分割与合并功能。MVC模式是一种软件设计模式,常用于构建Web应用程序,它将应用程序的数据模型、用户界面...

    Spring MVC总结(一)

    在本文中,我们将对Spring MVC的架构和DispatcherServlet的配置进行总结。 Spring MVC架构 Spring MVC的架构可以分为以下几个部分: 1. DispatcherServlet:作为Spring MVC的核心组件,负责处理所有的HTTP请求。 ...

    【2018最新】spring,mvc实训报告-优秀word范文 (14页).docx

    根据给定的文件信息,以下是对Spring MVC实训报告中的关键知识点进行详细解析: ### Spring MVC 实训报告概览 #### 引言 - **现代化管理需求**:随着信息技术的快速发展和计算机的广泛应用,个人信息管理变得日益...

    spring mvc深入总结

    Spring MVC 是一款广泛使用的 Java Web 开发框架,它为构建基于模型-视图-控制器(MVC)架构的应用程序提供了一种简洁而有效的方式。Spring 3.0.5 版本的 Spring MVC 提供了丰富的特性和优化,使得开发者能够快速...

    JAVAEE期末项目总结报告.doc

    JAVAEE期末项目总结报告 本报告总结了JAVAEE期末项目的实现过程,涵盖了电子管理系统的设计和实现。该系统主要由两个模块组成:登录模块和电子管理模块,其中电子管理模块中有增加、删除、修改、查询模块。报告详细...

    MVC小结

    **总结** MVC模式通过将应用分为模型、视图和控制器三个部分,有效地组织了代码结构,提高了软件的可维护性和可扩展性。理解和掌握MVC模式对于任何Web开发者来说都是至关重要的,它能帮助开发者构建出更健壮、更...

    实习专题报告和总结报告

    【实习专题报告与总结报告】 实习是每个IT专业学生必经的重要阶段,它不仅提供了将理论知识应用于实际工作中的机会,也是个人技能提升和职业素养塑造的关键环节。本专题报告和总结报告聚焦于一个基于SSH2(Struts2...

    MVC三层架构个人信息管理系统实训报告借鉴.pdf

    总结来说,这个实训项目旨在通过实现个人信息管理系统,让学生掌握JSP基础、MVC模式和J2EE架构的实际运用,以及软件开发的完整流程。系统的设计和实现不仅提升了学生的编程技能,还强调了项目管理的重要性,以适应...

    基于mvc的jsp网上商城的毕业设计+开题报告+源码

    总结来说,这个基于MVC的JSP网上商城毕业设计是一个全面的学习资源,涵盖了Web开发中的多个关键知识点,包括MVC设计模式、JSP和JavaBean技术、数据库设计、用户界面设计以及安全策略等。对于想要学习和掌握Web开发的...

    MVC下使用RDLC报表的示例

    总结起来,MVC下使用RDLC报表需要对MVC架构、报表设计和数据绑定有深入理解。通过将RDLC报表与MVC相结合,开发者可以轻松地在Web应用中实现复杂的报表功能,提供数据可视化,帮助用户分析和决策。在实际开发中,确保...

    jsp-MVC.rar_jsp课设_mvc_mvc模式_课设报告_课设管理系统

    总结,本课设项目不仅涵盖了JSP的基础应用,还深入探讨了MVC模式的运用,结合Struts框架构建了一个实际的网页管理系统。通过这个项目,学生可以全面了解Web开发的基本流程,提升对MVC模式的理解,同时锻炼数据库操作...

    电子商务,mvc,开题报告

    总结,电子商务和MVC架构是当今信息技术领域的热门话题。通过深入研究,你可以为毕业设计提供一个坚实的基础,不仅理解电子商务的运作机制,还能掌握现代Web应用开发的关键技术。这份开题报告应当包含对这两个主题的...

    MVC三层架构个人信息管理系统实训报告知识.pdf

    总结:这个实训项目旨在通过MVC三层架构和J2EE技术,构建一个高效、用户友好的个人信息管理系统。系统功能涵盖用户登录、个人信息管理、通讯录、日程和文件管理,各模块分工明确,流程规范,体现了良好的软件工程...

    Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)所有实验及实验报告.zip

    实验报告部分则会深入分析每个实验的实现过程,遇到的问题及解决方案,以及对整个开发流程的反思和总结。通过这个教程,你不仅可以掌握Java EE开发的基本技能,还能了解到实际项目中可能遇到的问题和解决策略,为你...

    workflow-in-mvc-simple-demo

    总结来说,"workflow-in-mvc-simple-demo"是一个演示如何在.NET MVC应用中利用Windows Workflow Foundation的实例。通过结合MVC的分层架构和WF的流程管理能力,我们可以构建出更强大、更易于维护的业务系统。这个...

    基于jsp的纯mvc的个人博客管理系统

    总结起来,这个基于jsp的纯mvc的个人博客管理系统展示了如何使用MVC模式组织Web应用,有效地分离了业务逻辑、数据处理和用户界面,实现了博客的增删改查等功能,尽管界面可能较为简单,但其核心功能已经齐全。...

    mvc三层搭建

    在`MySchool`项目中,视图可能包括显示学生列表的网页,编辑学生信息的表单,以及各种报告和统计图表。 **3. 控制器(Controller)层** 控制器层作为模型和视图之间的桥梁,处理用户的请求,调用模型层的方法来...

    OLMS-PDSR-1.0项目开发总结报告1

    总的来说,OLMS-PDSR-1.0项目开发总结报告详尽地记录了基于MVC设计模式的在线图书馆管理系统开发的全过程,展示了如何利用这种设计模式来构建一个分层、解耦的系统,同时注重软件质量的保证和管理,以实现功能完善、...

    java mvc框架任务书

    【Java MVC框架任务书】是一份详细的实验指导文档,旨在帮助学习者深入理解和掌握Java MVC框架的应用。MVC(Model-View-Controller)模式...同时,实验报告的撰写有助于提高问题分析和总结能力,加深对理论知识的理解。

Global site tag (gtag.js) - Google Analytics