小弟前阵子去一公司面试,问的基本都是SSH框架的问题,我个人感觉用没啥问题..但是要是让我说可能说不到点子上,
所以上来征集一下各位大哥的意见,最好那位大哥能给小弟一些相关的题目和答案就更好些!
题目类似于下面的就可以了
1.SSH原理是什么?
2.SSH的流程?
3.你对MVC是怎样理解的?
还有类似下面的题目
4.AJAX的核心技术是什么?
还有什么hibernate原理啊.struts原理啊...用到是会用一问就问住了...
希望大家帮我把以上几个题的答案写一下,最好有更多题目的扩充,我自己也在网上找了几次也没什么结果.

解决方案 »

  1.   

    1.SSH是基于MVC模式的三个应用框架,MVC模式将B/S架构的软件设计分为多个层来设计,其中view负责页面显示层,control负责业务逻辑层,model一系列的类作为用以实现业务逻辑,在开发中为了方便对数据库的访问,又划出了持久层和数据库访问层.层与层之间只有相邻层可以相互访问,这样就使各层之间的耦合度大大降低,有助于大规模企业级开发中的代码重用和单元测试2.struts或struts2的action负责处理页面传来的数据并控制页面和页面之间的跳转,在action中,可以调用业务逻辑层中的各个service来完成所需的功能.在service中,可以调用持久层中DAO来实现对数据库的增删改查,hibernate框架负责把pojo通过ORM机制和数据库形成映射,通过SessionFactory和Session实现具体的数据库操作,而这一系列的操作又是封装在DAO中的.Spring贯穿了整个MVC模式,它通过IOC来注入各种Bean,实现了调用者与创建的分离,进一步增强了代码的重用性.以上为个人理解
      

  2.   

    你做过吗?
    做过的话应该都能回答的啊?
    Hibernate,应该就是数据隐射
    Spring的AOP和IoC就是反射原理工厂方法,往你会的地方扯,随便扩展,什么静态工厂动态工厂。
    Struts就是MVC,往Eclipse的SWT模型,Model1什么的扯
    总之扯到你会的地方,扯到你遇到的bug上面:譬如,如何为Hibernate表名映射制定命名规则
      

  3.   

    自己在网上查一下不就可以了,推荐jeee 轻量级这本书
      

  4.   

    呃....貌似还有人没别白我的意思,ssh整合开发我也做过几个项目了,经验也有一些,问题碰到一些也解决了.
    但是我如果让我说具体的原理的话我就说不出来了..比如说我会用HIbernate...但是我真的不知道他的原理是啥..
      

  5.   

    你的问题需要自己动手做一个小ssh项目
    比如说登陆
    就会慢慢知道流程了这个给你一个工程也没用。你得找点资料看看。
    不看给你个工程也看不动
    有的时候配置起来老出错
      

  6.   

    1.SSH原理是什么?
    Struts管理Controller,Spring是DIxAOP,H是ORM.
    另外Struts有Interceptor,ValueStack和Convention等功能.2.SSH的流程?
    看你怎么构架了,Spring都有自己的流程:Spring MVC.堆到一起的话Struts负责迁移,
    Spring主要用于DI容器,负责Transaction等,Hibernate就是Object-Relational Mapping了.3.你对MVC是怎样理解的?
    那就看你怎么理解了.4.AJAX的核心技术是什么? 
    HttpRequest.非同期.
      

  7.   

    找了个关于SPRING的文章,感觉不错!贴出来学习Spring大探宝 
    原创作者: pikachu   阅读:1033次   评论:1条   更新时间:2005-03-06     
    Spring是什么?初接触的人会说Spring是个ioc容器。 这个答案只能获50分!! Spring是一个从web mvc一直到数据访问的完整程序结构体系。而且对于不同的人有不同的使用方法。让我一一道来。 最为人熟知的,Spring是一个ioc容器。这个对应Spring的org.springframework.beans包,而且这是大家用的最多的功能。我们称为BeanFacotry。其基本原理说穿了很简单,读取一堆配置,侦测出各个bean的依赖关系。然后有两部分工作,一部分是通过PropertyEditor,把配置文件中写的一些非bean数据绑定到每个bean的属性属性上(比如int,boolean,甚至map类型的属性),还有一部分是建立bean之间的相互关系。当然这两部分是同时进行,没有先后。当初作者选用的是PropertyEditor,如果放到现在可能会选用ognl。btw,这个绑定机制在spring web mvc中也有用到 
    如果只是使用ioc,只要知道配置文件怎么写就可以了。如果想自己写一个ioc容器可以看看这个包里的代码,特别是BeanDefinition和BeanFactory的设计非常精彩 其次Spring是一个ApplicationContext。现在Context这个词用的越来越烂,Spring的这个Context说穿了就是在BeanFactory基础上多了一些高级功能,包括 Spring reference 写道
    MessageSource, providing access to messages in, i18n-style Access to resources, such as URLs and files Event propagation to beans implementing the ApplicationListener interface Loading of multiple (hierarchical) contexts, allowing each to be focused on one particular layer, for example the web layer of an application这些是一个大型程序常用的功能。不过,一旦你使用了spring的application提供的功能,那你的代码就和Spring再也脱离不了关系了。 以上是Spring的核心功能,Spring剩余的部分以ioc为手段,或以ioc为目的,向前端,后端,深层和周边范围扩展。说以ioc为手段是因为有部分功能理论上是可以脱离Spring核心功能而使用,只是用了ioc后会简化很多工作量。以ioc为目的是因为还有一部分代码就是为了把其他库拉进spring而设计。我们不妨……看过来,看过来……哦!哦!! 先说前端。Spring自带一个web mvc框架。如果拿struts作比较的话,那么strust中的formbean,action和返回的formbean,依次对应着spring mvc中的command,controllor和ModelAndView中的model。其实说穿了,现在的web mvc的主要功能都很类似,提供一种机制把用户通过http提交的数据转换成比较容易使用的形式,顺便作一些校验。然后读取某个配置文件将这些数据传送到一个控制器上。然后获取控制器返回的数据和视图名称,再找到对应的视图把这些数据和视图合并起来发回客户端。大家所比较的无非是哪个提供的附加功能多点(比如谁的验证器又多又好),配置文件哪个写起来容易点,控制器尽量不要和业务功能过于耦合,作页面尽量好看点。基本功能不会有太大的差别。谁有能力和时间的话,完全可以写个适配器,把其中的一套的某些功能适配到另一套上去。 
    spring的前端自有它的优势,能和ioc框架无缝整合,所有的配置统一被beanfactory读取。但是要用户spring mvc除了要学习spring之外,还要学习一到两种页面显示技术。因为spring mvc自己不带页面显示功能,默认情况下它使用的是jstl+jsp。至于spring的那套tag,我觉得纯粹是鸡肋,只是用来显示验证结果用的,并非框架核心。用不用他的那套tag纯属个人爱好。 
    说句题外话,现在有不少web框架要和spring集成,大多数走的是配置ContextLoaderServlet,然后用WebApplicationContextUtils.getWebApplicationContext的路子。其实说穿了也很简单。去看org.springframework.web.context.ContextLoader的代码,会找到这两句 
    Java代码 
    WebApplicationContext wac = createWebApplicationContext(servletContext, parent);;   
                servletContext.setAttribute(   
                        WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);;  WebApplicationContext wac = createWebApplicationContext(servletContext, parent);;
    servletContext.setAttribute(
    WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);;
    他就是把一个context放到了servletContext里去了。然后大家再从servletContext里拿。这样只能从web框架单向引用到managed bean,而bean用不到web里的对象。除非这些web框架能够在运行时动态向sping的ioc容器里添加自己创建的对象或者直接让spring协助创建。 转回话题 
    向后端是指spring同一些DAO框架进行集成。这方面spring更多的是在搭桥。比如hibernate的LocalSessionFactoryBean。这些桥搭起来后,我们可以很方便的从spring中访问这些dao框架。而这些框架对spring可以说是一无所知。此外由于dao代码的复杂性和重复性,spring还提供了一些template,来降低开发人员的工作量,简化代码。spring的这些功能可以说是大部分的体力活和小部分的脑力劳动。不过我们还是要感谢这些牛人们,他们是虽然不是“加拿大gcd员”,但是为了帮助中国的程序开发事业,即使未受“加拿大gcd和美国gcd的派遣”,还是把spring框架不远万里的带到中国。 向深层方向发展是指spring的aop和transaction功能。这些功能的基本原理就不说了。虽然未必是spring独有的,但这些实现都是spring作者亲自设计的。可以说是他们的“自主知识产权”。我可不希望有xx人看到这些代码拿倒自己的公司然后打上copyright。我肯定会找这种人拼命的 。这些功能其实和ioc一点关系都没有。而且spring的reference里也说可以"programmatically"的。比如 
    Java代码 
    ProxyFactory factory = new ProxyFactory(myBusinessInterfaceImpl);;   
    factory.addInterceptor(myMethodInterceptor);;   
    factory.addAdvisor(myAdvisor);;   
    MyBusinessInterface tb = (MyBusinessInterface); factory.getProxy  ProxyFactory factory = new ProxyFactory(myBusinessInterfaceImpl);;
    factory.addInterceptor(myMethodInterceptor);;
    factory.addAdvisor(myAdvisor);;
    MyBusinessInterface tb = (MyBusinessInterface); factory.getProxy
    这些功能处于不用ioc也可以跑,不过用了ioc用起来更方便的位置。如果谁在这方面有兴趣也可以翻翻spring代码。比如要写一个简单的事务管理器,就可以去看spring的各种TransactionManager的实现。当然真正的回滚递交机制的实现这些代码帮不上忙的。 最后说说周边扩散。这表现在两方面,一方面是spring内部所集成框架和类库的数量越来越多。spring最早的版本中就包含quartz的集成,后来加上了jms,这些可以说是和spring中的其他部分完全不相干的东西。此外越来越多的项目在向spring靠拢或者使用spring作为项目内核,比如开源的jms服务器active mq,web中用到的valuelist。 真是“春”城无处不飞花啊! 
      

  8.   

    Struts1.2 控制流程关键还是要自己了解透彻。现总结如下。供参考: Struts1.2依然是应用很广的框架,熟悉其基本的控制流程是必要的:
    一、ActionServlet的初始化ActionServlet作为Struts组件的前端控制器,由于web.xml的相应配置:<load-on-startup>0</load-on-startup>在应用一加载时即会被实例化并调用其init方法,init方法所做的主要工作有二:1. 加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象 
    2. 加载资源文件,并创建用于封装资源文件的MessageResources对象 
    需要注意两点:如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源文件。 
    针对各个模块所创建的ModuleConfig对象和MessageResources对象将存储在ServletContext中,对应的属性名中有该模块名称的相应标识。 
    另外,如果有相应配置的话,init方法还将初始化数据源和PlugIn
    二、ActionServlet的process所有形如*.do的请求(根据web.xml中的相关配置)将提交给ActionServlet,最终将调用其process方法。process方法的主要工作有三:1.  根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。 
    2.  根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。 
    3.  调用RequestProcessor对象的process方法,将request和response作为参数传递给它。 
    三、RequestProcessor的processRequestProcessor对象的process方法的主要工作有五步:1.  调用自己的 processPreprocess(request, response)方法,该方法不进行任何操作,用于子类重写扩展其功能。 
    2.  获得与请求地址所匹配的ActionMapping对象,AcionMapping对象用于封装一个特定acion的配置信息。 
    3.  根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到request或session中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的ActionErros对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。 
    4.  如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、request和response作为参数调用其execute方法。 
    5.  根据Action对象的execute方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。 
      

  9.   

    各位有关于struts2和hibernate的么?~谢谢
      

  10.   

    Struts2的流程:Dispatcher -> Interceptor Filters -> ActionInvocation -> ResultType -> template views
    有几个情况下例外:
    StaticContent的时候不经由Interceptor(比如Struts2-jquery plugin下的static目录以下的文件)
    Action里定义redirect或者dispatcher类型的时候不跳到views
    使用convention(code behind)的时候如果找不到Action会跳到UnknownHandler
    还找不到就返回404错误.另外validation等逻辑要看你implements什么interface.
    给你些关键字自己查查:
    ModelDriven,ScoppedModelDriven,Preparable, -validation.xml, preareDoExecute, Dynamic method
    RESTFUL plugin
      

  11.   

    Struts1.2 控制流程
    的高手,能不能贴贴其他两个的工作原理!期待中