Mysql实现版本:create table project(id varchar(10),name varchar(10));create table hetong(id varchar(10),projectid varchar(10),hetongkuan varchar(10));create table inmoney(id varchar(10),hetongid varchar(10),money varchar(10));insert into project values("1","pro1");insert into project ...
- 13:06
- 浏览 (397)
- 评论 (0)
下面我们来看看Spring的AOP的一些相关代码是怎么得到Proxy的,让我们我们先看看AOP和Spring AOP的一些基本概念:
Advice:
通知,制定在连接点做什么,在Sping中,他主要描述Spring围绕方法调用注入的额外的行为,Spring提供的通知类型有:
before advice,AfterReturningAdvice,ThrowAdvice,MethodBeforeAdvice,这些都是Spring AO ...
下面我们对Spring MVC框架代码进行分析,对于webApplicationContext的相关分析可以参见以前的文档,我们这里着重分析Spring Web MVC框架的实现.我们从分析DispatcherServlet入手:
代码
//这里是对DispatcherServlet的初始化方法,根据名字我们很方面的看到对各个Spring MVC主要元素的初始化
protected void initFrameworkServlet() throws Servle ...
下面我们看看Spring JDBC相关的实现,
在Spring中,JdbcTemplate是经常被使用的类来帮助用户程序操作数据库,在JdbcTemplate为用户程序提供了许多便利的数据库操作方法,比如查询,更新等,而且在Spring中,有许多类似 JdbcTemplate的模板,比如HibernateTemplate等等 - 看来这是Rod.Johnson的惯用手法,一般而言这种Template中都是通过回调函数CallBack类的使用来完成功能的,客户需要在回调接口中实现自己需要的定制行为,比如使用客户想要用的SQL语句等。不过往往Spring通过这种回调函数的实现已经为我们提供了许 ...
以下引用自博客:http://jiwenke-spring.blogspot.com/
上面我们分析了IOC容器本身的实现,下面我们看看在典型的web环境中,Spring IOC容器是怎样被载入和起作用的。
简单的说,在web容器中,通过ServletContext为Spring的IOC容器提供宿主环境,对应的建立起一个IOC容器的体系。其中,首先需要建立的是根上下文,这个上下文持有的对象可以有业务对象,数据存取对象,资源,事物管理器等各种中间层对象。在这个上下文的基础上,和web MVC相关还会有一个上下文来保存控制器之类的MVC对象,这样就构成了一个层次化的上下文结构。 ...
在认真学习Rod.Johnson的三部曲之一:<
>,顺便也看了看源代码想知道个究竟,抛砖引玉,有兴趣的同志一起讨论研究吧!
以下内容引自博客:http://jiwenke-spring.blogspot.com/,欢迎指导:)
在Spring中,IOC容器的重要地位我们就不多说了,对于Spring的使用者而言,IOC容器实际上是什么呢?我们可以说BeanFactory就是我们看到的IoC容器,当然了Spring为我们准备了许多种IoC容器来使用,这样可以方便我们从不同的层面,不同的资源位置,不同的形式的定义信息来建立我们需要的IoC容器。
在Spring中,最基本的 ...
在spring里面我们一般是这样来使用模板模式的:
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update("UPDATE user SET age = 10 WHERE id = 'erica'");
或者:
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate
.update(
"UPDATE user SET age = ? WHERE id = ?" ...
public List getTransFeeDate(final String departmentCode, final String subDepartmentCode, final String countDate) ...{ // TODO Auto-generated method stub List list = new Ar ...
- 23:51
- 浏览 (295)
- 评论 (0)
为了避免丢失更新,要使用某种锁定策略,共有两种锁定策略:悲观锁定或乐观锁定。
悲观锁定(pessimistic locking):
用户在屏幕上修改值之前,这个锁定方法就要起作用。例如,用户一旦有意对他选择的某个特定行(屏幕上可见)执行更新,如单击屏幕上的一个按钮,就会放上一个锁。
悲观锁定仅用于有状态(stateful)或有连接(connected)的环境,这是20世纪90年代中期客户/服务器应用中的一种流行做法。但现在采用有状态方式的连接方法已经不太常见了(不过并没有完全消失),特别是随着20世纪90年代中后期应用服务器的出现,有状态连接更是少见。
悲观锁定的例子:
select ...
- 23:45
- 浏览 (339)
- 评论 (0)
- 分类: Hibernate相关
在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数据量的,可以使用session.clear()或者session. Evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象。
2) 对大数据量查询时,慎用list()或者iterator()返回查询结果,
1. 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。
2. 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时 ...
- 23:36
- 浏览 (533)
- 评论 (0)
- 分类: Hibernate相关
Hibernate主要从以下几方面来优化查询性能:
1.降低访问数据库的频率,减少select语句的数目。实现手段包括:
(1) 使用迫切左外连接或迫切内连接检索策略。
(2) 对延迟检索或立即检索策略设置批量检索数目。
(3) 使用查询缓存。
2.避免多余加载程序不需要访问的数据。实现手段包括:
(1) 使用延迟检索策略
(2) 使用集合过滤。
3.避免报表查询数据占用缓存。实现手段为利用投影查询功能,查询出实体的部分属性。
4.减少select语句中的字段,从而降低访问数据库的数据量。实现手段为利用Query的iterate()方法。
...
- 23:35
- 浏览 (395)
- 评论 (0)
- 分类: Hibernate相关
1、针对oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。
即在hibernate配制文件中进行配制:
1
2
3 &nbs ...
- 23:32
- 浏览 (163)
- 评论 (0)
- 分类: Hibernate相关
1、针对oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。
- 23:32
- 浏览 (142)
- 评论 (0)
- 分类: Hibernate相关
我们如果要位Tapestry增加spring的支持,需要改写Tapestry的引擎(org.apache.tapestry.engine.BaseEngine)主要是增加以下功能代码,使Tapestry的global对象中存在spring Context Map global =(Map)getGlobal();ApplicationContext appContext=(ApplicationContext)global.get("springContext");if(appContext===null)...{ &nbs ...
- 17:20
- 浏览 (144)
- 评论 (0)
我们在集成Spring和struts的时候,往往习惯于使用spring提供的ActionSupport,然后使用getWebApplicationContext()方法获得spring的bean,这样固然方便,但有一个弊端,就是我们的struts action依赖了spring的api,增加了耦合,现在什么都流行高内聚,低耦合,spring为我们提供了代理的Struts action,这样,我们在struts-config.xml不再为path设置真正的action,而是设计spring的代理Action,然后由spring的代理action,去寻找在spring bean 容器中的真正的ac ...
- 16:32
- 浏览 (186)
- 评论 (0)
(1)使用Struts插件 在struts-config.xml中 <plug-in className="org.springframework.web.struts.ContextLoaderPlugin"> <set-property property="contextCon ...
- 15:23
- 浏览 (214)
- 评论 (0)
1,标签的实现类NumenTag.java import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;/** *//** * ...
- 14:56
- 浏览 (679)
- 评论 (1)
本文主要说的是关于在展示层一些常用的方案和实现,目录如下: 手工实现分页 用eXtremeTable标签实现自动分页 用oscache缓存jsp,提高性能 第一.自己实现一个工具类PageBean完成所有分页工作.本分页实现概览:Struts + hibernate PageBean负责两部分内容,一是要在页面显示的业务信息,是一个ArrayList;另一个是逻辑控制信息,诸如是否有下一页,上一页等等.PageBean代码如下:public class PageBean { int currentPage& ...
- 14:54
- 浏览 (270)
- 评论 (0)
这和AbstractExcelView,AbstractPdfView不同,此类是实现View接口,实现自定义的视图解析 package Action;import java.awt.image.BufferedImage;import java.util.Map;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; ...
- 16:13
- 浏览 (146)
- 评论 (0)
Spring不仅支持jsp,velocity,freemarker,同时可以将数据生成到Excel,PDF等非html文档首先,我们编写控制器,返回逻辑名“ListStudentUseExcel”package Action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.validation.BindException;import ...
- 15:58
- 浏览 (327)
- 评论 (0)
■打开■ <input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开> <OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser w ...
- 15:06
- 浏览 (106)
- 评论 (0)
首先,我们定义一个总体的tiles视图 /tiles/mainTemplate.jsp首先使用:<tiles:getAsString name="title"/>打印tiles配置文件中定义的字符串属性title然后是分别加载header,content,footer三个jsp页面,共同组成mainTemplate.jsp<%...@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"& ...
- 12:06
- 浏览 (507)
- 评论 (0)
public ActionForward download(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) &n ...
- 17:03
- 浏览 (127)
- 评论 (0)
如下为深复制源代码。public Object deepClone(){//将对象写到流里ByteArrayOutoutStream bo=new ByteArrayOutputStream();ObjectOutputStream oo=new ObjectOutputStream(bo);oo.writeObject(this);//从流里读出来ByteArrayInputStream bi=new ByteArrayInputStream(bo.toByteArray());ObjectInputStream oi=new ObjectInputStream(bi);return(oi. ...
- 20:46
- 浏览 (95)
- 评论 (0)
说明:①为什么我们在派生类中覆盖Object的clone()方法时,一定要调用super.clone()呢?在运行时刻,Object中的clone()识别出你要复制的是哪一个对象,然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。②继承自java.lang.Object类的clone()方法是浅复制。以下代码可以证明之。class Professor { String name; int age; Professor(String name,int age)   ...
- 20:45
- 浏览 (104)
- 评论 (0)
那应该如何实现深层次的克隆,即修改s2的教授不会影响s1的教授?代码改进如下。改进使学生1的Professor不改变(深层次的克隆)class Professor implements Cloneable{ String name; int age; Professor(String name,int age) { this.name=name;   ...
- 20:45
- 浏览 (102)
- 评论 (0)
.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。2.Java的clone()方法⑴clone方法将对象复制了一份并返回给调用者。一般而言,clone()方法满足:①对任何的对象x,都有x.clone() !=x//克隆对象与原对象不 ...
- 20:44
- 浏览 (127)
- 评论 (0)
东汉三国时期,群雄逐鹿,人杰辈出!与绝大多数怀才不遇者的思维定势相反:长期隐居南阳草庐的诸葛亮一出山就投靠了当时最为势单力薄的刘备集团并终生为其奔走效力。 在为刘备集团做出杰出贡献基础上,诸葛亮实现了个人事业的成功——这归根结底取决于诸葛亮近乎圆满的职业选择策划! 首先,诸葛亮的个人职业发展定位非常清晰。诸葛亮自幼胸怀大志,始终以春秋战国时期两位著名的最高参谋管仲、乐毅为个人楷模,立誓要成为他所处时代杰出的“谋略大师”,为光复汉室贡献力量;同时,诸葛亮也非常清楚:他自己长期积累的才干已具备了实现职业目标的可能! 其次,从应聘对象选择 ...
- 21:30
- 浏览 (93)
- 评论 (0)
- 浏览: 84429 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Static初始化代码快访问st ...
当然啦,final型常量只能被赋值一次
-- by Chihom -
Tomcat 5.5不能使用EL表达 ...
請在web.xml修改XSD<?xml version="1.0" enc ...
-- by trowa -
一个通用的泛型GenericH ...
谢谢!使用中!
-- by sangood -
Spring AOP四种创建通知( ...
我一直想知道如何拦截某个类中特定的方法,而不是所有的方法?
-- by yourgame -
HashTable和HashMap的区 ...
这么多总结,还算你的这个不错,谢谢,学习
-- by lysmart_8






评论排行榜