三大框架简结
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文件中的源码如下:
- public void init(FilterConfig filterConfig) throws ServletException {
- InitOperations init = new InitOperations();
- try {
- FilterHostConfig config = new FilterHostConfig(filterConfig);
- init.initLogging(config);
- Dispatcher dispatcher = init.initDispatcher(config);
xsdsdfsfsdf
4,.在InitOperations类中调用了initDispatcher(config)方法,在该方法中又调用了Dispatcher的init方法,class文件中的源码如下:
- public Dispatcher initDispatcher( HostConfig filterConfig ) {
- Dispatcher dispatcher = createDispatcher(filterConfig);
- dispatcher.init();
- 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会返回空
浙公网安备 33010602011771号