您的位置:首页 > 其它

SSH特性与原理

2015-09-25 09:47 225 查看
Struts1
1、API结构i. Action(处理器)默认执行的方法 execute(ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse)ii. ActionServlet (中央控制器)iii. ActionForm(表单Form)主要用于封装客户的参数iv. ActionMapping(Action映射信息对象)存放当前所访问的Action的所有配置信息v. ActionForward(转发对象) 用于跳转
<action path=”/访问路径” name=”ActionForm的名字” class=”struts类路径” parameter=”指定参数名” validate=”true” input=”/错误之后的显示界面”><forward name=”返回字符”>/跳转的页面路径</forward> </action>2、标签库Struts1.x有四类标签库(html,bean,logic,tiles)支持整合了JSTL3、运行原理1、解析配置文件 当服务器启动时,根据web.xml的配置,会加载struts的ActionServlet,用于拦截用户的请求,struts会自动解析struts-config.xml ,然后将配置信息缓冲到Application中。2、客户端发出请求但客户端发出.do的请求时,会被ActionServlet的拦截,ActionServlet会根据客户端的请求路径去匹配配置文件(xxx.do),找到对应的Action的配置信息:1)、会在配置信息中获取name属性,得到ActionForm,用ActionForm来封装客户端提交的参数信息(CommonBeanUtils)。2)、会检测配置中是否配置了validate,如果配置了会去执行ActionForm 的validate的方法,该方法会返回一个错误集合(ActionErrors),当错误集合的长度大于0时,表示验证失败,那么查找名称为input的属性,得到跳转的路径,并显示错误信息;如果错误集合的长度小于等于0的话,表示验证成功,那么会继续查找class属性,得到Action的类路径,并执行该类型execute方法,并将ActionForm作为第二个参数传递给Action。3)Action执行完毕之后 会选择一个ActionForward进行跳转3、根据跳转的路径 响应客户端
Struts2
1、APIi. ActionSupport (处理器类)ii. ActionServletContext 用于获取Servlet PAI ,获取request,response,applcationiii. ActionContext Action上下文,用于存取数据iv. Struts2的拦截器2、标签库Struts2标签库可以分为(逻辑标签和非逻辑)逻辑标签:<s:if> <s:elseif> <s:iterator>非逻辑:<s:form><s:submit> 也支持JSTL标签 但是strut2使用了更加大的表达式OGNL 3、原理1、解析配置文件但服务器启动时,根据web.xml的配置,会自动加载struts的拦截器,并会自动解析struts.xml配置文件,并将配置文件信息用application进行缓冲。2、当客户发出请求时根据客户的请求路径(XXX.action)去匹配配置文件,找到对应的Action的配置信息:1>、找到class属性对应的Action类,并进行实例化。2>、执行拦截器(赋值拦截器(OGNL)、文件上传的拦截器、表单验证的拦截器)3>、但执行到表单验证拦截器时,拦截器会自动扫描该Action目录下是否有匹配的配置文件,如果有的话,再根据配置文件的验证规则来进行表单验证。4>、拦截器执行完毕之后会自动调用Action的execute方法5>、方法执行完毕之后,会返回一个字符串值,在根据配置文件的result与返回值进行匹配,选择相应的页面跳转。3、根据跳转的路径,响应客户端 <action name=”” class=”” method=”默认执行的方法”><result name=””></result></action>Test.javaTest-方法名-validate.xml 4、Struts1.x 与struts2.x区别1>、ActionStruts1.x的Action需要继承Action或者Action的子类,Struts2.x的Action可以不需要继承任何类,struts1比struts2跟依赖于框架,耦合性更高struts1.x的Action是单例的,struts2.x的Action是非单例的,所以struts1的action有线程安全的问题。struts2Action中的方法比struts1更简单2>、FormStruts1.x用于封装客户端参数的bean需要继承ActionForm,而struts2不需要3、标签Struts1的标签对JSTL的支持,而struts2增加了对OGNL的支持4、概况Struts1相比struts2依赖性更强、耦合性更高,以后系统的维护、升级更困难struts1的action有线程安全的问题,struts2没有
Hibernate
是持久层的对象到关系映射框架(OR/Mapping),主要是对JDBC进行轻量级的封装,可以通过对对象的访问来操作数据库表,简化开发。最终还是会将操作转换成SQL语句 通过JDBC来访问数据库。映射过程:主要是通过xxx.hbm.xml映射文件进行映射,该配置文件中主要指定了那个对象跟那个表进行映射,以及对象的那个属性与表的那个字段对应,以及对象与对象之间的关系映射进行配置。 数据库的链接信息:数据库连接信息主要通过hibernate.cfg.xml配置文件进行配置,在该配置文件中主要配置了连接数据库的路径、驱动、方言、用户名、密码、等信息 Hibernate的加载策略:1)、立即加载(lazy=”false”) 当查询得到一个对象之后会立即加载该对象相关联的的附属对象2)、延迟加载(lazy=”true”) 当查询得到一个对象之后不会立即加载该对象相关联的的附属对象,而是等到要用的时候才会加载。3)、批量加载 是指一次查询要查询多少条记录 ,提高查询效率4)、预先抓取(fetch=”join”) 也是立即加载的意思,只不过立即加载是采用普通的查询语句(可以一个查询会发送多条SQL语句),而预先抓取是使用连接查询语句进行查询,减少了查询语句的条数,提高效率,(注:预先抓取只在HQL语句中是无效的) Hibernate的事务处理:JDBC是自动提交、回滚事务Hibernate 是手动提交、回滚事务 Hibernate的持久对象的状态:临时状态 (指一个刚刚new出来对象、刚刚被删除的对象、或者从页面表单提交过来的对象都是属于临时状态,那么临时状态的对象时跟数据库没有任何关联的)持久状态 (指刚从数据库查询出来、刚保存、修改的对象,再session没关闭之前都属于持久状态)托管状态 (指持久状态的对象,session关闭之后就变成托管状态)Hibernate缓冲机制:Hibernate的缓冲机制有两种:一级缓冲(session级别),创建session到关闭session之间有效,Hibernate会自动使用一级缓存。二级缓冲 (sessionFactory级别) Hibernate不会自动使用二级缓冲,如果要使用的话,需要额外的进行配置(一般会采用第三方提供缓冲机制) Session session = SessionFactory.openSession(); Spring:
Spring提供了一个全方位的整合框架,它出现的目的是为了给现有的框架提供整合方案。IOC(依赖注入、控制反转):IoC主要是用于给对象的属性通过配置文件给其注入值。将之前在类中维护的关系转移到配置文件中维护,降低了类与类之间依赖性。AOP(面向切面):指在业务流程中切入与业务无关的一些操作(日志、权限),允许通过分离应用的业务逻辑系统服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发 ,只要通过动态代理机制实现。MVC:spring提供的一个MVC框架。 IOC原理:Ioc中文含义是依赖注入,其原理是:对象通过Spring ioc配置文件配置之后,又ico容器负责实例化该对象的实例,并根据配置需要给其注入属性值,也就是将实例化工作与给属性赋值工作交给了ioc容器,不再在类中实现这些动作,降低了类与类的耦合、实现松耦合开发,简化了系统的维护、升级,并为测试提供方便。AOP原理:Aop中文含义是面向切面,其原理是:允许我们将于业务无关的系统服务封装成一个服务类(切面),并在适合的时机(方法之前、方法之后、方法前后、抛出异常时)给目标对象切入该服务类,切入动作主要是靠动态代理机制来完成的,我们可以通过spring的配置文件来配置动态代理机制,Spring动态代理机制有两种:1>、BeanNameAutoProxyCreator2>、DefaultAdvisorAutoProxyCreator
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SSH特性与原理