SSH总结

时间:2024.2.27

1、spring+hibernate事务

事务管理器

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionMan <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> ager">

</bean>

事务的传播属性,如果没有匹配到的,则没有事务

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes> <tx:method name="o*" read-only="true" /> <tx:method name="modify*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="up*" propagation="REQUIRED" /> </tx:attributes> </tx:advice>

配置在哪些类的哪些方法上加属性,需要结合事务的传播属性才能用 <aop:config>

<aop:pointcut id="bussinessService" expression="execution( * com.zwls.service..*.*(..))" /> <aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" /> </aop:config>

使用:1、只有在上层通过注入得到的对象直接调用的方法才起作用

2、在上层通过trycatchexception能捕获到事务异常,而且会自动回滚。

3、在上面配置的方法里面加trycatchexction没有用

Hibernate 属性配置

1)<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true

2)<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true

3)<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true 4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false 5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false

6)<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false

7)<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认false


第二篇:ssh总结


struts2总结:

先说一下struts2的工作流程:

核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。

业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件

的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是

WebWork的升级版本。Struts 2框架按照模块来划分,可以分为Servlet Filters、Struts核心模

块、拦截器和用户实现部分。Struts 2框架结构图如图3.1所示。

一个请求在Struts 2框架中的处理大概分为以下几个步骤。

客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost:

8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)请求。

请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过

滤器(SiteMesh等)、 FilterDispatcher)。注意:这里是有顺序的,先ActionContext

CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。

FilterDispatcher是控制器的核心,就是MVC的Struts 2实现中控制层(Controller)的核心。 FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet

Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处

理交给ActionProxy。

ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的

Action类。例如,用户注册示例将找到UserReg类。

ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action

。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)

一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果

result。

说完struts2还应该说一下struts1的工作原理:

由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm

对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户

的请求。把我看到的和知道的整理出来。

对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象中,例如Action的映射信息存放在ActionMapping对象中。(struts的配置文件struts-config.xml:一个用户请求是通过ActionServlet来处理和转发的。那么,ActionServlet如何决定把用户请求转发给哪个Action对象呢?这就需要一些描述用户请求路径和Action映射关系的配置信息了。在Struts中,这些配置映射信息都存放在特定的XML文件struts-config.xml中。在该配置文件中,每一个Action的映射信息都通过一个<action>元素来配置。这些配置信息在系统启动的时候被读入内存,供Struts在运行期间使用。在内存中,每一个<Action>元素都对应一个org.apache.struts.aciton.ActionMapping的实例)

/**********************

用户通过客户端向服务器发出一个请求,而我们已经在web.xml配置了所有符合某某格式的请求都将由指定的Servlet来处理。比如说:只要是以.do结尾的请求(*.do)都由org.apache.struts.action.ActionServlet来对其进行处理。而ActionServlet和ActionMapping都已经在服务器启动的时候被加载到内存里面。

结合登录例子:

当用户登录时,地址栏的URL为:http://localhost:8080/struts_login/login.do

ActionServlet会拿到用户的请求,并且去分析这个URL,它会截下/login(不包含.do)这一部分,截来之后,它的目的是为了去struts-config.xml这个配置文件里面找<action>标签path属性的值等于所截部分的那个Action。找到之后,ActionServlet会把表单提交的数据给存放到ActionForm上,那ActionServlet又是怎么找到ActionForm的呢?因为Action标签里面有一个属性是name,它的值就是所要找的ActionForm的名字,这样ActionServlet会去上面的<form-beans>标签里面找<form-bean>(注意不是<form-beans>)标签里面的name属性的值是与Action标签里面的name的值相等的<form-bean>,然后根据<form-bean>里面type属性的值,也就是所指的对象new一个实例,再把表单上相应的数据set进去。同时把<action>标签里面的东西放到继承Action类的那个指定类(本例子用的是LoginAction)的public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception

这个方法里面参数mapping里面去,放好之后,再去调用我们自己写的类(LoginAction),并把mapping,form,request,response作为参数传到execute方法里面去。

至于如何转向的问题:这是由Struts完成的,只要你的execute能返回一个ActionForward

对象,并且里面包含有转向的信息,Struts就会根据参数(mapping.findForward("success")里面的"success")去找相应配置文件(struts-config.xml)里面的相应标签(<forward name="success" path="/login_success.jsp"></forward>),然后再由Struts框架决定转向谁。由于上面已经说过,整个转向的相关信息已经存放在mapping里面,所以mapping.findForward("success")能够找到相应的标签。

*/--这部是我自己增加的,其余都是出自《精通Struts基于MVC的Java.Web设计与开发》 当ActionServlet接收到一个客户请求时,将执行如下流程:

(1) 检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。

(2) 如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。

(3) 根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。

(4) 如果ActionForm的validate()方法返回null返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。

(5) ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。

(6) Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。

(7) ActionForward对象指向的JSP组件生成动态网页,返回给客户。

对于以上流程的流程(4),如果ActionForm的validate()方法返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的execute()方法。

最后旧的谈一谈struts1与struts2的区别了:

首先:struts1是通过servlet启动的。

一、struts1要求Action类继承一个抽象基类,而不是接口。

struts2的action类可以实现一个action接口,也可以实现其他接口。

二、sturts1 action是单例模式,线程是不安全的。

struts2 action线程是安全的,action为每一个请求都生成了一个实例。

三、sturts1过去依赖serlet API,不容易测试。

struts2不依赖于容器,允许Action脱离容器单独被测试。

四、Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。 Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

五、Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。

Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).

六、Struts 1使用标准JSP机制把对象绑定到页面中来访问。

Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。

七、Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。

Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。

八、Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。

Struts2支持通过validate方法和XWork校验框架来进行校验。

九、Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。

更多相关推荐:
ps结课心得

ps结课心得ps结课心得一PS结课心得第一次接触ps时觉得很神秘我无法忘记第一次完成作品时内心的欣喜之情霎那间产生了兴趣随着接触的深入发现ps功能的强大每节课跟着老师做案例设计都是一步步的实践原来ps并不难需要...

photoshop基础结课论文

Photoshop基础作业ps的主要功能简述专业金融0902姓名宋宇航学号310910080221位号25短短一学期的photoshop基础公选课就要结束了从自己眼中的神笔马良到老师一层一层的揭开它神秘的面纱自...

ps教学工作总结

12级商务3班《图形图像处理》项目教学工作总结一学期很快就要过去,回顾本学期的教学工作,感到很辛苦,同时也感到很欣慰。因为我的学生在结束本学期课程后,基本都达到了教学大纲的要求,部分优秀的学生甚至能开始独立完成…

PS课程总结)

Photoshop图像处理课程总结20xx年又上了以前曾多次上过的PS课程,经过长时间的教学,我总结了几个经验与其他老师共享:1.上好第一节课,调动和激发学生学习热情和积极性。我认为上好Photoshop第一课…

Photoshop课程学习小结

塔里木大学公共选修课Photoshop图形图像处理技术明月制作设计说明书学生姓名学号5011210130所属学院信息工程学院专业计算机科学与技术班级计算机141指导教师明月制作步骤1新建一个文件参数如下2选择工...

Photoshop教学总结

Photoshop教学总结四川省叙永县职业高级中学校马小荣作为平面设计领域的龙头软件Photoshop已经越来越普及了很多职业院校都开设了这门课程我们学校最后这两届电脑班也开设了平面设计及动画等相关专业的课程正...

ps课程实践总结

实习类型实习单位实习起止时间指导教师所在院(系)专业班级学生姓名学号一、实习的基本概况(一)理论指导Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以更有效的进行图片编辑工作。1…

Photoshop课程总结

Photoshop课程总结Photoshop课程是服装专业的一门必修课程作为设计专业的辅助性软件为学生进行更好更简单的服装款式或效果图绘制提供辅助作用在行业中也是运用教广泛的软件之一本学期我所教授的班级是137...

ps知识点总结

第一章绪论一photoshop软件简介1软件产生的背景产生时间20世纪80年代中期地点Michigan大学人物ThomasKaon发展过程麦金塔平台WindowsPhotoshop502Photoshop的专长...

ps总结所有知识点

11月1819日矢量图和位图的区别图像的颜色模式8种RGB的颜色内容CMYK是什么模式颜色内容位图模式和灰度模式的区别支持透明背景的图片格式Photoshop的专有格式移动工具魔棒工具矩形选框工具套索工具油漆桶...

20xxps教学工作总结

教学工作总结本学期担任电商专业6个班级的PS课程的教学工作开学初刚拿到这本教材时我很紧张担心教不好这门课程对于初学者是有一定难度的再加上自己也不是特别熟悉教材种种焦虑不管怎样任务安排下来了我就得尽自己最大的努力...

《Photoshop》学习总结报告

Photoshop学习总结报告姓名学号班级指导老师递交日期一学习主题PS教程学习二学习时间20xx年9月1日20xx年10月24日三学习地点南区4号西4J231四学习内容PS基本工具的应用图层通道滤镜蒙版等在近...

ps结课总结(22篇)