前言

    接着上一篇继续讨论ssh。本篇会把从D层到界面显示的一条线梳理一下,并且讨论对Spring,Struts,Hibernate三个框架的认识。

一条线

显示

    (1)DAO->service->action原路返回
    (2)action与jsp交互
     ^1^action与jsp交互把数据存入值栈,返回字符串

//带分页的查询的方法
    public String findAll(){
        //分页查询
        PageBean<Order> pageBean = orderService.findByPage(page);
        ActionContext.getContext().getValueStack().set("pageBean", pageBean);
        //跳转
        return "findAll";
    }

    ^2^根据字符串在struts中查询要返回的jsp界面

!-- 配置后台订单的action -->
        <action name="adminOrder_*" class="adminOrderAction" method="{1}">
            <result name="findAll">/admin/order/list.jsp</result>

        </action>

    ^3^在jsp使用pageBean或List中的数据

第<s:property value="pageBean.page"/>/<s:property value="pageBean.totalPage"/>页    

struts的作用

    ^1^是mvc的web框架。包含一个 controller servlet,能将用户的请求发送到相应的Action 对象。
    ^2^JSP 自由 tag 库,并且在 controller servlet 中提供关联支持,帮助开发员创建交互式表单应用。
    ^3^提供了一系列实用对象:XML 处理、通过 Java reflection APIs 自动处理 JavaBeans 属性、国际化的提示和消息。

Spring的作用

    核心是AOP(Aspect Oriented Programming)和IOC(Inversion of Control)也叫DI(Depency Injection)
    ^1^AOP
    AOP把软件系统分为两个部分:核心关注点和横切关注点。
     实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。
     使用场景如:权限,日志,事务,缓存,持久化,同步等。
    ^2^IOC
     依赖注入的三种方式:(1)接口注入(2)Construct注入(3)Setter注入
     控制反转(IoC)与依赖注入(DI)是同一个概念,引入IOC的目的:(1)脱开、降低类之间的耦合;(2)倡导面向接口编程、实施依赖倒换原则; (3)提高系统可插入、可测试、可修改等特性。
     Spring AOP及JBoos AOP实现都是采用拦截器来实现的。
     拦截器的代码:

protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
                    //判断session中是否保存了后台用户的信息
                    AdminUser existAdminUser = (AdminUser)ServletActionContext.getRequest().getSession().getAttribute("existAdminUser");
                    if(existAdminUser == null){
                        //没有登录
                        ActionSupport actionSupport = (ActionSupport)actionInvocation.getAction();
                        actionSupport.addActionError("亲,您还没有登录,没有权限访问");
                        return "loginFail";
                    }else{
                        //已经登录
                        return actionInvocation.invoke();
                    }

                }

Hibernate

    ^1^含义
    是一个ORM的框架,为实现数据的持久化把jdbc的代码封装,方便调用。
    ^2^缓存
     一级缓存:由hibernate管理, 事务级的,如 save update get
     二级缓存:sessionFactoory级别的,进程级的 查询 先查一级,二级,数据库 更新缓存
    ^3^延迟加载
    含义:加载时不要连根拔起,把有点关系的都加载进来
    缺陷是会话一直开着,spring提供了补充openSessionInViewFilter, OpenSessionInViewInterceptoro

小结

    稍微有点清晰了,了解还是不够,再接再厉。