web项目是所经常提到的mvc模式。

MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBeanEJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是ModelView之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

如下图:


小议MVC模式开发
 

MVC设计

    统将增加新的服功能,从设计之初就必到支持后的迭代开发;前期设计须严格按照MVC思路设计开发,符合Mode-2准,即以jsp做视图;以Servlet做业务转发;以后台java理具体业务;使三者在编码时分离,以续开发打下良好基HTML+JSP+Servlet+JavaBean结构:

JSP负责生成动态网页

Servlet负责流程转发至对应的Action实现

JavaBean(pojo和dao)负责业务数据模型存取

简而言之就是

使得web不同分工有了统一的规范。

同一类的动作就用同类型的后缀标记

如 *.st表示在注册登录时的操作

再用Control servlet解析出来

   Control servlet

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try{
		//得到请求的命令名字:解析出*.st请求中*所指代的字符串,即动作名字
        String actionName= getActionName(request);
        System.out.println("请求的是~"+actionName);
        //根据请求的动作名,得到控制器servlet中配置的Action实现类名字
        String actionClassName=this.getInitParameter(actionName);
        System.out.println("xml中对应的配对类的名字是: "+actionClassName);
        
        
        
        //通过工厂类创建命令对象
        Action action = ActionFactory.getIns().getAction(actionClassName);
          //使用动作对像处理动作,返回结果为处理后要输出的目标页面
        String url = action.execute(request, response);
        if (url != null){
            //输出目标页面
        	  System.out.println("目标url: "+url);
        	  getServletContext().getRequestDispatcher(url).forward(request, response);
           }
         }catch(Exception ef){
        	 ef.printStackTrace();
        	 //出错时,返回登录页面
        	 response.sendRedirect("login.jsp");
         }


	}

 

当然再使用这个中转的时候,就得在xml中标记转化到哪个servlet中去

 <init-param>

      <param-name>register</param-name>

      <param-value>Model.register</param-value>

    </init-param>

 

则我们要使用注册功能的话

则发送   register.st

Control servlet就会转发到

寻找类的化用 

去实现

 

public class ActionFactory {
    //单实例访问方法
    public static ActionFactory getIns(){
    	if(null==ac){
    		ac=new ActionFactory();
    	}
    	return ac;
    }
	
    /**
     * 根据具体的Action类名字创建Action对象
     * @param actionName:具体的Action类全名
     * @return :Action类型对象
     */
     public Action getAction(String actionClass) {
          Action actionInstance = null;
          try {
        	  Class c=Class.forName(actionClass);
               actionInstance = (Action) c.newInstance();
          } catch (Exception e) {
               e.printStackTrace();
          }
          return actionInstance;
     }
     //不需要创建对象
     private ActionFactory() {    }
     private static ActionFactory ac=null;

 

Model.register中去处理。

当然,中转的时候要中转request  和 response不然得不到完整的getParameter

所以我们也就可以创建一个自己action

/**
*系统中的命令处理器接口定义
*/
public interface Action {
	/**
	 * 所有的具体Action实现这个接口
	 * @param request:请求对象
	 * @param response:应答对象
	 * @return :结果页面
	 */
     public String execute(HttpServletRequest request, HttpServletResponse response);
    
}

 

所以就可以简单的用mvc模式写一个在线的问答系统。


小议MVC模式开发
 

<!--EndFragment-->

相关文章:

  • 2021-06-30
猜你喜欢
  • 2021-05-23
  • 2021-04-13
  • 2022-01-03
相关资源
相似解决方案