服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

mvc 构架学习之渐行渐进(二)


  mvc:模型-视图-控制器结构,这种构架在vc中我们可以体会得更深一些。在java中实现这种构架的目的是实现网页制作人员和开发人员的分工。然而这一知识点并不容易掌握,所需要读者了解的知识点尤其是对servlet的理解一定要深刻,所以这里我采用渐行渐进的步骤,从点到面逐步引导大家掌握这一技术。  
  
  首先,大家要看懂以下几个类的作用。每个类都有相应的说明,和导读内容。[b:ec7138a775]  
     
  action接口[/b:ec7138a775]  
  示例:/web-inf/classes/actions/action.java  
  package actions;  
  import javax.servlet.http.httpservlet;  
  import javax.servlet.http.httpservletrequest;  
  import javax.servlet.http.httpservletresponse;  
  public interface action  
  {  
  public actionrouter perform(httpservlet servlet,  
  httpservletrequest  req,httpservletresponse  res)  
    throws java.io.ioexception,javax.servlet.servletexception;  
  }  
  action接口定义了一个perform的方法,它向操作servlet、http请求响应传递引用。  
  
  actionfactory类  
  示例:/web-inf/classes/actions/actionfactory.java  
  package actions;  
  import java.util.hashtable;  
  public class actionfactory  
  {  
  private hashtable action_s=new hashtable();  
  public action getaction(string classname,classloader loader)  
    throws classnotfoundexception,illegalaccessexception,instantiationexception  
  {  
  action action=(action)actions.get(classname);  
  if (action==null) //如果该操作未存储在哈希表中,操作库将首先创建它  
  {  
  class klass=loader.loadclass(classname);//获取对象类型  
  action=(action)klass.newinstance();//对象初始化  
  actions.put(classname,action);//存储到哈希表中  
  }  
  return action;  
  }  
  }  
  在操作库中保持操作的哈希表,该库的getaction方法由操作的servlet调用,并返回对应于类名的操作。如果该操作未存储在哈希表中,操作库将首先创建它,然后再存储到哈希表中。以后遇到相同的操作请求,操作库将仅仅从哈希表中返回一个引用。  
  导读:getclass():方法返回为一个class类型的对象。例:  
  …  
  private logindb logindb;  
  class pt=logindb.getclass();  
  system.out.println(“the beans name is:”+pt.getname());  
  …  
  输出内容:the beans name is: bean.logindb  
  大多数情况下定义一个class的对象的目的是要引用getclass方法。  
  newinstance():这个方法将调用类的默认的构造器,由当前的class对象表示,并把生成的对象作为object类型返回。如果你想把该类型保存在某一类型的变量里,则需要将它转换  
  为相应的类型,否则将直接把结果存储在一个object类型的变量里。这个方法会抛出两个异常:illegalaccessexception,instantiationexception

扫描关注微信公众号