三大框架简结

1,Struts2

  先配置web.xml 

   <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

 

  再配置文件只有一个struts.xml文件,配置一下 name,class,method,result就好了。

  例如,

  

  <action name="useCards_*" class="cn.com.infotech.transit.centralmanage.controler.action.IllegalUseCardsAction" method="{1}">
    <result name="1">/page/transit/centralmanage/listMissCard.jsp</result>
    <result name="addSuccess" type="redirect" >/page/transit/centralmanage/toListI.html</result>
    <result name="detail" >/page/transit/centralmanage/addMissUseCardTwo.jsp</result>
    <result name="validSuccess" type="redirect" >/page/transit/centralmanage/toListI.html</result>

 

    <result name="selectSuccess">/page/transit/centralmanage/listMissCard.jsp</result>
    <result name="deleteSuccess" type="redirect">/page/transit/centralmanage/toListI.html</result>
  </action>

 

  class配置的就是action类。action类里面有属性。

  比如:

  public class XXXAction extends StrutsAction{  

    public String xxx(){

      return "xxx"

    }  

  }

  前台页面表单的action就写配置文件上的name配置的,然后就提交到action那边了,然后进入相应的方法里判断后再跳到别的页面。

  注:struts.xml被加载的过程:1,启动tomcat过程中,加载web.xml文件。2,找到web.xml中的        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter类。3,在StrutsPrepareAndExecuteFilter中调用了init方法,创建一个了InitOperations()对象,并且调用了initDispatcher(config);方法。在class文件中的源码如下:

  

  1. public void init(FilterConfig filterConfig) throws ServletException {  
  2.        InitOperations init = new InitOperations();  
  3.        try {  
  4.            FilterHostConfig config = new FilterHostConfig(filterConfig);  
  5.            init.initLogging(config);  
  6.            Dispatcher dispatcher = init.initDispatcher(config);  

  xsdsdfsfsdf

  4,.在InitOperations类中调用了initDispatcher(config)方法,在该方法中又调用了Dispatcher的init方法,class文件中的源码如下:

  

  1. public Dispatcher initDispatcher( HostConfig filterConfig ) {  
  2.        Dispatcher dispatcher = createDispatcher(filterConfig);  
  3.        dispatcher.init();  
  4.        return dispatcher;  

  5.接下来我们跳到Dispatcher类中调用init()方法处,源码如下:http://blog.csdn.net/qq_17864929/article/details/48140165

  上面是网页,简单的说就是web.xml加载,加载其中的过滤器,过滤器再去初始化一些类,而这些类中默认的加载路径就是src下的struts.xml.

 

2,Hibernate3

  配置文件主要是一个hibernate.cfg.xml。里面配置数据库,和java类所对应.hbm.xml(和数据库对应)。注解的话就不用配置后面的了。

  使用Hibernate开发的步骤:①,读取配置文件②,创建SessionFactory③,打开Session④,开始一个事务⑤,持久化⑥,提交事务。

  代码:Configuration configuration = new Configuration().configure();//自动读取src下的hibernate.cfg.xml

      SessionFactoury sessionFactory = configuration.buildSessionFactory();

      Session session =sessionFactory.openSession();

      Transaction tx = session.beginTransaction();//打开事务

      CourseBean bean = (CourseBean) session.get(CourseBean.class,1);

3,Spring

  配置文件主要是bean的xml(比如:bean.xml).里面可以配置一下根包下面需要扫描的类,或者启动注解。

  然后一句:ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");

  ctx.getBean("xxx");

  ioc控制反转:@Resource(name="ISteelAxeImpl") private IAxe iaxe;

  aop面向切口编程:@Before("execution(* my.action.*.*(..))")  public void authority() 

4,SSH

  Spring整合Struts2:

    配置文件:applicationContext.xml,spring自动扫描,通过@autowired自动注入。

  Spring整合Hibernate:

    配置文件:applicationContext.xml,需要配置:propertyConfigurer,告诉数据库的配置。dataSource,定义数据源。

          sessionFactory,定义sessionFactory,注入数据源,把bean包配置上。

          hibernateTemplate,Spring整合hibernate的一个工具。里面注入了sessionFactory.

5,使用:

  1,web.xml:配置Sprng整合Hibenate和注入的类

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/context/applicationContext-*.xml</param-value>
  </context-param>

  2, 

  <!-- 配置初始化Spring应用上下文的监听器:
    1) 这个监听器会在本web应用部署成功后得到执行
    2) 执行时先获取contextConfigLocation参数指定的配置文件,创建出WebApplicationContext实例.
    3) 把这个WebApplicationContext实例放置到ServletContext中
  -->

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  3,配置struts的配置文件

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>struts-default.xml,struts-plugin.xml,../struts/struts.xml,../struts/struts-auth.xml,../struts/struts-code.xml,../struts/struts-transit.xml</param-value>
    </init-param>
  </filter>

 

  action包(控制层c):

    注入一个service类型为自动的。

  bean包(model层):

    使用注解和表,hibernateTemplate映射上。

  dao包:

    @Autowired   private HibernateTemplate hibernateTemplate;注解进去,直接用这个对象来进行原子操作。

  service包:

    注解多个dao,进行业务处理。

 

 6,hibernate的三级缓存:

  一级的session缓存,查询出来的对象会放到session缓存中,关闭session后就没有了。二级缓存需要配置和导包,是sessionFactory范围中,一般配置到磁盘上了。http://www.360doc.com/content/14/0801/16/1073512_398635409.shtml

这个讲的比较详细。

 7,session的get()和load()方法:

  当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象只保存了实体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。

  相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象,此时都会发出sql语句去从数据库中查询出来

  load会抛出异常,get会返回空

 

 

 

 

posted on 2016-12-18 19:32  一个很帅的男人  阅读(159)  评论(0)    收藏  举报

导航