一个刚入门的菜鸟Java之路-框架篇

1.MVC即Model-View-Controller的简称。

MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开

视图(View):是用户看到并与之交互的界面。视图向用户显示相关数据,并接受用户的输入。但它不进行任何的业务逻辑处理。

模型(Model):模型表示业务数据和业务处理,相当于Javabean。一个模型能为多个视图提供数据。

控制器(Controller):当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。然后根据处理过程的结果调用相应的视图来显示处理的结果。

2.SSH框架

集成的SSH框架的系统从职能上分为四层:表示层业务逻辑层数据持久层域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中Struts作为系统的整体基础框架,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data
Access Objects)接口,并给出Hibernate的DAO实现,采用HIbernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理Struts和Hibernate。

ActionServlet:是Struts1的核心控制器,负责拦截来自用户的请求

Action:通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模块的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。

Model部分:

由ActionForm和JavaBean组成,其中ActionForm用于将用户的请求参数封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面请求的参数处理用户的请求。

JavaBean则封装了底层的业务逻辑,包含数据库访问等。

View部分:

该部分采用JSP(或 HTML、PHP…)实现。

Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签可以与Model有效交互,并增加了实现功能。

Controller组件:有两个部分组成----系统核心控制器和业务逻辑控制器。

系统核心控制器:对应ActionServlet,该控制器继承了HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的Http请求,然后根据用户请求决定是否需要转给业务逻辑控制器。

业务逻辑控制器:负责处理用户请求,本身不具备处理能力,而是调用Model来处理完成对应的Action部分。

Spring部分

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

控制反转:Spring通过IoC技术促进松耦合,当应用了IoC,一个对象依赖的其他对像会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,容器在对象初始化时不等对象请求就主动将依赖传递给他。

IoC:有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象。

面向切向:Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服务和事务进行内聚性的开发。应用对象只实现它们应该做的—完成业务逻辑—仅此而已。他们并不负责其它的系统级关注点。

*容器:Spring包含并管理应用对象的配置和生命周期。

*框架:Spring可以将简单的组件配置、组合成复杂的应用。在Spring中,应用对象被声明式地组合,典型的是在一个XML文件里。

Hibernate部分

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。

Hibernate的核心接口一共有5个,分别是:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

Session接口:Session接口负责执行被持久化对象的CRUDE操作(CRUD的任务是:完成与数据库的交流,包含了很多常见的SQL语句)。但是需要注意的是Session对象时非线程安全,同时Hibernate和Session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后将HttpSession对象称为用户session。

SessionFactory接口:SessionFactory接口负责接口初始化Hibernate。他充当数据存储的代理,并负责创建Session对象,这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

Transaction接口:Transaction接口负责事务相关操作。他是可选的,开发人员也可以设计编写自己的底层事务处理代码。

Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言和SQL语句两种表达方式。

时间: 2024-10-09 01:21:59

一个刚入门的菜鸟Java之路-框架篇的相关文章

Java面试题-框架篇八

71,谈谈你对Struts的理解. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件将各个请求分别分配给不同的action去处理. (struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀) 2.ActionServlet

Java面试之框架篇(九)

spring现在无疑是Java中最火的框架,使用范围广,几乎每个公司面试都会涉及spring和数据库,你可以对Struts不熟悉,但一定不能表现出对spring不了解.第九篇赢在面试全篇介绍spring常考点.数据库重中之重会在后面花五篇介绍常问题型 81,使用Spring框架的好处是什么?         轻量:Spring 是轻量的,基本的版本大约2MB.         控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们.         

[ Java面试题 ]框架篇二

1.Hibernate工作原理及为什么要使用Hibernate? 工作原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要使用Hibernate(即它的优点): 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码. 2. Hibernate是一个基于JDBC的主流持久化框架

给刚入门的程序员五点建议

每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员.现在大学.软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找不到好的工作.问题出在哪里呢?其实,企业需要的是不是刚会写程序的人,需要来了就能干活的人,尤其能把活干好的人.而刚毕业的大学生多半刚学会如何写程序,的确很难企业需求. 企业到底需要什么样的程序员,一个刚入门的程序员如何成为企业需要的高手呢?还有很多程序员问我,“我需要具备什么样的能力就可以去创业?”我一直在琢磨类似的问题.我自己写过十年程序,也在金山管理

Java之路 ——初识Eclipse

零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前言 俗话说,工欲善其事,必先利其器.在<Java之路--环境配置与编译运行>一章中,我们已经通过记事本,开始了我们的第一个Java程序.在文章,我们了解到要运行一个Java程序,并不是单单的在一个类中运行,可能会引用到别的类,引用到别的Jar包.简单的时候,项目引用一个两个jar包就可以了,但大多

一个女大学生的代码学习之路(二)

首先说一下,写这种文章是由于我在四月四日晚上,在手动搭建自己的第一个ssh项目的时候,遇到了一个配置的问题,怎么解决也弄不好,当时是四号晚上九点,我看了一眼表,我就想两个小时之内,我要是能搞定就算行了,但是其实,我搞到三点才OK(凌晨),那时候已经是五号了,转天是一家子去扫墓的时候,结果我居然以这种一个理由没有去,理由是我太累了么?我只是就是搭了一个架子,就是由于我的包太混乱了,导致不兼容,所以tomcat总也不启动,你可能认为好笑,这么简单一个问题怎么就费这多多时间呢,但是作为一个刚接触三框架

node.js从入门到菜鸟——资源无法载入?你需要学会地址解析

node.js是什么似乎已经不需要我多为赘述了,非阻塞的服务器语言.JS书写的后台代码,无数的文章已经很好的展示了node的魅力与展望.关于node.js的安装,大家不妨参考博客园聂微东的http://www.cnblogs.com/Darren_code/archive/2011/10/31/nodejs.html (node.js初体验),这篇文章很好的综述了node.js的一个基础(从安装到体验到模块的一个入门,个人感觉是一篇很好的文章),相信通过东哥的这篇文章大家可以对node有一个初步

.NET开发者不要再抱怨.NET工资低[田忌赛马]【一个刚入行不久的角度谈.NET工资】

最近博客园里面很多人都说.NET不行,其实你们说的.NET不行也就是说.NET的工资比不上Java,PHP,移动开发等 本人性格还没有修炼到淡定,所以下面可能屡有偏激狂妄之词,也请同仁多多海涵. 这篇博客是写给那些刚入.NET,同时喜欢.NET不准备转的人看的,搞好自己,相信自己!要转的自己转去吧!下面从头到尾都没有谁好说不好的!只是谈薪水问题! 咱们大多数人搞开发都是要赚钱养家的.我们都不说是为了中华软件而崛起的口号而编码,这样的口号我也喊不出来. 我们都是为了工资,为了赚钱养家.兴趣也是一部

【非月结贴】.NET开发者不要再抱怨.NET工资了,你真的行吗?--从一个刚入行不久的角度看.NET工资

最近博客园里面很多人都说.NET不行,其实你们说的.NET不行也就是说.NET的工资比不上Java,PHP,移动开发等 本人性格还没有修炼到淡定,所以下面可能屡有偏激狂妄之词,也请同仁多多海涵. 咱们大多数人搞开发都是要赚钱养家的.我们都不说是为了中华软件而崛起的口号而编码,这样的口号我也喊不出来. 我们都是为了工资,为了赚钱养家.兴趣也是一部分.看了博客园这些喷.NET的文章,在这里我也想站在一个刚入门的人的立场上来谈一下这个问题 本人作为一个大四软件工程专业的学生,刚入行不久,.NET从大一