锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧洲日产韩国在线,亚洲高清视频在线,亚洲AV无码乱码麻豆精品国产http://www.tkk7.com/dragonofson/category/12320.htmlzh-cnWed, 28 Feb 2007 05:12:14 GMTWed, 28 Feb 2007 05:12:14 GMT60- Spring浜嬪姟鍘熺悊http://www.tkk7.com/dragonofson/articles/54690.htmlDragonofsonDragonofsonFri, 23 Jun 2006 07:35:00 GMThttp://www.tkk7.com/dragonofson/articles/54690.htmlhttp://www.tkk7.com/dragonofson/comments/54690.htmlhttp://www.tkk7.com/dragonofson/articles/54690.html#Feedback0http://www.tkk7.com/dragonofson/comments/commentRss/54690.htmlhttp://www.tkk7.com/dragonofson/services/trackbacks/54690.html
spring鎻愪緵浜?jiǎn)鍑犱釜鍏充簬浜嬪姟澶勭悊鐨劸c伙細(xì)聽(tīng)
TransactionDefinition聽(tīng)//浜嬪姟灞炴у畾涔?br />TranscationStatus聽(tīng)//浠h〃浜?jiǎn)褰撳墠鐨勪簨鍔″Q屽彲浠ユ彁浜わ紝鍥炴粴銆?br />PlatformTransactionManager榪欎釜鏄痵pring鎻愪緵鐨勭敤浜庣鐞嗕簨鍔$殑鍩虹鎺ュ彛錛屽叾涓嬫湁涓涓疄鐜扮殑鎶借薄綾籄bstractPlatformTransactionManager,鎴戜滑浣跨敤鐨勪簨鍔$鐞嗙被渚嬪DataSourceTransactionManager絳夐兘鏄繖涓被鐨勫瓙綾匯?br />
涓鑸簨鍔″畾涔夋楠わ細(xì)
TransactionDefinition td = new TransactionDefinition();
TransactionStatus ts = transactionManager.getTransaction(td);
try
{ //do sth
聽(tīng) transactionManager.commit(ts);
}
catch(Exception e){transactionManager.rollback(ts);}
聽(tīng)
spring鎻愪緵鐨勪簨鍔$鐞嗗彲浠ュ垎涓轟袱綾伙細(xì)緙栫▼寮忕殑鍜屽0鏄庡紡鐨勩傜紪紼嬪紡鐨勶紝姣旇緝鐏墊椿錛屼絾鏄唬鐮侀噺澶э紝瀛樺湪閲嶅鐨勪唬鐮佹瘮杈冨錛涘0鏄庡紡鐨勬瘮緙栫▼寮忕殑鏇寸伒媧匯?br />
緙栫▼寮忎富瑕佷嬌鐢╰ransactionTemplate銆傜渷鐣ヤ簡(jiǎn)閮ㄥ垎鐨勬彁浜わ紝鍥炴粴錛屼竴緋誨垪鐨勪簨鍔″璞″畾涔夛紝闇娉ㄥ叆浜嬪姟綆$悊瀵硅薄.
void add()
{
聽(tīng)聽(tīng)聽(tīng) transactionTemplate.execute( new TransactionCallback(){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) pulic Object doInTransaction(TransactionStatus ts)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) { //do sth}
聽(tīng)聽(tīng)聽(tīng) }
}
澹版槑寮忥細(xì)
浣跨敤TransactionProxyFactoryBean:
<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
聽(tīng)聽(tīng)<property name="transactionManager"><ref bean="transactionManager"/></property>
聽(tīng)聽(tīng)<property name="target"><ref local="userManagerTarget"/></property>
聽(tīng)聽(tīng)<property name="transactionAttributes">
聽(tīng)聽(tīng)聽(tīng)<props>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)<prop key="insert*">PROPAGATION_REQUIRED</prop>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)<prop key="update*">PROPAGATION_REQUIRED</prop>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
聽(tīng)聽(tīng)聽(tīng)</props>
聽(tīng)聽(tīng)</property>
聽(tīng)</bean>
鍥寸粫Poxy鐨勫姩鎬佷唬鐞?鑳藉鑷姩鐨勬彁浜ゅ拰鍥炴粴浜嬪姟
org.springframework.transaction.interceptor.TransactionProxyFactoryBean
- PROPAGATION_REQUIRED--鏀寔褰撳墠浜嬪姟錛屽鏋滃綋鍓嶆病鏈変簨鍔★紝灝辨柊寤轟竴涓簨鍔°傝繖鏄渶甯歌鐨勯夋嫨銆?
- PROPAGATION_SUPPORTS--鏀寔褰撳墠浜嬪姟錛屽鏋滃綋鍓嶆病鏈変簨鍔★紝灝變互闈炰簨鍔℃柟寮忔墽琛屻?
- PROPAGATION_MANDATORY--鏀寔褰撳墠浜嬪姟錛屽鏋滃綋鍓嶆病鏈変簨鍔★紝灝辨姏鍑哄紓甯搞?
- PROPAGATION_REQUIRES_NEW--鏂板緩浜嬪姟錛屽鏋滃綋鍓嶅瓨鍦ㄤ簨鍔★紝鎶婂綋鍓嶄簨鍔℃寕璧楓?
- PROPAGATION_NOT_SUPPORTED--浠ラ潪浜嬪姟鏂瑰紡鎵ц鎿嶄綔錛屽鏋滃綋鍓嶅瓨鍦ㄤ簨鍔★紝灝辨妸褰撳墠浜嬪姟鎸傝搗銆?
- PROPAGATION_NEVER--浠ラ潪浜嬪姟鏂瑰紡鎵ц錛屽鏋滃綋鍓嶅瓨鍦ㄤ簨鍔★紝鍒欐姏鍑哄紓甯搞?
- PROPAGATION_NESTED--濡傛灉褰撳墠瀛樺湪浜嬪姟錛屽垯鍦ㄥ祵濂椾簨鍔″唴鎵ц銆傚鏋滃綋鍓嶆病鏈変簨鍔★紝鍒欒繘琛屼笌PROPAGATION_REQUIRED綾諱技鐨勬搷浣溿?br />

]]> - Spring瑙嗗浘瑙f瀽鍣?/title>http://www.tkk7.com/dragonofson/articles/54139.htmlDragonofsonDragonofsonWed, 21 Jun 2006 03:10:00 GMThttp://www.tkk7.com/dragonofson/articles/54139.htmlhttp://www.tkk7.com/dragonofson/comments/54139.htmlhttp://www.tkk7.com/dragonofson/articles/54139.html#Feedback0http://www.tkk7.com/dragonofson/comments/commentRss/54139.htmlhttp://www.tkk7.com/dragonofson/services/trackbacks/54139.html<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"><value>/WEB-INF/JSP/</value></property>
<property name="suffix"><value>.jsp</value></property>
<property name="viewClass"><value>org.springframework.web.servlet.view.JstView</value></property>
//欏甸潰浣跨敤JSTL
</bean>
2.BeanNameViewResolver,XmlFileViewResover浣跨敤瀹氬埗瑙嗗浘(PDF,Excel,鍥劇墖)
BeanNameViewResolver(榪斿洖鐨勬槸bean)
聽(tīng) <bean id="beanNameViewResolver" class="org.spring.framework.web.servlet.view.BeanNameViewResovler">
<bean id="courseList" class="com.CourseList">//courseList we鏄?new ModelAndView("courseList","courses",courses);
<bean id="beanNameViewResolver" class="org.spring.framework.web.servlet.view.XmlFileViewResover">
<property name="location>
<value>/WEB-INF/traning-views.xml</value>
</property>
</bean>
3.<bean id="bundleViewResolver" class="org.springframework.web.servlet.view.ResourceViewResolver">
聽(tīng)聽(tīng) <property name="basename">
<value>view</value>
</property>
</bean>
鏍規(guī)嵁鐢ㄦ埛鐨勫湴鐞嗕綅緗覆鏌撲笉鍚岀殑瑙嗗浘銆?img src ="http://www.tkk7.com/dragonofson/aggbug/54139.html" width = "1" height = "1" />
]]> - Spring MVC琛ㄥ崟楠岃瘉http://www.tkk7.com/dragonofson/articles/54118.htmlDragonofsonDragonofsonWed, 21 Jun 2006 01:39:00 GMThttp://www.tkk7.com/dragonofson/articles/54118.htmlhttp://www.tkk7.com/dragonofson/comments/54118.htmlhttp://www.tkk7.com/dragonofson/articles/54118.html#Feedback0http://www.tkk7.com/dragonofson/comments/commentRss/54118.htmlhttp://www.tkk7.com/dragonofson/services/trackbacks/54118.html閲囧彇鐨勬槸spring action 涓殑渚嬪瓙
楠岃瘉涓涓猄tudent瀵硅薄
聽(tīng)聽(tīng)聽(tīng)1.implements Validator鎺ュ彛(org.springframework.validation.Validator)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)public class StudentValidator implements Validator
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)public boolean supports(Class clazz)//蹇呴』瀹炵幇鐨勬柟娉?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng){return clazz.equals(Student.class)聽(tīng);
聽(tīng)聽(tīng)聽(tīng) 聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 聽(tīng)public void validate(Object command,Errors errors)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Student student =(Student)command;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)//聽(tīng)ValidationUtils.rejectIfEmpty聽(tīng) (Errors errors, String field, String errorCode, String defaultMessage)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.rejectIfEmpty(errors,"login","required.login","login is required");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.rejectIfEmpty(errors,"password","required.password","Password is required");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.rejectIfEmpty(errors,"firstName","required.firstName","firstNameis required");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.rejectIfEmpty(errors,"lastName","required.lastName","lastNameis required");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.rejectIfEmpty(errors,"city","required.login","cityis required");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)validateEmail(student .email,errors);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)validatePhone(student .phone,errors);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)private static final String PHONE_REGXP="/(\\({0,1}(\\d{3})))/"
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)private void validatePhone(String phone, Errors erros)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.rejectIfEmpty(errors,"phone","required.phone","phoneis required");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Perl5Util per5Util=new Perl5Util();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) if(!per5Util.math(PHONE_REGXP,phone))
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)errors.reject("invalid.phone","Phone number is invalid");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)private static final String Email_REGXP="/(\\({0,1}(\\d{3})))/"
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)private void validateEmail(String phone, Errors erros)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.rejectIfEmpty(errors,"phone","required.phone","phoneis required");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Perl5Util per5Util=new Perl5Util();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) if(!per5Util.math(Email_REGXP,email))
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)errors.reject("invalid.phone","Phone number is invalid");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
}
2.閰嶇疆bean
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)<bean id="methodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName"><value>method</value>
</property>
<property name="defaultMethodName"><value>view</value>
</property>
</bean>
<property name="validator"><bean class="com.StudentValidator "/>聽(tīng)
</property>
<property name="defaultMethodName"><value>view</value>
</property>
<bean name="/jsp/test.do" class="org.nightwalker.spaces.web.controller.TestController">
<property name="methodNameResolver">
<ref local="methodNameResolver"/>
</property>
</bean>
聽(tīng)
鏌ョ湅婧愪唬鐮侊細(xì)
MultiActionController綾伙細(xì)
聽(tīng)聽(tīng)protected void bind(ServletRequest request, Object command) throws Exception {
聽(tīng)聽(tīng)logger.debug("Binding request parameters onto MultiActionController command");
聽(tīng)聽(tīng)ServletRequestDataBinder binder = createBinder(request, command);
聽(tīng)聽(tīng)binder.bind(request);
聽(tīng)聽(tīng)if (this.validators != null) {
聽(tīng)聽(tīng)聽(tīng)for (int i = 0; i < this.validators.length; i++) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)//棣栧厛璋冪敤supports
聽(tīng)聽(tīng)聽(tīng) 聽(tīng)聽(tīng)if (this.validators[i].supports(command.getClass())) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ValidationUtils.invokeValidator(this.validators[i], command, binder.getErrors());
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)binder.closeNoCatch();
聽(tīng)}
綾籚alidationUtils錛?br />public static void invokeValidator(Validator validator, Object obj, Errors errors) {
聽(tīng)聽(tīng)if (validator != null) {
聽(tīng)聽(tīng)聽(tīng)if (logger.isDebugEnabled()) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)logger.debug("Invoking validator [" + validator + "]");
聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)if (obj != null && !validator.supports(obj.getClass())) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)throw new IllegalArgumentException("Validator " + validator.getClass() +
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)" does not support " + obj.getClass());
聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)validator.validate(obj, errors);
聽(tīng)聽(tīng)聽(tīng)if (logger.isDebugEnabled()) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)if (errors.hasErrors()) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)logger.debug("Validator found " + errors.getErrorCount() + " errors");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)else {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)logger.debug("Validator found no errors");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)}
聽(tīng)}
聽(tīng)

]]>- 鍏充簬Spring MVC鏋勬灦http://www.tkk7.com/dragonofson/articles/53919.htmlDragonofsonDragonofsonTue, 20 Jun 2006 02:50:00 GMThttp://www.tkk7.com/dragonofson/articles/53919.htmlhttp://www.tkk7.com/dragonofson/comments/53919.htmlhttp://www.tkk7.com/dragonofson/articles/53919.html#Feedback0http://www.tkk7.com/dragonofson/comments/commentRss/53919.htmlhttp://www.tkk7.com/dragonofson/services/trackbacks/53919.html鎬諱綋鍥捐〃錛堝弬鐓tucts錛?br />
DispatcherServlet=ActionServlet
HandlerMapping=Struts-config.xml
Controller=Action
ModelAndView=mapping.findforward(string) 涓殑string;
ViewResolver=mapping.findforward(string) 涓璼tring鐨勮В閲婂櫒
鐗瑰埆娉ㄦ剰錛?br />1.鍦╳eb.xml閲岄潰閰嶇疆濂?br /><servlet>
聽(tīng)聽(tīng)聽(tīng) <servlet-name>springapp</servlet-name>
聽(tīng)聽(tīng)聽(tīng) <servlet-class>org.springframework.web.servlet.DispatcherServlet
聽(tīng)聽(tīng)聽(tīng) </servlet-class>
聽(tīng)聽(tīng)聽(tīng) <load-on-startup>1</load-on-startup>
聽(tīng) </servlet>
聽(tīng)<servlet-mapping>
聽(tīng)聽(tīng)聽(tīng) <servlet-name>springapp</servlet-name>
聽(tīng)聽(tīng)聽(tīng) <url-pattern>*.do</url-pattern>
聽(tīng) </servlet-mapping>
涓嶉渶瑕侀厤緗甤ontext-param
<context-param>
聽(tīng) <param-name>contextConfigLocation</param-name>
聽(tīng) <param-value>/WEB-INF/springapp-servlet.xml</param-value>
</context-param>
DispatcherServlet聽(tīng)鑳藉鑷姩鐨勫埌WEB-INF涓嬮潰鏌ユ壘涓庝粬鍚屽悕鐨勫悗闈㈡帴-servlet,.xml鐨勯厤緗枃浠躲?br />錛坰pringapp-servlet.xml錛?br />
娉ㄦ剰錛欴ispatcherServlet聽(tīng)澶勭悊鐨勮煩杞繀欏昏鍦ㄥ伐紼嬪悕涓嬮潰銆備緥濡傦細(xì)宸ョ▼鍚嶄負(fù):SpringMvc.鍒?/font>Http://localhost:8080/SpringMvc/test.htm鍙互璺寵漿銆?br />Http://localhost:8080/test.htm聽(tīng)涓嶈兘璺寵漿
聽(tīng)璇︾粏璇存槑MultiActionController鐨勯厤緗惂錛?
棣栧厛鍦╞ean.xml閲岄潰錛?
<bean id="methodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName"><value>method</value> //鐩稿綋浜嶥ispatchAction鐨刴ethod鍚庨潰鎺ラ渶瑕佽Е鍙戠殑鏂規(guī)硶
</property>
聽(tīng)
//鍙︿竴涓Е鍙戞柟娉曠殑閰嶇疆
//褰撴彁浜oureList.htm鏃跺欒Е鍙慶oursesUnsorted鏂規(guī)硶錛屽綋鎻愪氦coursesSort.htm鏃跺欒Е鍙慶oursesSortByDate鏂規(guī)硶
<property name="mapping">
聽(tīng) <props>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <prop key="/coureList.htm">coursesUnsorted</prop>
聽(tīng)聽(tīng)聽(tīng)聽(tīng) 聽(tīng)<prop key="/coursesSort.htm">coursesSortByDate</prop>
聽(tīng)聽(tīng)聽(tīng)</props>
</property>
</bean>
//榛樿鏂瑰紡欏甸潰璺寵漿鍒癈ontroller
<bean name="/jsp/test.do" class="org.nightwalker.spaces.web.controller.TestController">
<property name="methodNameResolver">
<ref local="methodNameResolver"/>
</property>
</bean>
聽(tīng)
//SimpleUrlHandlerMapping欏甸潰璺寵漿鍒癈ontroller
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHand">
<property name="mapping">
<props>
<prop key="/listCourses.htm">listCourseController</prop>
<prop key="/register.htm">registerController</prop>
<props>
</props>
</property>
</bean>
閰嶇疆鍛㈠氨榪欎箞綆鍗曘俶ethodNameResolver鎸囧畾浜?jiǎn)璋冪敤MultiActionController涓柟娉曠殑鏂瑰紡錛屼緥濡傦紝濡傛灉鍦ㄤ綘鐨凪ultiActionController涓湁濡備笅鏂規(guī)硶錛?
public ModelAndView insertAccount(HttpServletRequest request,HttpServletResponse,Account account)
{
}
閭d箞瑕佽皟鐢ㄨ繖涓柟娉曪紝浣犵殑JSP欏甸潰鐨勮姹俇RL灝卞簲璇ヨ繖鏍峰啓錛?
<form action="test.do?method=insertAccount">
</form>
鑷充簬緇戝畾浠涔坈ommand鍜孞SP鏄病鏈夊叧緋葷殑銆備綘鍦∕ultiActionController涓殑鏂規(guī)硶絳懼悕絎笁涓弬鏁版槸浠涔堝璞★紝Spring灝變細(xì)鎶妑equest涓弬鏁扮殑鍊肩粦瀹氬埌鏂規(guī)硶絳懼悕鐨勭涓変釜瀵硅薄涓?
渚嬪瓙鎴戝掓槸娌℃湁錛屾渶鐩存帴鐨勫姙娉曞氨鏄幓鐪嬩竴涓婱ultiActionController鐨勬簮浠g爜錛岄潪甯哥畝鍗曟媺錛屼竴鐪嬪氨鏄庣櫧浜?jiǎn)銆?/span>
protectedfinal ModelAndView invokeNamedMethod(String methodName, HttpServletRequest request, HttpServletResponse response)throwsException
{
聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng)
聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng)
// If last parameter isn't of HttpSession type, it's a command.
// 鍦ㄨ繖閲岋紝Spring浼?xì)鍒ゆ柇浣犵殑璇锋眰鏂规硶閲岄潰绗笁涓弬鏁扮殑绫诲瀷銆傚鏋滅涓変釜鍙傛暟綾誨瀷涓嶆槸HttpSession錛屽氨璁や負(fù)鏄緇戝畾鐨刢ommand銆?/span>
if(method.getParameterTypes().length >= 3 &&
!method.getParameterTypes()[method.getParameterTypes().length - 1].equals(HttpSession.class))
{
聽(tīng) 聽(tīng) // 鏍規(guī)嵁綾誨瀷鍒╃敤鍙嶅皠浜х敓Command瀵硅薄
聽(tīng) 聽(tīng) Object command = newCommandObject(method.getParameterTypes()[method.getParameterTypes().length - 1]);
聽(tīng) 聽(tīng) params.add(command);
聽(tīng) 聽(tīng)// 緇戝畾command瀵硅薄
聽(tīng) 聽(tīng)bind(request, command);
}
// 鏈鍚庨氳繃鍙嶅皠鍘昏皟鐢ㄤ綘鐨勬柟娉曪紝涔熷氨鏄錛屽湪鎵ц浣犵殑鏂規(guī)硶鏃訛紝command宸?/span>
// 緇忓府浣犵粦瀹氬ソ鎷夛紝浣犵洿鎺ョ敤灝卞彲浠ヤ簡(jiǎn)銆偮?聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng) 聽(tīng)
return(ModelAndView) method.invoke(this.delegate, params.toArray(newObject[params.size()]));
}
浣跨敤妯℃澘瑙嗗浘
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"><value>/jsp</value></property>//鍓嶇紑
<property name="suffix"><value>.jsp</value></property>//鍚庣紑
</bean>

]]> - Spring浜嬪姟鍏稿瀷閰嶇疆鏂規(guī)硶http://www.tkk7.com/dragonofson/articles/53797.htmlDragonofsonDragonofsonMon, 19 Jun 2006 07:31:00 GMThttp://www.tkk7.com/dragonofson/articles/53797.htmlhttp://www.tkk7.com/dragonofson/comments/53797.htmlhttp://www.tkk7.com/dragonofson/articles/53797.html#Feedback0http://www.tkk7.com/dragonofson/comments/commentRss/53797.htmlhttp://www.tkk7.com/dragonofson/services/trackbacks/53797.htmlpublic interface CustomerDAO {
public void createCustomer(Customer customer);
}
public class HibernateCustomerDAO implements CustomerDAO {
private HibernateTemplate hibernateTemplate = null;
public void setSessionFactory(SessionFactory sessionFactory) {
this.hibernateTemplate = new HibernateTemplate(sessionFactory, false);
}
public void createCustomer(Customer customer) {
this.hibernateTemplate.save(customer);
}
}
閰嶇疆鏂囦歡錛?br />錛渂ean id="customerDAOTarget" class="test.usecase.HibernateCustomerDAO"錛?br />銆錛減roperty name="sessionFactory"錛烇紲ref bean="sessionFactory"/錛烇紲/property錛?br />錛?bean錛?br />
錛渂ean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"錛?br />銆錛減roperty name="sessionFactory"錛烇紲ref bean="sessionFactory"/錛烇紲/property錛?br />錛?bean錛?br />
錛渂ean id="customerDAO" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"錛?br />銆錛減roperty name="transactionManager"錛烇紲ref bean="transactionManager"/錛烇紲/property錛?br />銆錛減roperty name="target"錛烇紲ref bean="customerDAOTarget"/錛烇紲/property錛?br />銆錛減roperty name="transactionAttributes"錛?br />銆銆錛減rops錛?br />銆銆銆錛減rop key="create*"錛濸ROPAGATION_REQUIRED錛?prop錛?br />銆銆銆錛減rop key="*"錛濸ROPAGATION_REQUIRED錛?prop錛?br />銆銆錛?props錛?br />銆錛?property錛?br />錛?bean錛?br />涓婅堪Spring閰嶇疆鐗囨柇瀹氫箟浜?jiǎn)涓氬姟瀵硅薄HibernateCustomerDAO錛屽畠鍖呰9浜?jiǎn)Hibernate SessionFactory銆傛敞鎰忥紝榛樿鏃訛紝Spring涓畾涔夌殑JavaBean閮芥槸鍗曚緥鐨勶紝HibernateCustomerDAO涔熶笉渚嬪銆傝繖鎰忓懗錛氬涓嚎紼嬪彲鑳藉悓鏃舵墽琛宑reateCustomer()鏂規(guī)硶銆?br />
銆銆鍏舵錛岄厤緗簡(jiǎn)Hibernate浜嬪姟綆$悊鍣紝瀹冨寘瑁逛簡(jiǎn)鍚屼竴Hibernate SessionFactory瀹炰緥銆傚湪浜嬪姟綆$悊鍣ㄦ瘡嬈℃墽琛屾椂錛屽畠閮戒細(xì)瀹屾垚濡備笅鍑犱歡浜嬫儏銆傚叾涓錛屾鏌ibernate Session鏄惁緇戝畾鍒板綋鍓嶇嚎紼嬨傚鏋滃凡緇戝畾錛屽垯鐩存帴浣跨敤瀹冦傚鏋滆繕鏈粦瀹氾紝浜嬪姟綆$悊鍣ㄥ皢鍛婄煡Hibernate SessionFactory鍒涘緩鏂扮殑Session錛岀劧鍚庡皢鍒涘緩鐨凷ession緇戝畾鍒板綋鍓嶇嚎紼嬨傚叾浜岋紝濡傛灉褰撳墠娌℃湁澶勪簬媧誨姩鐨勪簨鍔★紝鍒欎簨鍔$鐞嗗櫒灝嗗惎鍔ㄦ柊鐨勪簨鍔★紝騫跺皢Session鍖呰9榪涙潵銆傚惁鍒欙紝鐩存帴鍙備笌鍒版椿鍔ㄤ簨鍔′腑銆?br />
銆銆鏁翠釜榪囩▼鏄氳繃浣跨敤Spring鎻愪緵鐨凾ransactionProxyFactoryBean瀹炵幇鐨勩傚綋鐒?dòng)灱寴q欐槸涓縐嶄互澹版槑鏂瑰紡瀹炵幇鐨勪簨鍔$鐞嗚繃紼嬨?TransactionProxyFactoryBean鑳藉涓轟笟鍔″璞″垱寤轟唬鐞嗗璞★紝浠庤岄氳繃浜嬪姟綆$悊鍣ㄧ鐞嗕簨鍔°傚綋姣忔閫氳繃浠g悊瀵硅薄璋冪敤createCustomer()鏂規(guī)硶鏃訛紝浜嬪姟綆$悊鍣ㄥ皢鏍規(guī)嵁浜嬪姟灞炴х鐞嗕簨鍔°傚綋鍓嶏紝Spring闄や簡(jiǎn)鎻愪緵HibernateTransactionManager浜嬪姟綆$悊鍣ㄥ錛岃繕?shù)负JDBC鏁版嵁婧愩丣DO銆乀opLink鎻愪緵浜?jiǎn)鐩稿簲鐨勪簨鍔〗帯鐞嗗櫒銆?br />
銆銆鍐嶆潵鐪嬬湅涓氬姟瀵硅薄鍚э紒褰撹皟鐢╟reateCustomer()鏂規(guī)硶鏃訛紝HibernateTemplate灝嗘煡鎵劇粦瀹氬埌褰撳墠綰跨▼鐨凥ibernate Session銆傜敱浜庝笂榪伴厤緗枃浠剁墖鏂紶鍏ュ埌HibernateTemplate鏋勫緩鍣ㄧ殑絎簩涓弬鏁頒負(fù)false錛屽洜姝ゅ鏋滄病鏈夌粦瀹欻ibernate Session錛屽垯灝嗘姏鍑烘湭鍙楁煡寮傚父銆傝繖瀵逛簬閭d簺鏈紜厤緗簨鍔$鐞嗗姛鑳界殑鍦哄拰鐗瑰埆鏈夌敤錛堟敞鎰忥紝浜嬪姟綆$悊鍣ㄥ緢閲嶈錛夈備竴鏃︿簨鍔$鐞嗛厤緗ソ鍚庯紝Hibernate Session灝嗙粦瀹氬埌褰撳墠綰跨▼錛屼粠鑰屽惎鍔ㄤ簨鍔°傝娉ㄦ剰錛孒ibernateTemplate涓嶄細(xì)鍘繪鏌ヤ簨鍔℃槸鍚︽縺媧伙紝涔熶笉浼?xì)鏄窘C哄湴鍚姩鎴栫粓姝簨鍔°備篃璇鋒敞鎰忥紝濡傛灉鍦ㄥ0鏄庣殑鏂規(guī)硶錛堜簨鍔″睘鎬т腑緇欏嚭鐨勶級(jí)涓姏鍑轟簡(jiǎn)鏈彈鏌ュ紓甯革紝鍒欏綋鍓嶆椿鍔ㄤ簨鍔″皢鍥炴粴銆?br />

]]> - Web涓璼pring閰嶇疆http://www.tkk7.com/dragonofson/articles/53779.htmlDragonofsonDragonofsonMon, 19 Jun 2006 06:44:00 GMThttp://www.tkk7.com/dragonofson/articles/53779.htmlhttp://www.tkk7.com/dragonofson/comments/53779.htmlhttp://www.tkk7.com/dragonofson/articles/53779.html#Feedback0http://www.tkk7.com/dragonofson/comments/commentRss/53779.htmlhttp://www.tkk7.com/dragonofson/services/trackbacks/53779.html
鐩戝惉鍣?br />聽(tīng)<listener>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <listener-class>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) org.springframework.web.context.ContextLoaderListener
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) </listener-class>
聽(tīng)聽(tīng)聽(tīng) </listener>
鍦╯ervlet涓婁笅鏂囬厤緗畇pring鐨勯厤緗枃浠?br />聽(tīng)<context-param>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <param-name>contextConfigLocation</param-name>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <param-value>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) /WEB-INF/config/hibernate/applicationContext-hibernate.xml
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) /WEB-INF/config/spring/applicationContext-spring.xml
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <!--/WEB-INF/config/spring/acegi-security-common.xml-->
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) </param-value>
聽(tīng)聽(tīng)聽(tīng) </context-param>
2.寰楀埌Spring Bean
聽(tīng)聽(tīng) public class test extends action
聽(tīng){
聽(tīng)聽(tīng) private static ApplicationContext ctx = null;
聽(tīng)聽(tīng) public Object getBean(String name)
聽(tīng)聽(tīng) if(ctx == null)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) return ctx.getBean(name);
聽(tīng)聽(tīng)聽(tīng) }
}

]]>
主站蜘蛛池模板:
美女视频黄频a免费|
麻豆91免费视频|
久久久久亚洲av无码专区喷水
|
ass亚洲**毛茸茸pics|
999zyz**站免费毛片|
国产成人亚洲综合|
青青青国产手机频在线免费观看|
亚洲人成日本在线观看|
亚洲AV日韩精品久久久久久|
国产成人免费ā片在线观看|
99久久免费观看|
最近最新高清免费中文字幕|
亚洲人成依人成综合网|
久久久无码精品亚洲日韩软件|
成人毛片免费在线观看|
国产亚洲综合久久系列|
免费看的黄色大片|
最近2019中文字幕mv免费看
|
最新亚洲人成网站在线观看|
亚洲AV无码国产丝袜在线观看|
亚洲国产精品毛片av不卡在线
|
免费国产在线视频|
亚洲欧洲日韩国产一区二区三区|
最近免费中文字幕大全视频|
亚洲av无码片在线播放|
国产视频精品免费视频|
国产免费人成视频在线播放播|
四虎www免费人成|
亚洲AⅤ优女AV综合久久久|
久久久久亚洲精品无码蜜桃|
午夜精品一区二区三区免费视频
|
国产精成人品日日拍夜夜免费|
国产精品1024永久免费视频|
亚洲欧洲另类春色校园网站|
亚洲乱码卡三乱码新区|
免费精品久久天干天干|
国产精品无码一区二区三区免费|
直接进入免费看黄的网站|
男女一边桶一边摸一边脱视频免费
|
三级黄色片免费看|
青青青国产色视频在线观看国产亚洲欧洲国产综合|