锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲尹人九九大色香蕉网站 ,亚洲 暴爽 AV人人爽日日碰,青青草原精品国产亚洲avhttp://www.tkk7.com/huamengxing/category/25304.html涓撴敞浜巎avazh-cnSat, 19 Jan 2008 04:58:59 GMTSat, 19 Jan 2008 04:58:59 GMT60c3p0 + spring 閰嶇疆http://www.tkk7.com/huamengxing/archive/2008/01/18/176315.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Fri, 18 Jan 2008 11:47:00 GMThttp://www.tkk7.com/huamengxing/archive/2008/01/18/176315.htmlhttp://www.tkk7.com/huamengxing/comments/176315.htmlhttp://www.tkk7.com/huamengxing/archive/2008/01/18/176315.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/176315.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/176315.html寰堝浜洪兘璁や負姣擠BCP浼樼銆?br />
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
聽聽聽聽聽 <property name="driverClass">
聽聽聽聽聽聽聽 <value>${jdbc.driverClassName}</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="jdbcUrl">
聽聽聽聽聽聽聽 <value>${jdbc.url}</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="user">
聽聽聽聽聽 聽<value>${jdbc.username}</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="password">
聽聽聽聽聽 聽<value>${jdbc.password}</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="initialPoolSize"><value>10</value></property>
聽聽聽聽聽 <property name="minPoolSize"><value>5</value></property>
聽聽聽聽聽 <property name="maxPoolSize"><value>30</value></property>
聽聽聽聽聽 <property name="acquireIncrement"><value>5</value></property>
聽聽聽聽聽 <property name="maxIdleTime"><value>10</value></property>
聽聽聽聽聽 <property name="maxStatements"><value>0</value></property>
聽聽聽 </bean>

浠ヤ笅鍑犱釜鍙傛暟鏄嬌鐢ㄧ殑鍩烘湰閰嶇疆鍙傛暟錛?br />initialPoolSize錛?
Number of Connections a pool will try to acquire upon startup. Should be between minPoolSize and maxPoolSize
榪炴帴姹犲垵濮嬪寲鏃惰幏鍙栫殑閾炬帴鏁幫紝浠嬩簬minPoolSize鍜宮axPoolSize涔嬮棿

minPoolSize錛?br />Minimum number of Connections a pool will maintain at any given time.
鏈灝忛摼鎺ユ暟

maxPoolSize錛?br />Maximum number of Connections a pool will maintain at any given time.
鏈澶ц繛鎺ユ暟

acquireIncrement錛?br />Determines how many connections at a time c3p0 will try to acquire when the pool is exhausted.
鍦ㄥ綋鍓嶈繛鎺ユ暟鑰楀敖鐨勬椂鍊欙紝涓嬈¤幏鍙栫殑鏂扮殑榪炴帴鏁?br />
maxIdleTime錛?br />Seconds a Connection can remain pooled but unused before being discarded. Zero means idle connections never expire.
鏈澶х┖闂茬殑鏃墮棿錛屽崟浣嶆槸縐掞紝鏃犵敤鐨勯摼鎺ュ啀榪囨椂鍚庝細琚洖鏀?br />

]]>
Acegi瀹夊叏緋葷粺璇﹁Вhttp://www.tkk7.com/huamengxing/archive/2008/01/14/175290.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Mon, 14 Jan 2008 12:19:00 GMThttp://www.tkk7.com/huamengxing/archive/2008/01/14/175290.htmlhttp://www.tkk7.com/huamengxing/comments/175290.htmlhttp://www.tkk7.com/huamengxing/archive/2008/01/14/175290.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/175290.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/175290.html闃呰鍏ㄦ枃

]]>
Spring 寮傚父鎺у埗http://www.tkk7.com/huamengxing/archive/2007/09/13/144781.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Thu, 13 Sep 2007 03:23:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/13/144781.htmlhttp://www.tkk7.com/huamengxing/comments/144781.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/13/144781.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/144781.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/144781.html寮傚父鎺у埗

聽聽Author: 姹熷崡鐧借。

1.涓氬姟寮傚父綾?/h2>

聽聽聽聽聽 1.鎵浠ヤ笟鍔″紓甯哥被媧劇敓浜嶣usinessException鍩虹被銆?/p>

聽聽聽聽聽 2.鍘熷垯涓婏紝瑕佽繘琛岀浉鍚屽鐞嗙殑寮傚父鍒嗕負涓綾伙紝鐢‥RROR_CODE鏍囪瘑涓嶅悓銆?/p>

聽聽聽聽聽 3.鍑洪敊淇℃伅緇熶竴鍐欏湪errors.properties錛屼互ERROR_CODE涓轟富閿紝鏀寔i18N錛岀敱鍩虹被鎻愪緵榛樿鐨刧etMessage()鍑芥暟銆?/p>

聽聽聽聽聽 鍙傝傿ussinessException.java鍜孫rderException.java銆?/p>

2.Servlet瑙勮寖閲岀殑寮傚父鎺у埗

聽2.1鎸塭rror-code緇熶竴瀹氫箟閿欒欏甸潰

<error-page>
聽 <error-code>404</error-code>
聽 <location>/404.jsp</location>
</error-page>
<error-page>
聽 <error-code>500</error-code>
聽 <location>/error.jsp</location>
</error-page>

2.2鎸夊紓甯哥被鍨嬪畾涔夊崟鐙敊璇〉闈?/h3>
<error-page>
聽 <exception-type>org.sprngside.bookstore.UserNotFound</exception-type>
聽 <location>/userNotFound.jsp</location>
</error-page>

2.3 鍦↗SP閲屽崟鐙畾涔夐敊璇〉闈?/h3>
<@ errorPage="error.jsp">

3.Spring MVC閲岀殑寮傚父鎺у埗

聽聽 spring-mvc鍙湪xxx-serverlet.xml閲屽畾涔塪efault鍜?鎸塃xcepiton綾誨瀷褰卞皠鐨勯敊璇〉闈? 鍜孲ervlet瑙勮寖姣?涓昏浣滀簡Spring鐗硅壊鐨凧SP璺緞杞悜鍜屾棩蹇楄褰?鍙傝bookstore-servlet.xml

  <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
聽聽聽聽聽聽聽 <property name="defaultErrorView" value="/error.jsp"/>
聽聽聽聽聽聽聽 <property name="exceptionMappings">
聽聽聽聽聽聽聽聽聽聽聽 <props>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <prop key="org.springside.framework.base.BusinessException">/businessError.jsp</prop>
聽聽聽聽聽聽聽聽聽聽聽 </props>
聽聽聽聽聽聽聽 </property>
聽聽聽 </bean>

4. error.jsp鐨勫鐞?/h2>

聽聽聽聽聽聽聽聽 error.jsp浼氬悓鏃跺鐞唈sp,servlet,鍜宻pring鎶涜繃鏉ョ殑寮傚父

聽聽聽聽聽聽聽聽 鍏朵腑jsp鐨勫紓甯稿湪exception 鍙橀噺涓?

聽聽聽聽聽聽聽聽 servlet鐨勫紓甯稿湪(Exception)request.getAttribute("javax.servlet.error.exception")

聽聽聽聽聽聽聽聽 spring鐨勫紓甯稿湪(Exception) request.getAttribute("exception")

聽聽聽聽聽聽聽聽 浣跨敤 (String) request.getAttribute("javax.servlet.error.request_uri")鑾峰緱 request_uri
聽聽聽聽聽聽聽聽聽浣跨敤 logger.error(exception.getMessage(), exception); 璁板綍鏁翠釜寮傚父鏍?/p>

]]>FilterChainProxy 璇﹁Вhttp://www.tkk7.com/huamengxing/archive/2007/09/12/144528.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Wed, 12 Sep 2007 08:20:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/12/144528.htmlhttp://www.tkk7.com/huamengxing/comments/144528.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/12/144528.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/144528.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/144528.htmlFilterChainProxy
java.lang.Objectextended by org.acegisecurity.util.FilterChainProxy
All Implemented Interfaces:
Filter, InitializingBean, ApplicationContextAware

public class FilterChainProxy
extends Object
implements Filter, InitializingBean, ApplicationContextAware

Delegates Filter requests to a list of Spring-managed beans.

閫氳繃涓緋誨垪鐨勭敱spring鎵樼鐨刡eans 錛屼唬鐞嗚繃婊よ姹傘?br />FilterChainProxy 閫氳繃鍦╳eb.xml涓畾涔夌殑FilterToBeanProxy 琚姞杞斤紝FilterChainProxy 灝嗕細閫氳繃init(FilterConfig), destroy() and doFilter(ServletRequest, ServletResponse, FilterChain)璋冪敤錛岃皟鐢ㄦ瘡涓涓湪鍏朵腑瀹氫箟鐨勮繃婊ゅ櫒銆?br />
The FilterChainProxy is loaded via a standard FilterToBeanProxy declaration in web.xml. FilterChainProxy will then pass init(FilterConfig), destroy() and doFilter(ServletRequest, ServletResponse, FilterChain) invocations through to each Filter defined against FilterChainProxy.


聽聽聽 FilterChainProxy聽 鏄氳繃涓涓爣鍑嗙殑FilterInvocationDefinitionSource 鏉ュ疄鐜伴厤緗殑錛屾瘡涓彲鑳界殑FilterChainProxy搴旇鏈嶅姟鐨刄RI妯″紡閮藉繀欏昏繘鍏?br />聽聽聽聽聽聽聽聽聽聽聽 絎竴涓惌閰嶇殑URI妯″紡灝嗕細琚敤鏉ュ畾涔夊鐞嗚姹傜殑鎵鏈夌殑榪囨護鍣紝灝辨槸璇村彧閫傞厤絎竴緇勮繃婊ゅ櫒錛屽悗闈㈢殑鍏朵粬榪囨護鍣ㄥ皢鏃犳晥銆?br />FilterChainProxy
is configured using a standard FilterInvocationDefinitionSource. Each possible URI pattern that FilterChainProxy should service must be entered. The first matching URI pattern located by FilterInvocationDefinitionSource for a given request will be used to define all of the Filters that apply to that request. NB: This means you must put most specific URI patterns at the top of the list, and ensure all Filters that should apply for a given URI pattern are entered against the respective entry. The FilterChainProxy will not iterate the remainder of the URI patterns to locate additional Filters. The FilterInvocationDefinitionSource described the applicable URI pattern to fire the filter chain, followed by a list of configuration attributes. Each configuration attribute's ConfigAttribute.getAttribute() corresponds to a bean name that is available from the application context.

FilterChainProxy respects normal handling of Filters that elect not to call Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain), in that the remainder of the origial or FilterChainProxy-declared filter chain will not be called.

It is particularly noted the Filter lifecycle mismatch between the servlet container and IoC container. As per FilterToBeanProxy JavaDocs, we recommend you allow the IoC container to manage lifecycle instead of the servlet container. By default the FilterToBeanProxy will never call this class' init(FilterConfig) and destroy() methods, meaning each of the filters defined against FilterInvocationDefinitionSource will not be called. If you do need your filters to be initialized and destroyed, please set the lifecycle initialization parameter against the FilterToBeanProxy to specify servlet container lifecycle management.

If a filter name of TOKEN_NONE is used, this allows specification of a filter pattern which should never cause any filters to fire.



]]>
涓 Acegi瀹夊叏緋葷粺浠嬬粛 (1)http://www.tkk7.com/huamengxing/archive/2007/09/12/144482.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Wed, 12 Sep 2007 06:42:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/12/144482.htmlhttp://www.tkk7.com/huamengxing/comments/144482.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/12/144482.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/144482.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/144482.html涓聽Acegi瀹夊叏緋葷粺浠嬬粛聽

聽聽聽 Author: cac 宸矙

聽聽聽 Acegi鏄疭pring Framework 涓嬫渶鎴愮啛鐨勫畨鍏ㄧ郴緇燂紝瀹冩彁渚涗簡寮哄ぇ鐏墊椿鐨勪紒涓氱駭瀹夊叏鏈嶅姟錛屽瀹屽杽鐨勮璇佸拰鎺堟潈鏈哄埗錛孒ttp璧勬簮璁塊棶鎺у埗錛孧ethod 璋冪敤璁塊棶鎺у埗錛孉ccess Control List (ACL) 鍩轟簬瀵硅薄瀹炰緥鐨勮闂帶鍒訛紝Yale Central Authentication Service (CAS) 鑰墮瞾鍗曠偣鐧婚檰錛孹509 璁よ瘉錛屽綋鍓嶆墍鏈夋祦琛屽鍣ㄧ殑璁よ瘉閫傞厤鍣紝Channel Security棰戦亾瀹夊叏綆$悊絳夊姛鑳姐?/p>

1.1 緗戠珯璧勬簮

瀹樻柟緗戠珯聽聽聽聽 聽http://acegisecurity.sourceforge.net
璁哄潧聽聽聽聽聽聽聽聽聽聽聽 http://forum.springframework.org/forumdisplay.php?f=33
Jira聽聽聽聽聽聽聽聽聽聽聽聽聽 http://opensource.atlassian.com/projects/spring/browse/SEC

1.2 澶氭柟闈㈢殑瀹夊叏鎺у埗綺掑害

  1. URL 璧勬簮璁塊棶鎺у埗
    聽http://apps:8080/index.htm -> for public
    聽http://apps:8080/user.htm -> for authorized user
  2. 鏂規硶璋冪敤璁塊棶鎺у埗
    public void getData() -> all user
    public void modifyData() -> supervisor only
  3. 瀵硅薄瀹炰緥淇濇姢
    order.getValue() < $100 -> all user
    order.getValue() > $100 -> supervisor only

1.3 闈炲叆渚靛紡瀹夊叏鏋舵瀯

  1. 鍩轟簬Servlet Filter鍜孲pring aop,聽 浣垮晢涓氶昏緫鍜屽畨鍏ㄩ昏緫鍒嗗紑錛岀粨鏋勬洿娓呮櫚
  2. 浣跨敤Spring 鏉ヤ唬鐞嗗璞★紝鑳芥柟渚垮湴淇濇姢鏂規硶璋冪敤

1.4 鍏跺畠瀹夊叏鏋舵瀯

聽聽聽 Acegi鍙槸瀹夊叏妗嗘灦涔嬩竴錛屽叾瀹炶繕瀛樺湪鍏跺畠浼樼鐨勫畨鍏ㄦ鏋跺彲渚涢夋嫨錛?/p>



]]>
Acegihttp://www.tkk7.com/huamengxing/archive/2007/09/12/144479.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Wed, 12 Sep 2007 06:39:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/12/144479.htmlhttp://www.tkk7.com/huamengxing/comments/144479.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/12/144479.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/144479.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/144479.htmlhttp://wiki.springside.org.cn/display/springside/Acegi+Reference


http://www.springside.org.cn/docs/reference/Acegi2.htm

http://www.springside.org.cn/docs/reference/Acegi3.htm


http://www.springside.org.cn/docs/reference/Acegi4.htm
http://www.springside.org.cn/docs/reference/Acegi5.htm
http://www.springside.org.cn/docs/reference/Acegi6.htm


]]>
MainTestForJdbcTemplatehttp://www.tkk7.com/huamengxing/archive/2007/09/11/144191.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Tue, 11 Sep 2007 03:22:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/11/144191.htmlhttp://www.tkk7.com/huamengxing/comments/144191.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/11/144191.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/144191.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/144191.htmlpackage org.springframework.samples;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.generic.GenericBeanFactoryAccessor;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.ColumnMapRowMapper;
import org.springframework.jdbc.core.ConnectionCallback;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowCountCallbackHandler;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.StatementCallback;
import org.springframework.jdbc.support.JdbcUtils;
import org.springframework.samples.petclinic.Person;

/**
聽*
聽* @author worldheart
聽*
聽*/
public class MainTestForJdbcTemplate {

聽private static final Log log = LogFactory.getLog(MainTestForJdbcTemplate.class);

聽public static void main(String[] args) {聽聽
聽聽ListableBeanFactory cbf = new ClassPathXmlApplicationContext("ac1.xml");聽聽
聽聽GenericBeanFactoryAccessor gbfa = new GenericBeanFactoryAccessor(cbf);
聽聽
聽聽JdbcTemplate jt = gbfa.getBean("jdbcTemplate");
聽聽
聽聽jt.execute(new ConnectionCallback(){
聽聽聽public Object doInConnection(Connection con) throws SQLException, DataAccessException {
聽聽聽聽System.out.println(con.getMetaData().getDriverName());
聽聽聽聽return null;
聽聽聽}
聽聽});
聽聽
聽聽List nameList = (List)jt.execute(new StatementCallback(){
聽聽聽public Object doInStatement(Statement stmt) throws SQLException, DataAccessException {
聽聽聽聽System.out.println(stmt.getConnection().getMetaData().getDatabaseProductVersion());
聽聽聽聽List<String> nameList = new ArrayList<String>();
聽聽聽聽ResultSet rs = null;
聽聽聽聽try{
聽聽聽聽聽rs = stmt.executeQuery("select name from types");
聽聽聽聽聽while(rs.next()){
聽聽聽聽聽聽nameList.add(rs.getString("name"));
聽聽聽聽聽}
聽聽聽聽}finally{
聽聽聽聽聽JdbcUtils.closeResultSet(rs);
聽聽聽聽}
聽聽聽聽return nameList;
聽聽聽}
聽聽});
聽聽System.out.println(nameList);
聽聽
聽聽List perList = (List)jt.query("select * from vets",
聽聽聽聽new ResultSetExtractor(){
聽聽聽聽聽聽public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
聽聽聽聽聽聽聽List<Person> personList = new ArrayList<Person>();
聽聽聽聽聽聽聽while(rs.next()){
聽聽聽聽聽聽聽聽Person per = new Person();
聽聽聽聽聽聽聽聽per.setId(rs.getInt("id"));
聽聽聽聽聽聽聽聽per.setFirstName(rs.getString("first_name"));
聽聽聽聽聽聽聽聽per.setLastName(rs.getString("last_name"));
聽聽聽聽聽聽聽聽personList.add(per);
聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽return personList;
聽聽聽聽}
聽聽});
聽聽for(Iterator iterator = perList.iterator(); iterator.hasNext();){
聽聽聽Person person = (Person)iterator.next();
聽聽聽System.out.println(person.getId() + "," + person.getFirstName() + "," + person.getLastName());
聽聽}

聽聽final List<Person> pSonList = new ArrayList<Person>();
聽聽jt.query("select * from vets", new RowCallbackHandler(){
聽聽聽public void processRow(ResultSet rs) throws SQLException {
聽聽聽聽Person per = new Person();
聽聽聽聽per.setId(rs.getInt("id"));
聽聽聽聽per.setFirstName(rs.getString("first_name"));
聽聽聽聽per.setLastName(rs.getString("last_name"));
聽聽聽聽pSonList.add(per);
聽聽聽}
聽聽});
聽聽for(Person pSon: pSonList){
聽聽聽System.out.println(pSon.getId() + "," + pSon.getFirstName() + "," + pSon.getLastName());
聽聽}
聽聽
聽聽RowCountCallbackHandler rcch = new RowCountCallbackHandler();
聽聽jt.query("select * from vets", rcch);
聽聽for(String colName: rcch.getColumnNames())
聽聽聽System.out.println(colName);
聽聽for(int colType: rcch.getColumnTypes())
聽聽聽System.out.println(colType);
聽聽System.out.println(rcch.getColumnCount());
聽聽System.out.println(rcch.getRowCount());
聽聽
聽聽List vetsList = (List)jt.query("select * from vets",
聽聽聽聽new RowMapper(){
聽聽聽聽聽public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
聽聽聽聽聽聽Person pers = new Person();
聽聽聽聽聽聽pers.setId(rs.getInt("id"));
聽聽聽聽聽聽pers.setFirstName(rs.getString("first_name"));
聽聽聽聽聽聽pers.setLastName(rs.getString("last_name"));
聽聽聽聽聽聽return pers;
聽聽聽聽聽}
聽聽});
聽聽System.out.println(vetsList);
聽聽
聽聽ColumnMapRowMapper cmrw = new ColumnMapRowMapper();
聽聽List vList = (List)jt.query("select * from vets", cmrw);
聽聽System.out.println(vList);
聽聽
聽聽System.out.println(jt.queryForInt("select count(*) from vets where id = ?",
聽聽聽聽new Object[]{3}));
聽聽聽聽聽聽
聽聽jt.execute("update owners set address = 'GuangZhou' where telephone = ?",
聽聽聽聽new PreparedStatementCallback(){
聽聽聽聽聽public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
聽聽聽聽聽聽ps.setString(1, "16068008");
聽聽聽聽聽聽ps.addBatch();
聽聽聽聽聽聽ps.setString(1, "6085555487");
聽聽聽聽聽聽ps.addBatch();
聽聽聽聽聽聽return ps.executeBatch();
聽聽聽聽聽}
聽聽});
聽聽
聽聽System.out.println(jt.query("select address from owners where first_name = ? and last_name = ?",
聽聽聽聽new PreparedStatementSetter(){
聽聽聽聽聽public void setValues(PreparedStatement ps) throws SQLException {
聽聽聽聽聽聽ps.setString(1, "Jeff");
聽聽聽聽聽聽ps.setString(2, "Black");
聽聽聽聽聽}
聽聽聽聽},
聽聽聽聽new RowMapper(){
聽聽聽聽聽public Object mapRow(ResultSet rs, int rowNum) throws SQLException {聽聽聽聽聽聽
聽聽聽聽聽聽return rs.getString("address");
聽聽聽聽聽}
聽聽聽聽}));
聽聽
聽聽System.out.println(jt.execute(
聽聽聽聽new PreparedStatementCreator(){
聽聽聽聽聽public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
聽聽聽聽聽聽return con.prepareStatement("select address from owners");
聽聽聽聽聽}
聽聽聽聽},
聽聽聽聽new PreparedStatementCallback(){
聽聽聽聽聽public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
聽聽聽聽聽聽List<String> list = new ArrayList<String>();
聽聽聽聽聽聽ResultSet rs = null;
聽聽聽聽聽聽try{
聽聽聽聽聽聽聽rs = ps.executeQuery();
聽聽聽聽聽聽聽while(rs.next()){
聽聽聽聽聽聽聽聽list.add(rs.getString("address"));
聽聽聽聽聽聽聽}
聽聽聽聽聽聽}finally{
聽聽聽聽聽聽聽JdbcUtils.closeResultSet(rs);
聽聽聽聽聽聽}
聽聽聽聽聽聽return list;
聽聽聽聽聽}
聽聽聽聽}));
聽聽
聽}

}



]]>
BindStatus APIhttp://www.tkk7.com/huamengxing/archive/2007/09/11/144186.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Tue, 11 Sep 2007 03:00:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/11/144186.htmlhttp://www.tkk7.com/huamengxing/comments/144186.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/11/144186.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/144186.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/144186.html
public class BindStatus
extends Object
		

Simple adapter to expose the bind status of a field or object. Set as a variable both by the JSP bind tag and Velocity/FreeMarker macros.

聽 綆鍗曠殑閫傞厤鍣ㄨ幏鍙栧煙鎴栬呮槸瀵硅薄緇戝畾鐘舵侊紝 鍚屾牱閫傜敤浜庢ā鏉褲?br />Obviously, object status representations (i.e. errors at the object level rather than the field level) do not have an expression and a value but only error codes and messages. For simplicity's sake and to be able to use the same tags and macros, the same status class is used for both scenarios.
鏄劇劧錛屽璞$殑鐘舵佽〃紺猴紙渚嬪閿欒鏄璞$駭鐨勮屼笉鏄煙綰у埆鐨勶級娌℃湁琛ㄨ揪寮忔垨鑰呭鹼紝鑰屾槸鍙湁閿欒鐮佸拰娑堟伅

Method Summary
聽int doEndTag ()
聽聽聽聽聽聽聽聽聽聽聽
聽void doFinally ()
聽聽聽聽聽聽聽聽聽聽聽
protected 聽int doStartTagInternal ()
聽聽聽聽聽聽聽聽聽聽Called by doStartTag to perform the actual work.
PropertyEditor getEditor ()
聽聽聽聽聽聽聽聽聽聽Retrieve the PropertyEditor for the property that this tag is currently bound to.
Errors getErrors ()
聽聽聽聽聽聽聽聽聽聽Retrieve the Errors instance that this tag is currently bound to.
String getPath ()
聽聽聽聽聽聽聽聽聽聽Return the path that this tag applies to.
String getProperty ()
聽聽聽聽聽聽聽聽聽聽Retrieve the property that this tag is currently bound to, or null if bound to an object rather than a specific property.
聽boolean isIgnoreNestedPath ()
聽聽聽聽聽聽聽聽聽聽Return whether to ignore a nested path, if any.
聽void setIgnoreNestedPath (boolean聽ignoreNestedPath)
聽聽聽聽聽聽聽聽聽聽Set whether to ignore a nested path, if any.
聽void setPath (String聽path)
聽聽聽聽聽聽聽聽聽聽Set the path that this tag should apply.


]]>
RowCountCallbackHandler 鍥炶皟http://www.tkk7.com/huamengxing/archive/2007/09/10/143935.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Mon, 10 Sep 2007 03:35:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/10/143935.htmlhttp://www.tkk7.com/huamengxing/comments/143935.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/10/143935.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/143935.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/143935.html聽聽jt.query("select * from vets", rcch);
聽聽for(String colName: rcch.getColumnNames())
聽聽聽System.out.println(colName);
聽聽for(int colType: rcch.getColumnTypes())
聽聽聽System.out.println(colType);
聽聽System.out.println(rcch.getColumnCount());
聽聽System.out.println(rcch.getRowCount());

]]>
鎵璋撳洖璋?/title><link>http://www.tkk7.com/huamengxing/archive/2007/09/10/143926.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Mon, 10 Sep 2007 03:16:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/09/10/143926.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/143926.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/09/10/143926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/143926.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/143926.html</trackback:ping><description><![CDATA[ <p>鎵璋撶殑鍥炶皟灝辨槸鍦ㄦ墽琛宻tatement A榪囩▼涓紝鐢ㄥ埌浜唖tatement B錛岄偅涔堝厛淇濆瓨浠ュ墠鐨勬墽琛屼俊鎭紝姝ゆ椂statement聽B 鍙互浣跨敤Statement A 鐨勫唴瀹癸紝鐒跺悗鍐嶆墽琛?Statement B錛?Statement B鎵ц瀹屾瘯鍚庯紝榪斿洖鐨勭粨鏋滐紝鍙互琚玈tatement A 鍒╃敤錛岀劧鍚庣戶緇墽琛宻tatementA銆傝繖灝辨槸浼犺涓洖璋?/p> <img src ="http://www.tkk7.com/huamengxing/aggbug/143926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-09-10 11:16 <a href="http://www.tkk7.com/huamengxing/archive/2007/09/10/143926.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> PreparedStatementCallback PreparedStatement鍥炶皟鎺ュ彛瀹氫箟銆?/title><link>http://www.tkk7.com/huamengxing/archive/2007/09/10/143921.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Mon, 10 Sep 2007 03:10:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/09/10/143921.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/143921.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/09/10/143921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/143921.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/143921.html</trackback:ping><description><![CDATA[jt.execute("update owners set address = 'GuangZhou' where telephone = ?", <br />聽聽聽聽new PreparedStatementCallback(){<br />聽聽聽聽聽public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {<br />聽聽聽聽聽聽ps.setString(1, "16068008");<br />聽聽聽聽聽聽ps.addBatch();<br />聽聽聽聽聽聽ps.setString(1, "6085555487");<br />聽聽聽聽聽聽ps.addBatch();<br />聽聽聽聽聽聽return ps.executeBatch();<br />聽聽聽聽聽}<br />聽聽});<br /><ol><li><p><i><font color="#339900">/**</font></i></p><br /></li><li><i><font color="#339900"> * Copyright: Copyright (c) 2005-2005</font></i><br /></li><li><i><font color="#339900"> * Company: JavaResearch(http://www.javaresearch.org)</font></i><br /></li><li><i><font color="#339900"> */</font></i><br /></li><li><b><font color="#0000ff">package</font></b> org.javaresearch.jerch;<br /></li><li><br /></li><li><b><font color="#0000ff">import</font></b> java.sql.<b><a ><font color="#ff0000"><u>PreparedStatement</u></font></a></b>;<br /></li><li><b><font color="#0000ff">import</font></b> java.sql.<b><a ><font color="#ff0000"><u>SQLException</u></font></a></b>;<br /></li><li><br /></li><li><i><font color="#339900">/**</font></i><br /></li><li><i><font color="#339900"> * PreparedStatement鍥炶皟鎺ュ彛瀹氫箟銆?/font></i><br /></li><li><i><font color="#339900"> * 鏈鍚庢洿鏂版棩鏈?2005騫?鏈?8鏃?/font></i><br /></li><li><i><font color="#339900"> * @author cherami</font></i><br /></li><li><i><font color="#339900"> */</font></i><br /></li><li><b><font color="#0000ff">public</font></b><b><font color="#0000ff">interface</font></b><a ><font color="#ff0000"><u>PreparedStatementCallback</u></font></a> {<br /></li><li>聽 <i><font color="#339900">/**</font></i><br /></li><li><i><font color="#339900">聽聽 * 瀹氫箟PreparedStatement涓殑鎵ц鍐呭銆?</font></i><br /></li><li><i><font color="#339900">聽聽 * 鎵ц鍓峆reparedStatement鐨勫弬鏁扮瓑鍐呭閮藉凡緇忚緗ソ浜嗐?/font></i><br /></li><li><i><font color="#339900">聽聽 * @param stmt PreparedStatement</font></i><br /></li><li><i><font color="#339900">聽聽 * @return 鎵ц鐨勭粨鏋?/font></i><br /></li><li><i><font color="#339900">聽聽 * @throws SQLException</font></i><br /></li><li><i><font color="#339900">聽聽 */</font></i><br /></li><li>聽 <b><font color="#0000ff">public</font></b><b><a ><font color="#ff0000"><u>Object</u></font></a></b> doInPreparedStatement(<b><a ><font color="#ff0000"><u>PreparedStatement</u></font></a></b> stmt) <b><font color="#0000ff">throws</font></b><b><a ><font color="#ff0000"><u>SQLException</u></font></a></b>;<br /></li><li>}</li></ol><img src ="http://www.tkk7.com/huamengxing/aggbug/143921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-09-10 11:10 <a href="http://www.tkk7.com/huamengxing/archive/2007/09/10/143921.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍙朢esultSet涓殑鍏ㄩ儴鏁版嵁鐨勬帴鍙e畾涔夈?/title><link>http://www.tkk7.com/huamengxing/archive/2007/09/10/143916.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Mon, 10 Sep 2007 03:05:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/09/10/143916.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/143916.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/09/10/143916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/143916.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/143916.html</trackback:ping><description><![CDATA[ <ol> <li> <i> <font color="#339900">/**</font> </i> <br /> </li> <li> <i> <font color="#339900"> * Copyright: Copyright (c) 2005-2005</font> </i> <br /> </li> <li> <i> <font color="#339900"> * Company: JavaResearch(http://www.javaresearch.org)</font> </i> <br /> </li> <li> <i> <font color="#339900"> */</font> </i> <br /> </li> <li> <b> <font color="#0000ff">package</font> </b> org.javaresearch.jerch;<br /></li> <li> <br /> </li> <li> <b> <font color="#0000ff">import</font> </b> java.sql.<b><a ><font color="#ff0000"><u>ResultSet</u></font></a></b>;<br /></li> <li> <b> <font color="#0000ff">import</font> </b> java.sql.<b><a ><font color="#ff0000"><u>SQLException</u></font></a></b>;<br /></li> <li> <br /> </li> <li> <i> <font color="#339900">/**</font> </i> <br /> </li> <li> <i> <font color="#339900"> * 鎻愬彇ResultSet涓殑鍏ㄩ儴鏁版嵁鐨勬帴鍙e畾涔夈?/font> </i> <br /> </li> <li> <i> <font color="#339900"> * 鏈鍚庢洿鏂版棩鏈?2005騫?鏈?8鏃?/font> </i> <br /> </li> <li> <i> <font color="#339900"> * @author cherami</font> </i> <br /> </li> <li> <i> <font color="#339900"> */</font> </i> <br /> </li> <li> <b> <font color="#0000ff">public</font> </b> <b> <font color="#0000ff">interface</font> </b> <a > <font color="#ff0000"> <u>ResultSetExtractor</u> </font> </a> {<br /></li> <li>聽 <i><font color="#339900">/**</font></i><br /></li> <li> <i> <font color="#339900">聽聽 * 鎻愬彇ResultSet涓殑鍏ㄩ儴鏁版嵁銆?/font> </i> <br /> </li> <li> <i> <font color="#339900">聽聽 * @param rs ResultSet</font> </i> <br /> </li> <li> <i> <font color="#339900">聽聽 * @return ResultSet涓殑鍏ㄩ儴鏁版嵁</font> </i> <br /> </li> <li> <i> <font color="#339900">聽聽 * @throws SQLException</font> </i> <br /> </li> <li> <i> <font color="#339900">聽聽 */</font> </i> <br /> </li> <li>聽 <b><font color="#0000ff">public</font></b><b><a ><font color="#ff0000"><u>Object</u></font></a></b> extractSet(<b><a ><font color="#ff0000"><u>ResultSet</u></font></a></b> rs) <b><font color="#0000ff">throws</font></b><b><a ><font color="#ff0000"><u>SQLException</u></font></a></b>;<br /></li> <li>}<br /></li> </ol> <p>List perList = (List)jt.query("select * from vets", <br />聽聽聽聽new ResultSetExtractor(){<br />聽聽聽聽聽聽public Object extractData(ResultSet rs) throws SQLException, DataAccessException {<br />聽聽聽聽聽聽聽List<Person> personList = new ArrayList<Person>();<br />聽聽聽聽聽聽聽while(rs.next()){<br />聽聽聽聽聽聽聽聽Person per = new Person();<br />聽聽聽聽聽聽聽聽per.setId(rs.getInt("id"));<br />聽聽聽聽聽聽聽聽per.setFirstName(rs.getString("first_name"));<br />聽聽聽聽聽聽聽聽per.setLastName(rs.getString("last_name"));<br />聽聽聽聽聽聽聽聽personList.add(per);<br />聽聽聽聽聽聽聽}<br />聽聽聽聽聽聽聽return personList;<br />聽聽聽聽}<br />聽聽});</p> <img src ="http://www.tkk7.com/huamengxing/aggbug/143916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-09-10 11:05 <a href="http://www.tkk7.com/huamengxing/archive/2007/09/10/143916.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>interface Mappable http://www.tkk7.com/huamengxing/archive/2007/09/10/143915.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Mon, 10 Sep 2007 03:00:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/10/143915.htmlhttp://www.tkk7.com/huamengxing/comments/143915.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/10/143915.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/143915.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/143915.html
  • public interface Mappable {


  • /**
  • 聽聽 * 寰楀埌瀛楁瀵瑰簲鐨勫~鍏呮柟娉曠殑鏂規硶鍚嶃?/font>
  • 聽聽 * @param fieldName 鏁版嵁搴撹〃鐨勫瓧孌靛悕
  • 聽聽 * @return 榪涜濉厖鐨勬柟娉曞悕銆?/font>
  • 聽聽 */
  • publicString getMapMethod(String fieldName);
  • /**
  • 聽聽 * 寰楀埌瀛楁瀵瑰簲鐨勫~鍏呮柟娉曠殑鍙傛暟綾誨瀷銆?/font>
  • 聽聽 * 鏁版嵁搴撹繑鍥炵殑鍊肩殑綾誨瀷鍜孞ava涓殑鍙兘涓嶆槸鍖歸厤鐨勶紝鎴栬匤avaBean涓嚜宸卞畾涔変負鍘熷綾誨瀷浜嗭紝鍥犳闇瑕佹寚瀹氥?/font>
  • 聽聽 * @param fieldName 鏁版嵁搴撹〃鐨勫瓧孌靛悕
  • 聽聽 * @param dbType 鏁版嵁搴撹繑鍥炵殑綾誨瀷甯擱噺瀹氫箟
  • 聽聽 * @return 榪涜濉厖鐨勬柟娉曠殑鍙傛暟鐨勭被鍨?/font>
  • 聽聽 */
  • publicClass getMethodParameterType(String fieldName,int dbType);
  • }


  • ]]>
    PreparedStatementSetter 璁劇疆PreparedStatement鎵闇鐨勫叏閮ㄥ弬鏁般?/title><link>http://www.tkk7.com/huamengxing/archive/2007/09/10/143912.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Mon, 10 Sep 2007 02:54:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/09/10/143912.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/143912.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/09/10/143912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/143912.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/143912.html</trackback:ping><description><![CDATA[ <ol> <li> <p> <i> <font color="#339900">/**</font> </i> </p> <br /> </li> <li> <i> <font color="#339900">* Copyright: Copyright (c) 2005-2005</font> </i> <br /> </li> <li> <i> <font color="#339900">* Company: JavaResearch(http://www.javaresearch.org)</font> </i> <br /> </li> <li> <i> <font color="#339900">*/</font> </i> <br /> </li> <li> <b> <font color="#0000ff">package</font> </b>org.javaresearch.jerch;<br /></li> <li> <br /> </li> <li> <b> <font color="#0000ff">import</font> </b>java.sql.<b><a ><font color="#ff0000"><u>PreparedStatement</u></font></a></b>;<br /></li> <li> <b> <font color="#0000ff">import</font> </b>java.sql.<b><a ><font color="#ff0000"><u>SQLException</u></font></a></b>;<br /></li> <li> <br /> </li> <li> <i> <font color="#339900">/**</font> </i> <br /> </li> <li> <i> <font color="#339900">* 璁劇疆PreparedStatement鐨勫弬鏁扮殑鎺ュ彛瀹氫箟銆?/font> </i> <br /> </li> <li> <i> <font color="#339900">* 鏈鍚庢洿鏂版棩鏈?2005騫?鏈?8鏃?/font> </i> <br /> </li> <li> <i> <font color="#339900">* @author cherami</font> </i> <br /> </li> <li> <i> <font color="#339900">*/</font> </i> <br /> </li> <li> <b> <font color="#0000ff">public</font> </b> <b> <font color="#0000ff">interface</font> </b> <a > <font color="#ff0000"> <u>PreparedStatementSetter</u> </font> </a>{<br /></li> <li>聽 <i><font color="#339900">/**</font></i><br /></li> <li> <i> <font color="#339900">聽聽 * 璁劇疆PreparedStatement鎵闇鐨勫叏閮ㄥ弬鏁般?/font> </i> <br /> </li> <li> <i> <font color="#339900">聽聽 * @param ps PreparedStatement</font> </i> <br /> </li> <li> <i> <font color="#339900">聽聽 * @throws SQLException</font> </i> <br /> </li> <li> <i> <font color="#339900">聽聽 */</font> </i> <br /> </li> <li>聽 <b><font color="#0000ff">public</font></b><b><font color="#0000ff">void</font></b> setValues(<b><a ><font color="#ff0000"><u>PreparedStatement</u></font></a></b> ps)聽 <b><font color="#0000ff">throws</font></b><b><a ><font color="#ff0000"><u>SQLException</u></font></a></b>;<br /></li> <li>} </li> <li> </li> <li>jt.query("select address from owners where first_name = ? and last_name = ?",<br />聽聽聽聽new PreparedStatementSetter(){<br />聽聽聽聽聽public void setValues(PreparedStatement ps) throws SQLException {<br />聽聽聽聽聽聽ps.setString(1, "Jeff");<br />聽聽聽聽聽聽ps.setString(2, "Black");<br />聽聽聽聽聽}<br />聽聽聽聽}, <br />聽聽聽聽new RowMapper(){<br />聽聽聽聽聽public Object mapRow(ResultSet rs, int rowNum) throws SQLException {聽聽聽聽聽聽<br />聽聽聽聽聽聽return rs.getString("address");<br />聽聽聽聽聽}<br />聽聽聽聽}));<br /></li> </ol> <img src ="http://www.tkk7.com/huamengxing/aggbug/143912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-09-10 10:54 <a href="http://www.tkk7.com/huamengxing/archive/2007/09/10/143912.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>PreparedStatementCreatorhttp://www.tkk7.com/huamengxing/archive/2007/09/10/143900.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Mon, 10 Sep 2007 02:38:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/10/143900.htmlhttp://www.tkk7.com/huamengxing/comments/143900.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/10/143900.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/143900.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/143900.html
  • /**


  • * Copyright: Copyright (c) 2005-2005
  • * Company: JavaResearch(http://www.javaresearch.org)
  • */
  • package org.javaresearch.jerch;

  • import java.sql.Connection;
  • import java.sql.PreparedStatement;
  • import java.sql.SQLException;

  • /**
  • * 鍒涘緩PreparedStatement鐨勬帴鍙e畾涔夈?/font>
  • * 鏈鍚庢洿鏂版棩鏈?2005騫?鏈?8鏃?/font>
  • * @author cherami
  • */
  • public interface PreparedStatementCreator {
  • /**
  • 聽聽 * 浠庢暟鎹簱榪炴帴涓垱寤轟竴涓狿reparedStatement銆?/font>
  • 聽聽 * @param con 鏁版嵁搴撹繛鎺?/font>
  • 聽聽 * @return 鍒涘緩濂界殑PreparedStatement
  • 聽聽 * @throws SQLException
  • 聽聽 */
  • publicPreparedStatement createPreparedStatement(Connection con) throwsSQLException;
  • }
  • 浣跨敤瀹炰緥錛?br />
  • jt聽 jdbctemplate錛?br />聽聽System.out.println(jt.execute(
    聽聽聽聽new PreparedStatementCreator(){
    聽聽聽聽聽public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
    聽聽聽聽聽聽return con.prepareStatement("select address from owners");
    聽聽聽聽聽}
    聽聽聽聽},
    聽聽聽聽new PreparedStatementCallback(){
    聽聽聽聽聽public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
    聽聽聽聽聽聽List<String> list = new ArrayList<String>();
    聽聽聽聽聽聽ResultSet rs = null;
    聽聽聽聽聽聽try{
    聽聽聽聽聽聽聽rs = ps.executeQuery();
    聽聽聽聽聽聽聽while(rs.next()){
    聽聽聽聽聽聽聽聽list.add(rs.getString("address"));
    聽聽聽聽聽聽聽}
    聽聽聽聽聽聽}finally{
    聽聽聽聽聽聽聽JdbcUtils.closeResultSet(rs);
    聽聽聽聽聽聽}
    聽聽聽聽聽聽return list;
    聽聽聽聽聽}
    聽聽聽聽}));


  • ]]>
    Spring JDBC Templatehttp://www.tkk7.com/huamengxing/archive/2007/09/06/143234.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Thu, 06 Sep 2007 09:50:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/06/143234.htmlhttp://www.tkk7.com/huamengxing/comments/143234.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/06/143234.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/143234.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/143234.html聽聽<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    聽聽<property name="username" value="sa" />
    聽聽<property name="password" value="" />
    聽聽<property name="url" value="jdbc:hsqldb:hsql://localhost:9001" />
    聽</bean>

    聽<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    聽聽<property name="dataSource" ref="dataSource"></property>
    聽</bean>

    ListableBeanFactory cbf = new ClassPathXmlApplicationContext("ac1.xml");
    聽聽JdbcTemplate jt = (JdbcTemplate) cbf.getBean("jdbcTemplate");聽聽
    聽聽List rsList = jt.queryForList("select * from pets");
    聽聽//////////////////// 棣栧厛鍙栧緱list
    聽聽for(Iterator iterator = rsList.iterator();iterator.hasNext() ;){
    //////////////////////////////灝嗘墍鏈夌殑list榪唬鍑烘潵
    聽聽聽System.out.println(iterator.next());
    聽聽}聽聽
    1. List聽rows聽=聽jdbcTemplate.queryForList("SELECT聽*聽FROM聽USER"); 聽聽
    2. Iterator聽it聽=聽rows.iterator(); 聽聽
    3. while(it.hasNext())聽{ 聽聽
    4. 聽聽聽聽Map聽userMap聽=聽(Map)聽it.next(); 聽聽
    5. 聽聽聽聽System.out.print(userMap.get("user_id")聽+聽"\t"); 聽聽
    6. 聽聽聽聽System.out.print(userMap.get("name")聽+聽"\t"); 聽聽
    7. 聽聽聽聽System.out.print(userMap.get("sex")聽+聽"\t"); 聽聽
    8. 聽聽聽聽System.out.println(userMap.get("age")聽+聽"\t"); 聽聽
    9. }


    ]]>
    MessageSourceResolvablehttp://www.tkk7.com/huamengxing/archive/2007/09/05/142934.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Wed, 05 Sep 2007 08:43:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/09/05/142934.htmlhttp://www.tkk7.com/huamengxing/comments/142934.htmlhttp://www.tkk7.com/huamengxing/archive/2007/09/05/142934.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/142934.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/142934.html聽聽MessageSourceResolvable msr = new DefaultMessageSourceResolvable(new String[]{"welcome"},
    聽聽聽聽new Object[]{"榛樿MessageSourceResolvable瀹炵幇"});
    聽聽System.out.println(aac.getMessage(msr, Locale.CHINA));



    ]]>
    Spring鎻愪緵浜哅ethodNameResolver鐨勪笁縐嶆柟寮忥細http://www.tkk7.com/huamengxing/archive/2007/08/30/141396.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Thu, 30 Aug 2007 07:21:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/30/141396.htmlhttp://www.tkk7.com/huamengxing/comments/141396.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/30/141396.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/141396.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/141396.html
    1 : ParameterMethodNameResolver,榪欎釜鍙互鏍規嵁璇鋒眰鐨勫弬鏁版潵紜畾涓涓渶瑕佽皟鐢ㄧ殑鏂規硶銆?br />渚嬪錛?a >http://www.sf.net/index.view?testParam=testIt錛岃繖涓姹備細璋冪敤鍚嶇О涓簍estIt鐨勫鐞嗘柟娉曘?br />
    2 : InternalPathMethodNameResolver錛岃繖涓彲浠ユ牴鎹姹傜殑璺緞鍚嶇О鏉ヨ皟鐢ㄧ浉搴旂殑鏂規硶銆?br />渚嬪錛?a >http://www.sf.net/testing.view,榪欎釜璇鋒眰浼氳皟鐢╰esting鏂規硶銆?br />
    3 : PropertiesMethodNameResolver錛岃繖涓彲浠ユ牴鎹竴涓猆RLs 鏄犲皠鍒楄〃鏉ヨ皟鐢ㄧ浉搴旂殑鏂規硶銆?br />渚嬪錛屽鏋滃畾涔変簡/index/welcome.html=doIt錛岄偅涔堝綋璇鋒眰涓?index/welcome.html鏃訛紝浼氳皟鐢╠oIt鏂規硶銆傚湪瀹氫箟URLs鏃跺彲浠ヤ嬌鐢ㄩ氶厤絎︺?**/welcom?.html

    ]]>
    Spring 鎺у埗鍣?/title><link>http://www.tkk7.com/huamengxing/archive/2007/08/30/141312.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Thu, 30 Aug 2007 04:32:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/08/30/141312.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/141312.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/08/30/141312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/141312.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/141312.html</trackback:ping><description><![CDATA[ <div id="kk8wuy6" class="section" lang="zh-cn"> <div id="cmuciai" class="titlepage"> <div> <div> <h2 class="title" style="CLEAR: both"> <a name="mvc-controller"> </a>13.3.聽鎺у埗鍣?/h2> </div> </div> </div> <p>鎺у埗鍣ㄧ殑姒傚康鏄疢VC璁捐妯″紡鐨勪竴閮ㄥ垎(紜垏鍦拌錛屾槸MVC涓殑<span id="8gmgouy" class="emphasis"><em>C</em></span>錛夈傚簲鐢ㄧ▼搴忕殑琛屼負閫氬父琚畾涔変負鏈嶅姟鎺ュ彛錛岃屾帶鍒跺櫒浣垮緱鐢ㄦ埛鍙互璁塊棶搴旂敤鎵鎻愪緵鐨勬湇鍔°傛帶鍒跺櫒瑙f瀽鐢ㄦ埛杈撳叆錛屽茍灝嗗叾杞崲鎴愬悎鐞嗙殑妯″瀷鏁版嵁錛屼粠鑰屽彲浠ヨ繘涓姝ョ敱瑙嗗浘灞曠ず緇欑敤鎴楓係pring浠ヤ竴縐嶆娊璞$殑鏂瑰紡瀹炵幇浜嗘帶鍒跺櫒姒傚康錛岃繖鏍蜂嬌寰椾笉鍚岀被鍨嬬殑鎺у埗鍣ㄥ彲浠ヨ鍒涘緩銆係pring鏈韓鍖呭惈琛ㄥ崟鎺у埗鍣ㄣ佸懡浠ゆ帶鍒跺櫒銆佸悜瀵煎瀷鎺у埗鍣ㄧ瓑澶氱澶氭牱鐨勬帶鍒跺櫒銆?/p> <p>Spring鎺у埗鍣ㄦ灦鏋勭殑鍩虹鏄?code class="interfacename">org.springframework.mvc.Controller</code>鎺ュ彛錛屽叾浠g爜濡備笅錛?/p> <pre class="programlisting">public interface Controller { /** * Process the request and return a ModelAndView object which the DispatcherServlet * will render. */ ModelAndView handleRequest( HttpServletRequest request, HttpServletResponse response) throws Exception; }</pre> <p>浣犲彲浠ュ彂鐜?code class="interfacename">Controller</code>鎺ュ彛浠呬粎澹版槑浜嗕竴涓柟娉曪紝瀹冭礋璐e鐞嗚姹傚茍榪斿洖鍚堥傜殑妯″瀷鍜岃鍥俱係pring MVC瀹炵幇鐨勫熀紜灝辨槸榪欎笁涓蹇碉細Mdel銆乂iew錛?code class="classname">ModelAndView</code>錛変互鍙?<code class="interfacename">Controller</code>銆傝櫧鐒?code class="interfacename">Controller</code>鎺ュ彛鏄畬鍏ㄦ娊璞$殑錛屼絾Spring涔熸彁渚涗簡璁稿浣犲彲鑳戒細鐢ㄥ埌鐨勬帶鍒跺櫒銆侰ontroller鎺ュ彛浠呬粎瀹氫箟浜嗘瘡涓帶鍒跺櫒閮藉繀欏繪彁渚涚殑鍩烘湰鍔熻兘錛氬鐞嗚姹傚茍榪斿洖涓涓ā鍨嬪拰涓涓鍥俱?/p> <div id="sookuqu" class="section" lang="zh-cn"> <div id="ksks8c2" class="titlepage"> <div> <div> <h3 class="title"> <a name="mvc-controller-abstractcontroller"> </a>13.3.1.聽<code class="classname">AbstractController</code> 鍜?<code class="classname">WebContentGenerator</code></h3> </div> </div> </div> <p>涓轟簡鎻愪緵涓濂楀熀紜璁炬柦錛屾墍鏈夌殑Spring鎺у埗鍣ㄩ兘緇ф壙浜?<code class="classname">AbstractController</code> 錛?code class="classname">AbstractController</code> 鎻愪緵浜嗚濡傜紦瀛樻敮鎸佸拰mimetype璁劇疆榪欐牱鐨勫姛鑳姐?/p> <div id="a6uumqy" class="table"> <a name="mvc-controller-abstract-features"> </a> <p class="title"> <b>琛?3.3.聽<code class="classname">AbstractController</code>鎻愪緵鐨勫姛鑳?/b> </p> <div id="wm86gw8" class="table-contents"> <table summary="AbstractController鎻愪緵鐨勫姛鑳? border="1"> <colgroup> <col /> <col /> </colgroup> <thead> <tr> <th>鍔熻兘</th> <th>鎻忚堪</th> </tr> </thead> <tbody> <tr> <td> <code class="literal">supportedMethods</code> </td> <td>鎸囧畾榪欎釜鎺у埗鍣ㄥ簲璇ユ帴鍙椾粈涔堟牱鐨勮姹傛柟娉曘傞氬父瀹冭璁劇疆鎴愬悓鏃舵敮鎸丟ET鍜孭OST錛屼絾鏄綘鍙互閫夋嫨浣犳兂鏀寔鐨勬柟娉曘傚鏋滄帶鍒跺櫒涓嶆敮鎸佽姹傚彂閫佺殑鏂規硶錛屽鎴風浼氬緱鍒伴氱煡錛堥氬父鏄姏鍑轟竴涓?code class="classname">ServletException</code>錛夈?</td> </tr> <tr> <td> <code class="literal">requiresSession</code> </td> <td>鎸囧畾榪欎釜鎺у埗鍣ㄦ槸鍚﹂渶瑕丠TTP session鎵嶈兘姝e父宸ヤ綔銆傚鏋滄帶鍒跺櫒鍦ㄦ病鏈塻ession鐨勬儏鍐典笅鎺ユ敹鍒拌姹傦紝瀹㈡埛绔細鍥犱負鎶涘嚭<code class="classname">ServletException</code>鑰屽緱鍒伴氱煡銆?</td> </tr> <tr> <td> <code class="literal">synchronizeSession</code> </td> <td>鎸囧畾controller鏄惁鍚屾鐢ㄦ埛鐨凥TTP session銆?</td> </tr> <tr> <td> <code class="literal">cacheSeconds</code> </td> <td>鎸囧畾controller閫氱煡瀹㈡埛绔鏁版嵁鍐呭緙撳瓨鐨勭鏁幫紝涓鑸負澶т簬闆剁殑鏁存暟銆傞粯璁ゅ間負<span id="goi66kk" class="emphasis"><em>-1</em></span>錛屽嵆涓嶇紦瀛樸?</td> </tr> <tr> <td> <code class="literal">useExpiresHeader</code> </td> <td>鎸囧畾Controller鍦ㄥ搷搴旇姹傛椂鏄惁鍏煎HTTP 1.0 <span id="ikucuo4" class="emphasis"><em>Expires</em></span> header銆傜己鐪佸間負<code class="literal">true</code>銆?</td> </tr> <tr> <td> <code class="literal">useCacheHeader</code> </td> <td>鎸囧畾Controller鍦ㄧ浉搴旇姹傛椂鏄惁鍏煎HTTP 1.1 <span id="o8wiasm" class="emphasis"><em>Cache-Control</em></span> header銆傞粯璁ゅ間負<code class="literal">true</code>銆?</td> </tr> </tbody> </table> </div> </div> <br class="table-break" /> <p>褰撲粠<code class="classname">AbstractController</code>緇ф壙鏃訛紝闇瑕佸疄鐜?code class="literal">handleRequestInternal(HttpServletRequest, HttpServletResponse)</code>鎶借薄鏂規硶錛岃鏂規硶灝嗙敤鏉ュ疄鐜拌嚜宸辯殑閫昏緫錛屽茍榪斿洖涓涓?code class="classname">ModelAndView</code>瀵硅薄銆備笅闈㈣繖涓畝鍗曠殑渚嬪瓙婕旂ず浜嗗浣曚粠<code class="classname">AbstractController</code>緇ф壙浠ュ強濡備綍鍦╝pplicationContext.xml涓繘琛岄厤緗?/p> <pre class="programlisting">package samples; public class SampleController extends AbstractController { public ModelAndView handleRequestInternal( HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView("hello"); mav.addObject("message", "Hello World!"); return mav; } }</pre> <pre class="programlisting"><bean id="sampleController" class="samples.SampleController"> <property name="cacheSeconds" value="120"/> </bean></pre> <p>璇ontroller榪斿洖鐨凪odelAndView浣跨敤浜嗙‖緙栫爜鐨勮鍥懼悕錛堝敖綆¤繖鏍峰仛涓嶅ソ錛夛紝騫墮氱煡瀹㈡埛绔皢鍝嶅簲鏁版嵁緙撳瓨2鍒嗛挓銆傞櫎浜嗛氳繃浠ヤ笂鏂瑰紡鍒涘緩鍜岄厤緗甤ontroller涔嬪錛岃繕闇瑕侀厤緗甴andler mapping(璇峰弬鑰?a title="13.4.聽澶勭悊鍣ㄦ槧灝勶紙handler mapping錛? href="mk:@MSITStore:C:\Documents%20and%20Settings\ljl\妗岄潰\spring2.0-reference_final_zh_cn.chm::/ch13s04.html">絎?3.4聽鑺?鈥滃鐞嗗櫒鏄犲皠錛坔andler mapping錛夆?/a>)錛岃繖鏍瘋controller灝卞彲浠ュ伐浣滀簡銆?/p> </div> <div id="0yeic82" class="section" lang="zh-cn"> <div id="kyuqike" class="titlepage"> <div> <div> <h3 class="title"> <a name="mvc-controller-othersimplecontrollers"> </a>13.3.2.聽鍏跺畠鐨勭畝鍗曟帶鍒跺櫒</h3> </div> </div> </div> <p>灝界鍙互緇ф壙<code class="classname">AbstractController</code>鏉ュ疄鐜拌嚜宸辯殑鎺у埗鍣紝涓嶈繃Spring鎻愪緵鐨勪紬澶氭帶鍒跺櫒鍑忚交浜嗘垜浠紑鍙戠畝鍗昅VC搴旂敤鏃剁殑璐熸媴銆?code class="classname">ParameterizableViewController</code>鍩烘湰涓婂拰涓婇潰渚嬪瓙涓殑涓鏍鳳紝涓嶅悓鐨勬槸錛屼綘鍙互鍦╝pplicationContext.xml閰嶇疆涓寚瀹氳繑鍥炶鍥懼悕浠庤岄伩鍏嶄簡鍦↗ava浠g爜涓殑紜紪鐮併?/p> <p> <code class="classname">UrlFilenameViewController</code>浼氭鏌RL錛岃幏鍙栨枃浠惰姹傜殑鏂囦歡鍚嶏紝騫舵妸瀹冧綔涓鴻鍥懼悕鍔犱互浣跨敤銆傘備緥濡傦紝<code class="literal">http://www.springframework.org/index.html</code>瀵瑰簲鐨勮鍥炬枃浠跺悕鏄?code class="literal">index</code>銆?/p> </div> <div id="yayeoy8" class="section" lang="zh-cn"> <div id="gqqkgwo" class="titlepage"> <div> <div> <h3 class="title"> <a name="mvc-controller-multiaction"> </a>13.3.3.聽<code class="classname">MultiActionController</code></h3> </div> </div> </div> <p> <code class="classname">MultiActionController</code>灝嗗涓涓?action)鍚堝茍鍦ㄤ竴涓帶鍒跺櫒閲岋紝榪欐牱鍙互鎶婄浉鍏沖姛鑳界粍鍚堝湪涓璧楓?code class="classname">MultiActionController</code>浣嶄簬<code class="literal">org.springframework.web.mvc.multiaction</code>鍖呬腑錛屽畠閫氳繃灝嗚姹傛槧灝勫埌姝g‘鐨勬柟娉曞悕鏉ヨ皟鐢ㄦ柟娉曘傚綋鍦ㄤ竴涓帶鍒跺櫒瀛樺湪澶ч噺鍏叡鐨勮涓猴紝浣嗘槸鏈夊涓皟鐢ㄥ叆鍙f椂錛屼嬌鐢?code class="classname">MultiActionController</code>灝辯壒鍒柟渚褲?/p> <div id="uiqyqkc" class="table"> <a name="mvc-controller-multiaction-features"> </a> <p class="title"> <b>琛?3.4.聽<code class="classname">MultiActionController</code>鎻愪緵鐨勫姛鑳?/b> </p> <div id="igyuo8q" class="table-contents"> <table summary="MultiActionController鎻愪緵鐨勫姛鑳? border="1"> <colgroup> <col /> <col /> </colgroup> <thead> <tr> <th>鍔熻兘</th> <th>鎻忚堪</th> </tr> </thead> <tbody> <tr> <td> <code class="literal">delegate</code> </td> <td> <code class="classname">MultiActionController</code>鏈変袱縐嶄嬌鐢ㄦ柟寮忋傜涓縐嶆槸浣犵戶鎵?code class="classname">MultiActionController</code>錛屽茍鍦ㄥ瓙綾諱腑鎸囧畾鐢?code class="interfacename">MethodNameResolver</code>瑙f瀽鐨勬柟娉曪紙榪欑鎯呭喌涓嬩笉闇瑕佽繖涓猟elegate鍙傛暟錛夈傜浜岀鏄綘瀹氫箟涓涓唬鐞嗗璞★紝鐢卞畠鎻愪緵<code class="interfacename">MethodNameResolver</code>瑙f瀽鍑烘潵鐨勬柟娉曪紙榪欑鎯呭喌涓嬶紝浣犲繀欏諱嬌鐢ㄨ繖涓厤緗弬鏁板畾涔変唬鐞嗗璞★級銆?</td> </tr> <tr> <td> <code class="literal">methodNameResolver</code> </td> <td> <code class="classname">MultiActionController</code>闇瑕佷竴縐嶇瓥鐣ワ紝浣垮叾鍙互閫氳繃瑙f瀽璇鋒眰淇℃伅鏉ヨ幏寰楄璋冪敤鐨勬柟娉曘傝繖涓В鏋愮瓥鐣ョ敱<code class="interfacename">MethodNameResolver</code>榪欎釜鎺ュ彛瀹氫箟鐨勩傝繖涓弬鏁板厑璁鎬綘瀹炵幇<code class="interfacename">MethodNameResolver</code>鎺ュ彛錛岀劧鍚庡湪鎺у埗鍣ㄤ腑浣跨敤浣犵殑絳栫暐銆?</td> </tr> </tbody> </table> </div> </div> <br class="table-break" /> <p> <code class="classname">MultiActionController</code>鎵鏀寔鐨勬柟娉曢渶瑕佺鍚堜笅鍒楁牸寮忥細</p> <pre class="programlisting"> <em class="lineannotation"> <span id="4eokuyo" class="lineannotation">// anyMeaningfulName can be replaced by any methodname</span> </em> public [ModelAndView | Map | void] anyMeaningfulName(HttpServletRequest, HttpServletResponse [, Exception | AnyObject]);</pre> <p>娉ㄦ剰錛氬湪姝?span class="emphasis"><em>涓嶅厑璁?/em></span>鏂規硶閲嶈澆錛屽洜涓?code class="classname">MultiActionController</code>鏃犳硶鍒嗚鯨鍑洪噸杞斤紙overloading錛変簡鐨勬柟娉曘傛澶栵紝浣犲彲浠ュ畾涔?span class="emphasis"><em>exception handler</em></span>鏉ュ鐞嗘柟娉曚腑鎶涘嚭鐨勫紓甯搞?</p> <p> <code class="classname">Exception</code> 鍙傛暟鏄彲閫夌殑錛屽畠鍙互鏄?span class="emphasis"><em>浠諱綍</em></span>寮傚父錛屽彧瑕佸畠鏄?code class="classname">java.lang.Exception</code>鎴?code class="classname">java.lang.RuntimeException</code>鐨勫瓙綾匯?code class="classname">AnyObject</code>鍙傛暟涔熸槸鍙夌殑錛屽畠鍙互鏄?span class="emphasis"><em>浠諱綍</em></span>瀵硅薄銆侶TTP Request涓殑鍙傛暟浼氬瓨鍦ㄨ繖涓璞′腑錛屼互渚夸嬌鐢ㄣ?/p> <p>涓嬮潰鍑犱釜渚嬪瓙紺鴻寖浜?code class="classname">MultiActionController</code>姝g‘鐨勬柟娉曞畾涔夈?/p> <p>鏍囧噯鏍煎紡(璺?code class="interfacename">Controller</code>鎺ュ彛瀹氫箟鐨勪竴鏍?銆?/p> <pre class="programlisting">public ModelAndView doRequest(HttpServletRequest, HttpServletResponse)</pre> <p>涓嬮潰榪欎釜鏂規硶鏀寔<code class="classname">Login</code>鍙傛暟錛?榪欎釜鍙傛暟涓寘鍚粠璇鋒眰涓娊鍙栧嚭鏉ョ殑淇℃伅銆?/p> <pre class="programlisting">public ModelAndView doLogin(HttpServletRequest, HttpServletResponse, Login)</pre> <p>涓嬮潰榪欎釜鏂規硶鍙互澶勭悊<code class="classname">Exception</code>銆?/p> <pre class="programlisting">public ModelAndView processException(HttpServletRequest, HttpServletResponse, IllegalArgumentException)</pre> <p>涓嬮潰榪欎釜鏂規硶涓嶈繑鍥炰換浣曟暟鍊箋?(璇峰弬鑰冨悗闈㈢殑绔犺妭 <a title="13.11.聽鎯緥浼樺厛鍘熷垯(convention over configuration)" href="mk:@MSITStore:C:\Documents%20and%20Settings\ljl\妗岄潰\spring2.0-reference_final_zh_cn.chm::/ch13s11.html">絎?3.11聽鑺?鈥滄儻渚嬩紭鍏堝師鍒?convention over configuration)鈥?/a>)</p> <pre class="programlisting">public void goHome(HttpServletRequest, HttpServletResponse)</pre> <p>This signature has a <code class="interfacename">Map</code> return type (see the section entitled <a title="13.11.聽鎯緥浼樺厛鍘熷垯(convention over configuration)" href="mk:@MSITStore:C:\Documents%20and%20Settings\ljl\妗岄潰\spring2.0-reference_final_zh_cn.chm::/ch13s11.html">絎?3.11聽鑺?鈥滄儻渚嬩紭鍏堝師鍒?convention over configuration)鈥?/a> below).</p> <p>涓嬮潰榪欎釜鏂規硶榪斿洖涓涓?code class="interfacename">Map</code>銆?(璇峰弬鑰冨悗闈㈢殑绔犺妭<a title="13.11.聽鎯緥浼樺厛鍘熷垯(convention over configuration)" href="mk:@MSITStore:C:\Documents%20and%20Settings\ljl\妗岄潰\spring2.0-reference_final_zh_cn.chm::/ch13s11.html">絎?3.11聽鑺?鈥滄儻渚嬩紭鍏堝師鍒?convention over configuration)鈥?/a>)</p> <pre class="programlisting">public Map doRequest(HttpServletRequest, HttpServletResponse)</pre> <p> <code class="interfacename">MethodNameResolver</code>璐熻矗浠庤姹備腑瑙f瀽鍑洪渶瑕佽皟鐢ㄧ殑鏂規硶鍚嶇О銆備笅闈㈡槸Spring涓唴緗殑涓変釜<code class="interfacename">MethodNameResolver</code> 瀹炵幇銆?/p> <div id="aoo4qi6" class="itemizedlist"> <ul type="disc" compact=""> <li> <p> <code class="classname">ParameterMethodNameResolver</code> - 瑙f瀽璇鋒眰鍙傛暟錛屽茍灝嗗畠浣滀負鏂規硶鍚嶃?瀵瑰簲<code class="literal">http://www.sf.net/index.view?testParam=testIt</code>鐨勮姹傦紝浼氳皟鐢?<code class="literal">testIt(HttpServletRequest,HttpServletResponse)</code>鏂規硶)銆備嬌鐢?code class="literal">paramName</code>閰嶇疆鍙傛暟錛屽彲浠ヨ瀹氳媯鏌ョ殑鍙傛暟銆?/p> </li> <li> <p> <code class="classname">InternalPathMethodNameResolver</code> -浠庤礬寰勪腑鑾峰彇鏂囦歡鍚嶄綔涓烘柟娉曞悕 (<code class="literal">http://www.sf.net/testing.view</code>鐨勮姹備細璋冪敤<code class="literal">testing(HttpServletRequest,HttpServletResponse)</code>鏂規硶銆?/p> </li> <li> <p> <code class="classname">PropertiesMethodNameResolver</code> - 浣跨敤鐢ㄦ埛鑷畾涔夌殑灞炴у璞★紝灝嗚姹傜殑URL鏄犲皠鍒版柟娉曞悕銆傚綋灞炴т腑鍖呭惈<code class="literal">/index/welcome.html=doIt</code>鏃訛紝鍙戝埌<code class="literal">/index/welcome.html</code> 鐨勮姹備細璋冪敤<code class="literal">doIt(HttpServletRequest, HttpServletResponse)</code>榪欎釜鏂規硶銆?榪欎釜鏂規硶鍚嶈В鏋愬櫒鍙互鍜?code class="literal">PathMatcher</code>涓璧峰伐浣滐紝姣斿涓婅竟閭d釜URL鍐欐垚<code class="literal">/**/welcom?.html</code>涔熸槸鍙互鐨勩?/p> </li> </ul> </div> <p>鎴戜滑鏉ョ湅涓緇勪緥瀛愩傞鍏堟槸涓涓嬌鐢?code class="classname">ParameterMethodNameResolver</code>鍜屼唬鐞嗭紙delegate錛夊睘鎬х殑渚嬪瓙錛屽畠鎺ュ彈鍖呭惈鍙傛暟鍚?method"鐨勮姹傦紝璋冪敤鏂規硶<code class="literal">retrieveIndex</code>錛?</p> <pre class="programlisting"><bean id="paramResolver" class="org....mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="method"/> </bean> <bean id="paramMultiController" class="org....mvc.multiaction.MultiActionController"> <property name="methodNameResolver" ref="paramResolver"/> <property name="delegate" ref="sampleDelegate"/> </bean> <bean id="sampleDelegate" class="samples.SampleDelegate"/> <em class="lineannotation"><span id="csem4uo" class="lineannotation">## together with</span></em> public class SampleDelegate { public ModelAndView retrieveIndex(HttpServletRequest req, HttpServletResponse resp) { return new ModelAndView("index", "date", new Long(System.currentTimeMillis())); } }</pre> <p>褰撲嬌鐢ㄤ笂闈㈢殑浠g悊瀵硅薄鏃訛紝鎴戜滑涔熷彲浠ヤ嬌鐢?code class="classname">PropertiesMethodNameRseolver</code>鏉ュ尮閰嶄竴緇刄RL錛屽皢瀹冧滑鏄犲皠鍒版垜浠畾涔夌殑鏂規硶涓婏細</p> <pre class="programlisting"><bean id="propsResolver" class="org....mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <value> /index/welcome.html=retrieveIndex /**/notwelcome.html=retrieveIndex /*/user?.html=retrieveIndex </value> </property> </bean> <bean id="paramMultiController" class="org....mvc.multiaction.MultiActionController"> <property name="methodNameResolver" ref="propsResolver"/> <property name="delegate" ref="sampleDelegate"/> </bean></pre> </div> <div id="miyewci" class="section" lang="zh-cn"> <div id="maks6kg" class="titlepage"> <div> <div> <h3 class="title"> <a name="mvc-controller-command"> </a>13.3.4.聽鍛戒護鎺у埗鍣?/h3> </div> </div> </div> <p>Spring鐨?span class="emphasis"><em>CommandController</em></span>鏄疭pring MVC鐨勯噸瑕侀儴鍒嗐傚懡浠ゆ帶鍒跺櫒鎻愪緵浜嗕竴縐嶅拰鏁版嵁瀵硅薄浜や簰鐨勬柟寮忥紝騫跺姩鎬佸湴灝嗘潵鑷?code class="interfacename">HttpServletRequest</code>鐨勫弬鏁扮粦瀹氬埌浣犳寚瀹氱殑鏁版嵁瀵硅薄涓娿傚畠鐨勫姛鑳藉拰Struts涓殑<code class="classname">ActionForm</code>鏈夌偣鍍忥紝涓嶈繃鍦⊿pring涓紝浣犱笉闇瑕佸疄鐜頒換浣曟帴鍙f潵瀹炵幇鏁版嵁緇戝畾銆傞鍏堬紝璁╂垜浠湅涓涓嬫湁鍝簺鍙互浣跨敤鐨勫懡浠ゆ帶鍒跺櫒錛?/p> <div id="uem4qeu" class="itemizedlist"> <ul type="disc" compact=""> <li> <p> <code class="classname">AbstractCommandController</code> 錛嶏紞浣犲彲浠ヤ嬌鐢ㄨ鎶借薄鍛戒護鎺у埗鍣ㄦ潵鍒涘緩鑷繁鐨勫懡浠ゆ帶鍒跺櫒錛屽畠鑳藉灝嗚姹傚弬鏁扮粦瀹氬埌浣犳寚瀹氱殑鍛戒護瀵硅薄銆傝繖涓被騫朵笉鎻愪緵浠諱綍琛ㄥ崟鍔熻兘錛屼絾鏄畠鎻愪緵楠岃瘉鍔熻兘錛屽茍涓旇浣犲湪瀛愮被涓幓瀹炵幇濡備綍澶勭悊鐢辮姹傚弬鏁頒駭鐢熺殑鍛戒護瀵硅薄銆?</p> </li> <li> <p> <code class="classname">AbstractFormController</code>錛嶏紞涓涓敮鎸佽〃鍗曟彁浜ょ殑鎶借薄鎺у埗鍣ㄧ被銆備嬌鐢ㄨ繖涓帶鍒跺櫒錛屼綘鍙互瀹氫箟琛ㄥ崟錛屽茍浣跨敤浠庢帶鍒跺櫒鑾峰彇鐨勬暟鎹璞℃瀯寤鴻〃鍗曘傚綋鐢ㄦ埛杈撳叆琛ㄥ崟鍐呭錛?code class="classname">AbstractFormController</code>灝嗙敤鎴瘋緭鍏ョ殑鍐呭緇戝畾鍒板懡浠ゅ璞★紝楠岃瘉琛ㄥ崟鍐呭錛屽茍灝嗚瀵硅薄浜ょ粰鎺у埗鍣紝瀹屾垚鐩稿簲鐨勬搷浣溿傚畠鏀寔鐨勫姛鑳芥湁闃叉閲嶅鎻愪氦銆佽〃鍗曢獙璇佷互鍙婁竴鑸殑琛ㄥ崟澶勭悊嫻佺▼銆傚瓙綾婚渶瑕佸疄鐜拌嚜宸辯殑鏂規硶鏉ユ寚瀹氶噰鐢ㄥ摢涓鍥炬潵鏄劇ず杈撳叆琛ㄥ崟錛屽摢涓鍥炬樉紺鴻〃鍗曟紜彁浜ゅ悗鐨勭粨鏋溿傚鏋滀綘闇瑕佽〃鍗曪紝浣嗕笉鎯沖湪搴旂敤涓婁笅鏂囦腑鎸囧畾鏄劇ず緇欑敤鎴風殑瑙嗗浘錛屽氨浣跨敤榪欎釜鎺у埗鍣ㄣ?</p> </li> <li> <p> <code class="classname">SimpleFormController</code> 錛嶏紞榪欐槸涓涓猣orm cotnroller錛屽綋闇瑕佹牴鎹懡浠ゅ璞℃潵鍒涘緩鐩稿簲鐨刦orm鐨勬椂鍊欙紝璇ョ被鍙互鎻愪緵鏇村鐨勬敮鎸併備綘鍙互涓哄叾鎸囧畾涓涓懡浠ゅ璞★紝鏄劇ず琛ㄥ崟鐨勮鍥懼悕錛屽綋琛ㄥ崟鎻愪氦鎴愬姛鍚庢樉紺虹粰鐢ㄦ埛鐨勮鍥懼悕絳夌瓑銆?</p> </li> <li> <p> <code class="classname">AbstractWizardFormController</code> 錛嶏紞榪欐槸涓涓娊璞$被錛岀戶鎵胯繖涓被闇瑕佸疄鐜?code class="literal">validatePage()</code>銆?code class="literal">processFinish()</code> 鍜?code class="literal">processCancel()</code> 鏂規硶銆?/p> <p>浣犳湁鍙兘涔熼渶瑕佸啓涓涓瀯閫犲櫒錛屽畠鑷沖皯闇瑕佽皟鐢?code class="literal">setPages()</code>鍜?code class="literal">setCommandName()</code>鏂規硶銆俿etPages()鐨勫弬鏁版槸涓涓猄tring鏁扮粍錛岃繖涓暟緇勫寘鍚簡緇勬垚鍚戝鐨勮鍥懼悕銆俿etCommandName()鐨勫弬鏁版槸涓涓猄tring錛岃鍙傛暟灝嗙敤鏉ュ湪瑙嗗浘涓皟鐢ㄤ綘鐨勫懡浠ゅ璞°?/p> <p>鍜?code class="classname">AbstractFormController</code>鐨勫疄鐜頒竴鏍? 浣犻渶瑕佷嬌鐢ㄥ懡浠ゅ璞★紙鍏跺疄灝辨槸涓涓狫avaBean錛?榪欎釜bean涓寘鍚簡琛ㄥ崟鐨勪俊鎭級銆備綘鏈変袱涓夋嫨錛氬湪鏋勯犲嚱鏁頒腑璋冪敤<code class="literal">setCommandClass()</code>鏂規硶錛堝弬鏁版槸鍛戒護瀵硅薄鐨勭被鍚嶏級錛屾垨鑰呭疄鐜?code class="literal">formBackingObject()</code>鏂規硶銆?/p> <p> <code class="classname">AbstractWizardFormController</code> 鏈夊嚑涓綘鍙互澶嶅啓錛坥verride錛夌殑鏂規硶銆傛渶鏈夌敤鐨勪竴涓槸<code class="literal">referenceData(..)</code>銆傝繖涓柟娉曞厑璁鎬綘鎶婃ā鍨嬫暟鎹互<code class="interfacename">Map</code>鐨勬牸寮忎紶閫掔粰瑙嗗浘錛?code class="literal">getTargetPage()</code> 鍏佽浣犲姩鎬佸湴鏇存敼鍚戝鐨勯〉闈㈤『搴忥紝鎴栬呯洿鎺ヨ煩榪囨煇浜涢〉闈紱<code class="literal">onBindAndValidate()</code> 鍏佽浣犲鍐欏唴緗殑緇戝畾鍜岄獙璇佹祦紼嬨?/p> <p>鏈鍚庯紝鎴戜滑鏈夊繀瑕佹彁涓涓?code class="literal">setAllowDirtyBack()</code> 鍜?code class="literal">setAllowDirtyForward()</code>涓や釜鏂規硶銆?浣犲彲浠ュ湪<code class="literal">getTargetPage()</code>涓皟鐢ㄨ繖涓や釜鏂規硶錛岃繖涓や釜鏂規硶灝嗗喅瀹氬湪褰撳墠欏甸潰楠岃瘉澶辮觸鏃訛紝鏄惁鍏佽鍚戝鍓嶇Щ鎴栧悗閫銆?/p> <p> <code class="classname">AbstractWizardFormController</code>鐨勬洿璇︾粏鍐呭璇峰弬鑰僇avaDoc銆傚湪Spring闄勫甫鐨勪緥瀛恓PetStore涓紝鏈変竴涓叧浜庡悜瀵煎疄鐜扮殑渚嬪瓙錛?<code class="classname">org.springframework.samples.jpetstore.web.spring.OrderFormController</code>銆?/p> </li> </ul> </div> </div> </div> <img src ="http://www.tkk7.com/huamengxing/aggbug/141312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-08-30 12:32 <a href="http://www.tkk7.com/huamengxing/archive/2007/08/30/141312.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瑙嗗浘瑙f瀽鍣?/title><link>http://www.tkk7.com/huamengxing/archive/2007/08/30/141185.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Thu, 30 Aug 2007 02:01:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/08/30/141185.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/141185.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/08/30/141185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/141185.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/141185.html</trackback:ping><description><![CDATA[瑙嗗浘瑙f瀽鍣? <div></div><p>灝辮薄鍜孲pring闆嗘垚鐨勫叾浠栬〃鐜板眰鎶鏈竴鏍鳳紝瀵逛簬JSP欏甸潰浣犻渶瑕佷竴涓鍥捐В鏋愬櫒鏉ヨВ鏋愩傛渶甯哥敤鐨凧SP瑙嗗浘瑙f瀽鍣ㄦ槸<tt class="literal">InternalResourceViewResolver</tt>鍜?tt class="literal">ResourceBundleViewResolver</tt>銆傚畠浠瀹氫箟鍦╓ebApplicationContext閲岋細</p><pre class="programlisting"># The ResourceBundleViewResolver: <bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> <property name="basename"><value>views</value></property> </bean> # And a sample properties file is uses (views.properties in WEB-INF/classes): welcome.class=org.springframework.web.servlet.view.JstlView welcome.url=/WEB-INF/jsp/welcome.jsp productList.class=org.springframework.web.servlet.view.JstlView productList.url=/WEB-INF/jsp/productlist.jsp</pre><p>浣犲彲浠ョ湅鍒癛esourceBundleViewResolver闇瑕佷竴涓睘鎬ф枃浠舵潵鎶婅鍥懼悕縐版槧灝勫埌 1)綾誨拰 2) URL銆?閫氳繃ResolverBundleViewResolver錛屼綘鍙互鐢ㄤ竴涓В鏋愬櫒鏉ヨВ鏋愪袱縐嶇被鍨嬬殑瑙嗗浘銆?/p><pre class="programlisting"><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> <property name="prefix"><value>/WEB-INF/jsp/</value></property> <property name="suffix"><value>.jsp</value></property> </bean></pre><p>InternalResourceBundleViewResolver鍙互閰嶇疆鎴愪嬌鐢↗SP欏甸潰銆備綔涓哄ソ鐨勫疄鐜版柟寮忥紝寮虹儓鎺ㄨ崘浣犲皢JSP鏂囦歡鏀懼湪WEB-INF涓嬬殑涓涓洰褰曚腑錛岃繖鏍峰鎴風灝變笉浼氱洿鎺ヨ闂埌瀹冧滑銆?/p><img src ="http://www.tkk7.com/huamengxing/aggbug/141185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-08-30 10:01 <a href="http://www.tkk7.com/huamengxing/archive/2007/08/30/141185.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>spring2.0 Bean xsdhttp://www.tkk7.com/huamengxing/archive/2007/08/30/141164.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Thu, 30 Aug 2007 01:24:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/30/141164.htmlhttp://www.tkk7.com/huamengxing/comments/141164.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/30/141164.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/141164.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/141164.html闃呰鍏ㄦ枃

    ]]>
    Spring2.0 鍙墿灞昘ML閰嶇疆鍒濇帰 http://www.tkk7.com/huamengxing/archive/2007/08/29/140925.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Wed, 29 Aug 2007 07:08:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/29/140925.htmlhttp://www.tkk7.com/huamengxing/comments/140925.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/29/140925.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/140925.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/140925.html 2007-07-18 Spring鐨勪簨鍔¢氱煡聽聽
    鍏抽敭瀛? Spring 聽 聽聽聽聽

    Spring 2.0鐗堟湰鏀寔鎵╁睍XML閰嶇疆錛岀潃瀹炲叴濂嬩簡涓涓嬶紝鍦ㄦ垜鐪嬫潵錛孲pring浣滀負鐩墠鏈嫻佽鐨勬鏋訛紝涓嶈兘鎵╁睍鐢ㄦ埛鑷畾涔夌殑閰嶇疆錛屽疄鍦ㄦ槸Spring鐨勪竴涓緢涓嶇埥鐨勫湴鏂癸紝<bean />鐨勬柟寮忕敤璧鋒潵姣旇緝閫氱敤錛岃搗鐮佸埌鐩墠涓烘絎﹀悎澶ч儴鍒嗕漢鐨勪嬌鐢ㄤ範鎯紝騫朵笖鑳藉畬鎴怱pring鎵鏈夌殑閰嶇疆鎿嶄綔,浣嗘槸瀵逛簬絎笁鏂圭殑鎻愪緵鍟嗘垨鍒欎細緇忓父鎵╁睍Spring鍔熻兘鐨勫紑鍙戣呮潵璇?浣跨敤<bean />榪欐牱鐨勯厤緗柟寮忔垨璁鎬笉鏄粬浠渶鎯寵鐨勶紝浠栦滑闇瑕佷嬌緇勪歡鐨勯厤緗洿鍔犵洿瑙傘佹槗闃呰銆佹槗鎵╁睍鈥︹﹁瘯鎯充嬌鐢ㄤ笅闈㈢殑閰嶇疆鏂瑰紡

    浠g爜
    1. <mytag:datasource聽id= "datasource" 聽 聽聽
    2. 聽聽聽聽聽聽聽databaseType= "oracle" 聽 聽聽
    3. 聽聽聽聽聽聽聽ip= "192.168.1.110" 聽 聽聽
    4. 聽聽聽聽聽聽聽port= "1521" 聽 聽聽
    5. 聽聽聽聽聽聽聽databaseName= "myDB" 聽聽
    6. 聽聽聽聽聽聽聽userName= "admin" 聽聽
    7. 聽聽聽聽聽聽聽password= "password" 聽聽
    8. 聽聽聽聽聽聽聽/> 聽聽
    9. 聽聽
    10. <mytag:ehCache聽id= "ehcache" 聽 聽聽
    11. 聽聽聽聽聽聽聽cache= "true" 聽 聽聽
    12. 聽聽聽聽聽聽聽maxElements= "100000" 聽 聽聽
    13. 聽聽聽聽聽聽聽timeToIdleSeconds= "120" 聽 聽聽
    14. 聽聽聽聽聽聽聽timeToLiveSeconds= "120" 聽聽
    15. 聽聽聽聽聽聽聽overflowToDisk= "true" 聽聽
    16. 聽聽聽聽聽聽聽/> 聽聽

    涓婇潰鐨勪唬鐮佷腑閰嶇疆浜嗕袱涓粍浠訛紝datasource鍜宑ache緇勪歡錛岀浉姣旀櫘閫氱殑bean&propertiy鏂瑰紡,寰堟樉鐒訛紝榪欑閰嶇疆鏂瑰紡鏇寸洿瑙傦紝鏇存槗璇伙紝鏇撮噸瑕佺殑鏄紝濡傛灉浣滀負緇勪歡鍙戝竷錛屼嬌鐢ㄨ呬篃鍙互寰堟柟渚垮揩鎹風殑寮濮嬩嬌鐢紝鑰屼笉闇瑕佸叧蹇冪粍浠剁殑浠諱綍瀹炵幇緇嗚妭銆?

    鎵╁睍XML閰嶇疆澶ц嚧闇瑕佷竴涓嬪嚑涓楠?
    1銆佸垱寤轟竴涓渶瑕佹墿灞曠殑緇勪歡
    2銆佸畾涔変竴涓獂sd鏂囦歡鎻忚堪緇勪歡鍐呭
    3銆佸垱寤轟竴涓枃浠訛紝瀹炵幇BeanDefinitionParser鎺ュ彛錛岀敤鏉ヨВ鏋恱sd鏂囦歡涓殑瀹氫箟鍜岀粍浠跺畾涔?
    4銆佸垱寤轟竴涓狧andler鏂囦歡錛屾墿灞曡嚜NamespaceHandlerSupport錛岀洰鐨勬槸灝嗙粍浠舵敞鍐屽埌Spring瀹瑰櫒
    5銆佺紪鍐檚pring.handlers鍜宻pring.schemas鏂囦歡

    鎻愪緵涓涓畝鍗曠殑渚嬪瓙錛屾潵璇存槑濡備綍鍘繪墿灞曚竴涓猄pring閰嶇疆錛岄渶姹傚涓嬶細浣跨敤鑷畾涔夋爣絳懼畾涔変竴涓畝鍗曠殑bean錛岃繖涓猙ean鏈変竴涓垨澶氫釜灞炴э紝鏍囩瀹氫箟瀹屾垚鍚庯紝鍙互鍦ㄥ叾浠栭」鐩腑鐢ㄨ嚜瀹氫箟鏍囩鏉ュ畾涔夎bean銆?/p>

    棣栧厛錛屽垱寤轟竴涓渶瑕佹墿灞曠殑緇勪歡錛屽湪榪欓噷鍙槸涓涓畝鍗曠殑bean錛岃屼笖榪欎釜bean鍙湁涓涓睘鎬ge.
    One.java

    浠g爜
    1. package聽com.mysite.tag; 聽聽
    2. 聽聽
    3. publicclass聽One聽{ 聽聽
    4. 聽聽聽聽private聽String聽age; 聽聽
    5. 聽聽聽聽 聽聽
    6. 聽聽聽聽public聽One(){ 聽聽
    7. 聽聽聽聽聽聽聽聽 聽聽
    8. 聽聽聽聽} 聽聽
    9. 聽聽
    10. 聽聽聽聽public聽String聽getAge()聽{ 聽聽
    11. 聽聽聽聽聽聽聽聽return聽age; 聽聽
    12. 聽聽聽聽} 聽聽
    13. 聽聽
    14. 聽聽聽聽publicvoid聽setAge(String聽age)聽{ 聽聽
    15. 聽聽聽聽聽聽聽聽this.age聽=聽age; 聽聽
    16. 聽聽聽聽} 聽聽
    17. } 聽聽

    鐒跺悗錛屽緩绔嬩竴涓獂sd鏂囦歡錛屾潵鎻忚堪榪欎釜bean
    mytag.xsd

    浠g爜
    1. <?xmlversion="1.0"encoding="UTF-8"?>聽聽
    2. <xsd:schemaxmlns="http://www.mysite.org/schema/mytag"聽聽
    3. 聽聽聽聽聽聽聽聽xmlns:xsd="http://www.w3.org/2001/XMLSchema"聽聽
    4. 聽聽聽聽聽聽聽聽xmlns:beans="http://www.springframework.org/schema/beans"聽聽
    5. 聽聽聽聽聽聽聽聽targetNamespace="http://www.mysite.org/schema/mytag"聽聽
    6. 聽聽聽聽聽聽聽聽elementFormDefault="qualified"聽聽
    7. 聽聽聽聽聽聽聽聽attributeFormDefault="unqualified">聽聽
    8. 聽聽聽聽 聽聽
    9. 聽聽聽聽<xsd:importnamespace="http://www.springframework.org/schema/beans"/>聽聽
    10. 聽聽聽聽 聽聽
    11. 聽聽聽聽<xsd:elementname="one">聽聽
    12. 聽聽聽聽聽聽聽聽<xsd:complexType>聽聽
    13. 聽聽聽聽聽聽聽聽聽聽聽聽<xsd:complexContent>聽聽
    14. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<xsd:extensionbase="beans:identifiedType">聽聽
    15. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<xsd:attributename="age"type="xsd:string"default="99999"/>聽聽
    16. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</xsd:extension>聽聽
    17. 聽聽聽聽聽聽聽聽聽聽聽聽</xsd:complexContent>聽聽
    18. 聽聽聽聽聽聽聽聽</xsd:complexType>聽聽
    19. 聽聽聽聽</xsd:element>聽聽
    20. </xsd:schema>聽聽

    鍦ㄤ笂闈㈢殑xsd鏂囦歡鎻忚堪浜嗕竴涓柊鐨則argetNamespace錛屽茍鍦ㄨ繖涓┖闂翠腑瀹氫箟浜嗕竴涓猲ame涓簅ne鐨別lement,one鏈変竴涓猘ge灞炴э紝綾誨瀷涓簊tring錛岄粯璁ゅ間負99999.xsd鏂囦歡鏄痻ml DTD鐨勬浛浠h咃紝浣跨敤XML Schema璇█榪涜緙栧啓錛岃繖閲屽xsd schema涓嶅仛澶瑙i噴錛屾湁鍏磋叮鍙互鍙傝冪浉鍏崇殑璧勬枡銆?

    鍒涘緩涓涓狫ava鏂囦歡錛岃鏂囦歡瀹炵幇浜咮eanDefinitionParser鎺ュ彛錛岀敤鏉ヨВ鏋恱sd鏂囦歡涓殑瀹氫箟騫舵敞鍐屽埌緇勪歡涓?
    MyBeanDefinitionParser.java

    浠g爜
    1. package聽com.mysite.tag; 聽聽
    2. 聽聽
    3. import聽org.springframework.beans.factory.config.BeanDefinition; 聽聽
    4. import聽org.springframework.beans.factory.config.BeanDefinitionHolder; 聽聽
    5. import聽org.springframework.beans.factory.support.BeanDefinitionReaderUtils; 聽聽
    6. import聽org.springframework.beans.factory.support.RootBeanDefinition; 聽聽
    7. import聽org.springframework.beans.factory.xml.BeanDefinitionParser; 聽聽
    8. import聽org.springframework.beans.factory.xml.ParserContext; 聽聽
    9. import聽org.w3c.dom.Element; 聽聽
    10. 聽聽
    11. publicclass聽MyBeanDefinitionParser聽implements聽BeanDefinitionParser{ 聽聽
    12. 聽聽聽聽public聽BeanDefinition聽parse(Element聽arg0,聽ParserContext聽arg1)聽{ 聽聽
    13. 聽聽聽聽聽聽聽聽RootBeanDefinition聽def聽=聽new聽RootBeanDefinition(); 聽聽
    14. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//璁劇疆Bean聽Class 聽聽
    15. 聽聽聽聽聽聽聽聽def.setBeanClass(One.class); 聽聽
    16. 聽聽聽聽聽聽聽聽 聽聽
    17. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//娉ㄥ唽ID灞炴?聽聽
    18. 聽聽聽聽聽聽聽聽String聽id聽=聽arg0.getAttribute("id"); 聽聽
    19. 聽聽聽聽聽聽聽聽BeanDefinitionHolder聽idHolder=聽new聽BeanDefinitionHolder(def,id); 聽聽
    20. 聽聽聽聽聽聽聽聽BeanDefinitionReaderUtils.registerBeanDefinition(idHolder,聽arg1.getRegistry()); 聽聽
    21. 聽聽聽聽聽聽聽聽 聽聽
    22. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//娉ㄥ唽age灞炴?聽聽
    23. 聽聽聽聽聽聽聽聽String聽age聽=聽arg0.getAttribute("age"); 聽聽
    24. 聽聽聽聽聽聽聽聽BeanDefinitionHolder聽ageHolder=聽new聽BeanDefinitionHolder(def,age); 聽聽
    25. 聽聽聽聽聽聽聽聽BeanDefinitionReaderUtils.registerBeanDefinition(ageHolder,聽arg1.getRegistry()); 聽聽
    26. 聽聽聽聽聽聽聽聽def.getPropertyValues().addPropertyValue("age",聽age); 聽聽
    27. 聽聽聽聽聽聽聽聽 聽聽
    28. 聽聽聽聽聽聽聽聽return聽def; 聽聽
    29. 聽聽聽聽} 聽聽
    30. } 聽聽
    31. 聽聽

    涓婇潰鐨勪唬鐮佷粎浠呭疄鐜頒簡涓涓柟娉昿ublic BeanDefinition parse(Element arg0, ParserContext arg1)錛岃緗浉鍏崇殑Bean Class錛岃В鏋愪簡瀵瑰簲鐨剎sd鏂囦歡錛屽茍灝嗚В鏋愮殑鍐呭娉ㄥ唽鍒頒笂涓嬫枃涓紝鍚屾椂榪斿洖涓涓狟eanDefinition瀵硅薄錛圔eanDefinition鏄疭pring鐨刡ean瀹氫箟錛屾彁渚涗簡bean閮ㄥ垎鐨勬搷浣滄柟娉曪紝濡俰sSingleton()銆乮sLazyInit()絳?銆?

    娉ㄦ剰錛宨d灞炴ф槸涓涓粯璁ょ殑灞炴э紝鍙互涓嶅湪xsd鏂囦歡涓弿榪幫紝浣嗘槸闇瑕佹敞鍐屽畠錛屽惁鍒欏皢鏃犳硶閫氳繃getBean鏂規硶鑾峰彇鏍囩瀹氫箟鐨刡ean錛屼篃鏃犳硶琚叾浠朾ean寮曠敤銆?
    鍙﹀錛屼笅闈唬鐮佹槸緇檅ean鐨勫睘鎬ц祴鍊鹼紝榪欎釜鏄笉鍙己灝戠殑錛屽惁鍒欏湪浣跨敤鏍囩瀹氫箟鏃跺皢鏃犳硶鑾峰彇bean灞炴х殑鍊箋?

    浠g爜
    1. def.getPropertyValues().addPropertyValue("age",聽age); 聽聽

    鐒跺悗涓虹粍浠剁紪鍐欎竴涓狧andler鏂囦歡錛屾墿灞曡嚜NamespaceHandlerSupport錛屽畠鐨勪綔鐢ㄦ槸灝嗙粍浠舵敞鍐屽埌Spring瀹瑰櫒
    MyNameSpaceHandler.java

    浠g爜
    1. package聽com.mysite.tag; 聽聽
    2. 聽聽
    3. import聽org.springframework.beans.factory.xml.NamespaceHandlerSupport; 聽聽
    4. 聽聽
    5. publicclass聽MyNameSpaceHandler聽extends聽NamespaceHandlerSupport聽{ 聽聽
    6. 聽聽
    7. 聽聽聽聽publicvoid聽init()聽{ 聽聽
    8. 聽聽聽聽聽聽聽聽聽registerBeanDefinitionParser("one",new聽MyBeanDefinitionParser()); 聽聽
    9. 聽聽聽聽} 聽聽
    10. } 聽聽

    瀹為檯鎵ц鐨勮繃紼嬪彧鏈変竴鍙ヤ唬鐮侊紝娉ㄥ唽浜嗕竴涓悕瀛椾負one鐨勬墿灞曢厤緗紝鍖呭惈浜哅yBeanDefinitionParser鎵parser鐩稿叧xsd鐨勫唴瀹廣?

    鍒頒簡榪欓噷錛屼竴涓猄pring鎵╁睍鏍囩宸茬粡瀹屾垚錛屼絾鏄垜浠洰鍓嶈繕娌″姙娉曚嬌鐢ㄥ畠錛孲pring娌¢偅涔堣仾鏄庯紝瀹冩棤娉曠煡閬撴垜浠湪浠涔堝湴鏂瑰畾涔変簡鍝簺鎵╁睍鏍囩錛岃繖浜涙爣絳懼皢琚皝瑙f瀽錛岃繖涓繃紼嬭鎴戜滑閫氳繃涓浜涙枃浠舵潵鍛婄煡Spring鐭ラ亾錛屽畠浠氨鏄痵pring.handlers鍜宻pring.schemas錛屽畠浠斁鍦∕ETA-INF鐩綍涓紝Spring.jar鐨凪ETA-INF鐩綍涓篃鏈夊悓鍚嶇殑鏂囦歡錛屽畠浠殑鏂囦歡鍐呭鍩烘湰涓婃槸鐩鎬技鐨勶紝鑰孲pring鍦ㄦ墽琛岃繃紼嬩腑錛屽鏋滃彂鐜板叾浠杍ar鏂囦歡鐨凪ETA-INF鏂囦歡澶逛腑鍖呭惈鏈夎繖涓や釜鏂囦歡錛孲pring灝嗕細鍚堝茍瀹冧滑銆?
    spring.schemas

    浠g爜
    1. http\://www.mysite.org/schema/mytag.xsd=com/mysite/tag/mytag.xsd 聽聽

    spring.handlers

    浠g爜
    1. http\://www.mysite.org/schema/mytag=com.mysite.tag.MyNameSpaceHandler 聽聽

    spring.schemas灝嗗憡璇塖pring閰嶇疆鏂囦歡鐭ラ亾錛屽鏋滃湪閰嶇疆涓紩鐢╤ttp://www.mysite.org/schema/mytag.xsd錛屽畠搴旇鍘諱粈涔堝湴鏂規壘鐩稿簲鐨剎sd鏂囦歡銆?
    鑰宻pring.handlers鏂囦歡灝嗗憡璇塖pring錛屽簲璇ヤ嬌鐢ㄥ摢涓狧andler娉ㄥ唽鎵╁睍鏍囩銆?/p>

    鐜板湪涓烘錛屼竴涓畬鏁寸殑xml鎵╁睍鏍囩鍏ㄩ儴瀹屾垚錛屽仛涓涓皬搴旂敤嫻嬭瘯涓涓嬨?
    灝嗘暣涓」鐩墦鍖呮垚jar鏂囦歡錛堝埆蹇樿META-INF鍐呯殑涓や釜鏂囦歡錛夛紝鐒跺悗鏂板緩涓涓」鐩紝寮曠敤鍒氭墠鎵撳寘鐨刯ar鏂囦歡錛屽茍寮曠敤Spring鐩稿叧鏂囦歡銆?
    闇瑕佹敞鎰?鑷畾涔墄ml鎵╁睍閰嶇疆鍙湁xsd鏂瑰紡鐨勫紩鐢ㄦ墠鍙互浣跨敤.
    application.xml

    浠g爜
    1. <?xmlversion="1.0"encoding="UTF-8"?>聽聽
    2. <beansxmlns="http://www.springframework.org/schema/beans"聽聽
    3. 聽聽聽聽xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"聽聽
    4. 聽聽聽聽xmlns:tag="http://www.mysite.org/schema/mytag"聽聽
    5. 聽聽聽聽xsi:schemaLocation="http://www.springframework.org/schema/beans 聽聽
    6. 聽聽聽聽http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 聽聽
    7. 聽聽聽聽http://www.mysite.org/schema/mytag 聽聽
    8. 聽聽聽聽http://www.mysite.org/schema/mytag.xsd">聽聽
    9. 聽聽
    10. 聽聽聽聽<tag:oneid="oneBean"age="99"/>聽聽
    11. </beans>聽聽

    鍦▁ml鏂囦歡寮曠敤涓婂彲浠ョ湅鍒?閰嶇疆浜嗕竴涓悕瀛椾負tag鐨勫悕縐扮┖闂?鐩爣涓篽ttp://www.mysite.org/schema/mytag鍛藉悕絀洪棿,榪欎釜鐩爣鍚嶇О絀洪棿蹇呴』鏄瓨鍦ㄤ簬欏圭洰鐨勫紩鐢ㄤ腑鐨?mytag.xsd涓墍瀹氫箟鐨?.
    浠g爜
    1. <tag:one聽id="oneBean"聽age="99"/> 聽聽

    涓婇潰瀹氫箟浜嗕竴涓猧d涓簅neBean鐨勭粍浠訛紝浣跨敤浜嗏渙ne鈥濇墿灞曟爣絳撅紝涔熷氨鏄垜浠湪handler涓墍娉ㄥ唽鐨勶紝緇勪歡age灞炴х殑鍊間負99銆?

    Main.java

    浠g爜
    1. package聽com.test; 聽聽
    2. 聽聽
    3. import聽org.springframework.context.ApplicationContext; 聽聽
    4. import聽org.springframework.context.support.ClassPathXmlApplicationContext; 聽聽
    5. 聽聽
    6. import聽com.mysite.tag.One; 聽聽
    7. 聽聽
    8. publicclass聽Main聽{ 聽聽
    9. 聽聽
    10. 聽聽聽聽publicstaticvoid聽main(String[]聽args)聽{ 聽聽
    11. 聽聽聽聽聽聽聽聽ApplicationContext聽ctx聽=聽new聽ClassPathXmlApplicationContext("application.xml"); 聽聽
    12. 聽聽聽聽聽聽聽聽One聽tag聽=聽(One)聽ctx.getBean("oneBean"); 聽聽
    13. 聽聽聽聽聽聽聽聽System.out.println("oneBean聽age聽is聽"+tag.getAge()); 聽聽
    14. 聽聽聽聽} 聽聽
    15. } 聽聽

    榪愯嫻嬭瘯紼嬪簭錛岀粨鏋滃涓?
    浠g爜
    1. oneBean聽age聽is聽99聽聽

    Spring鐨剎ml鎵╁睍鏄竴涓潪甯告湁鐢ㄧ殑鐗規э紝鍦⊿pring2.0鐨勭増鏈腑涔熸彁渚涗簡涓浜涙柊鐨勬爣絳句嬌鐢紝濡?lt;aop>,<tx>絳?浣嗗氨鐩墠鏉ヨ鍙楀ぇ瀹跺叧娉ㄧ▼搴﹀茍涓嶉珮錛屾垜鎯沖ぇ閮ㄥ垎浣跨敤Spring鐨勫紑鍙戜漢鍛橀兘鍦ㄤ嬌鐢⊿pring寮鍙戜紒涓氬簲鐢紝鑰孲pring鎵鎻愪緵鐨?lt;bean />瀹氫箟鐨勬柟寮忓浜庡紑鍙戜漢鍛樻潵璇村凡緇忚兘澶熸弧瓚抽渶瑕侊紝浣嗘槸濡傛灉鐪嬬殑鏇磋繙涓浜涳紝鍦⊿pring浠ュ悗鐨勫彂灞曡繃紼嬩腑錛寈ml鎵╁睍搴旇浼氭垚涓簊pring鐨勬牳蹇冪壒鎬т箣涓錛屾垨璁稿埌鏃跺ぇ瀹朵細涔犳儻榪欐牱鐨勬柟寮忔潵緙栧啓Spring閰嶇疆鏂囦歡鍚?

    浠g爜
    1. <XXCompany:XXXModule聽id=""> 聽聽
    2. ... 聽聽
    3. ... 聽聽

    鏈鍚庢洿鏂幫細2007-07-18 16:03
    15:42聽聽|聽聽 姘鎬箙閾炬帴聽聽|聽聽 嫻忚聽(481)聽聽|聽聽 璇勮聽(2)聽聽| 聽聽 鏀惰棌聽聽|聽聽 榪涘叆璁哄潧聽聽|聽聽
    璇勮 聽聽聽鍏?2 鏉? 鍙戣〃璇勮
    baallee 聽聽聽 2007-07-18 15:53

    浠g爜
    1. <? xml version = "1.0" encoding = "UTF-8" ?> 聽 聽聽
    2. < beans xmlns = "http://www.springframework.org/schema/beans" 聽聽聽聽 聽聽
    3. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 聽聽聽聽 聽聽
    4. xmlns:p = "http://www.springframework.org/schema/p" 聽聽聽聽 聽聽
    5. xsi:schemaLocation ="http://www.springframework.org/schema/beans聽聽聽聽聽聽聽聽 聽聽
    6. http://www.springframework.org/schema/beans/spring-beans.xsd" > 聽聽 聽聽
    7. < bean class = "com.interface21.spring2.ioc.Person" 聽聽聽聽聽 聽聽
    8. p:name = "Tony" 聽聽聽聽 聽聽
    9. p:age = "53" 聽聽聽聽聽 聽聽
    10. p:house-ref = "number10" /> 聽聽聽 聽聽
    11. < bean class = "com.interface21.spring2.ioc.House" 聽聽聽聽聽 聽聽
    12. id = "number10" 聽聽聽聽 聽聽
    13. p:name = "10聽Downing聽Street" /> 聽聽 聽聽
    14. </ beans > 聽聽

    瀵逛簬綆鍗曠殑搴旂敤鍙互鐢╬鏍囩灝卞ソ浜嗐?
    鑷畾鎰忔墿灞曞簲璇ョ敤鍦ㄦ洿澶氱殑楂樼駭搴旂敤涓?/p>



    ]]>
    spring涓璬ispatcherservlet鐨勮繍琛屾満鍒?/title><link>http://www.tkk7.com/huamengxing/archive/2007/08/29/140843.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Wed, 29 Aug 2007 04:25:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/08/29/140843.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/140843.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/08/29/140843.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/140843.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/140843.html</trackback:ping><description><![CDATA[spring涓璬ispatcherservlet鐨勮繍琛屾満鍒?br /><br />dispatcherservlet鏄痵pring鐨剋eb妗嗘灦(浠ヤ笅綆縐皊pringweb)涓殑鏍稿績servlet."spring鐨剋eb妗嗘灦鈥斺旇薄鍏跺畠web妗嗘灦涓鏍封斺旀槸涓涓姹傞┍鍔ㄧ殑web妗嗘灦錛屽叾璁捐鍥寸粫涓涓兘灝嗚姹傚垎鍙戝埌鎺у埗鍣ㄧ殑servlet錛屽畠涔熸彁渚涘叾瀹冨姛鑳藉府鍔﹚eb搴旂敤寮鍙戙?----銆妔pring framework 寮鍙戝弬鑰冩墜鍐岋紙涓枃鐗堬級銆嬭屽湪springweb妗嗘灦涓繖涓猻ervlet灝辨槸org.springframework.web.servlet.dispatcherservlet銆傝繖涓猻ervlet鐨勭戶鎵垮叧緋誨涓嬪浘鎵紺猴細springweb棣栧厛灝嗕紶緇熺殑httpservlet鎶借薄綾誨寘瑁呮垚浜哹ean錛沠rameworkservlet鎶借薄鍑轟簡web妗嗘灦涓殑servlets鐨勪竴浜涘熀鏈涓猴紝姣斿瀵筧pplication context鐨勮闂紱dispatcherservlet鐨勪富瑕佸伐浣滃氨鏄皢涓涓猺equest鍒嗗彂鍒頒竴涓悎閫傜殑澶勭悊鍣ㄤ笂錛屽茍灝嗗鐞嗚繑鍥炵殑modelandview緇樺埗鍑烘潵榪斿洖緇欏鎴風銆?br /><br />dispatcherservlet浣滀負涓涓猻ervlet閭d粬涓瀹氭湁涓や釜涓昏鐨勬柟娉曪細init()鍜宒oservice()銆?br /><br />涓 init()鍒濆鍖栥俤ispatcherservlet緇ф壙浣撶郴涓璱nit()鏂規硶鐨勫疄鐜頒綅浜巋ttpservletbean涓紝httpservletbean棣栧厛璋冪敤initbeanwrapper()錛屽垵濮嬪寲beanwrapper錛岀劧鍚庤皟鐢ㄦ娊璞℃柟娉昳nitservletbean()錛岃繖涓柟娉曠殑瀹炵幇浣嶄簬浠栫殑瀛愮被frameworkservlet涓紱framewordservlet涓殑initservletbean()鏂規硶灝嗚皟鐢╥nitwebapplicationcontext()錛屽垵濮嬪寲webapplicationcontext錛岀劧鍚庡悓鏍瘋皟鐢ㄤ粬鐨勬娊璞℃柟娉昳nitframeworkservlet()錛岃岃繖涓娊璞℃柟娉曠殑瀹炵幇浣嶄簬鏈緇堢殑dispatcherservlet涓紱dispatcherservlet涓殑initframeworkservet()灝嗕緷嬈″垵濮嬪寲multipar錛堢敤浣滄枃浠朵笂浼狅級瑙f瀽鍣ㄣ佹湰鍦板寲淇℃伅瑙f瀽鍣ㄣ佷富棰樿В鏋愬櫒澶勭悊鍣ㄦ槧灝勭瓑絳夊唴瀹廣傛墍浠ispatcherservlet鐨勫垵濮嬪寲欏哄簭涓篿nit();initbeanwrapper();<br /><br />initservletbeaninitwebapplicationcontext()<br /><br />initframework();initmultipartresolver();initlocaleresolver();initthemeresolver();inithandlermappings();inithandleradapters();inithandlerexceptionresolvers();initviewresolvers();<br /><br />浜?doservice()澶勭悊璇鋒眰銆俤ispatcherservlet涓棤璁烘槸閫氳繃post鏂瑰紡榪樻槸get鏂瑰紡鎻愪氦鐨剅equest錛屾渶緇堥兘浼氫氦鐢眃oservice()澶勭悊銆俤oservice()涓殑澶勭悊閫昏緫澶ц嚧鍒嗕互涓嬪叚涓楠わ細1.if(request鏄痬ultipart,鍗蟲枃浠朵笂浼? 鍒欏皢request瑙f瀽騫跺寘瑁呮垚multiparthttpservletrequest2.mappedhandler = gethandler(request)鏍規嵁request寰楀埌鐩稿簲鐨勫鐞嗗櫒3.璋冪敤娉ㄥ唽鐨勬墍鏈夋嫤鎴櫒鐨刾rehandle鏂規硶4.璋冪敤澶勭悊鍣犅犅?handleradapter ha = new gethandleradapter(mappedhandler.gethandler());聽聽聽 modelandview mv = ha.handle(req, res, mappedhandler.gethandler())//榪欓噷浣跨敤浜哸dapter妯″紡5.璋冪敤娉ㄥ唽鐨勬墍鏈夋嫤鎴櫒鐨刾osthandle鏂規硶6.緇樺埗mv<br /><br />涔熻spring涓嶅儚struts銆乭ibernate閭f牱鏄嬌鐢ㄦ渶涓哄箍娉涚殑錛屼絾浠栨槸鍏ㄩ潰鐨勩佽交閲忕駭鐨勩佽凍澶熺伒媧葷殑銆佸鏄撴浛鎹€佸鏄撴墿灞曠殑銆俿pringweb鏄痵pringframework涓殑涓涓儴鍒嗭紝鑰宒ispatcherservlet鍙堟槸springweb涓殑涓灝忛儴鍒嗭紝瑕佸紕鎳俿pring浠ュ強浠栬儗鍚庣殑璁捐鎬濇兂錛屽鎴戠瓑鑿滈笩鑰岃█錛岃繕鏄湁寰堥暱涓孌佃礬瑕佽蛋鐨勩備絾鎰垮湪鏂扮殑涓鏉¤礬鍑虹幇涔嬪墠錛屾垜浠凡緇忚蛋閬嶄簡榪欐潯璺傝礬婕極鍏朵慨榪滃叜錛屽惥灝嗕笂涓嬭屾眰绱€傜戶緇爺絀秈ng...to be continue...<br /><br /><img src ="http://www.tkk7.com/huamengxing/aggbug/140843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-08-29 12:25 <a href="http://www.tkk7.com/huamengxing/archive/2007/08/29/140843.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Spring-mvc 鐨勫鐞嗘祦紼?http://www.tkk7.com/huamengxing/archive/2007/08/29/140803.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Wed, 29 Aug 2007 02:23:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/29/140803.htmlhttp://www.tkk7.com/huamengxing/comments/140803.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/29/140803.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/140803.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/140803.html

    鍏抽敭瀛? Spring 聽 mvc ioc 聽聽聽聽

    璇鋒眰鐨勫垎鍙?/p>

    璇鋒眰棣栧厛鍒拌揪DispatcherServlet錛屽簲鐢ㄦ湇鍔″櫒浼氭牴鎹甒eb搴旂敤涓瓀eb.xml鏂囦歡瀹氫箟鐨剈rl鏄犲皠灝嗙浉搴旂殑璇鋒眰鍒嗗彂鍒癉ispatcherServlet涓?/p>

    璇鋒眰鐨勫鐞?/p>

    DispatcherServlet浼氭煡鎵劇浉搴旂殑HandlerMapping鎺ュ彛鐨勫疄鐜扮被錛岃皟鐢ㄥ叾涓殑鏂規硶錛欻andlerExecutionChain getHandler(HttpServletRequest request) throws Exception錛岃鏂規硶浼氳繑鍥炰竴涓狧andlerExecutionChain銆傝繑鍥炵殑HandlerExecutionChain涓寘鍚簡闆朵釜鎴栬呮槸澶氫釜Interceptor鍜屼竴涓鐞嗚姹傜殑Handler銆侱ispatcherServlet浼氳皟鐢↖nterceptor涓殑preHandle() 鏂規硶銆傜劧鍚庡鐞咹andler錛岃繖涓狧andler鐩稿綋浜嶴truts涓瑼ction錛屽湪SpringMVC涓粯璁ょ殑瀹炵幇鏄疌ontroller鎺ュ彛錛屾槸鍏蜂綋澶勭悊璇鋒眰鐨勪唬鐮佹墍椹葷暀鐨勫湴鏂廣備簨瀹炰笂HandlerExecutionChain涓殑getHandler()榪斿洖鐨勬槸涓涓狾bject綾誨瀷銆侱ispatcherServlet涓嶄細鐩存帴璋冪敤getHandler錛堬級榪斿洖瀵硅薄涓殑鏂規硶錛孌ispatcherServlet浼氭煡鎵劇浉搴旂殑HandlerAdapter錛岀劧鍚庡叿浣撻氳繃HandlerAdapter鏉ヨ皟鐢╣etHandler()榪斿洖鐨刪andler瀵硅薄涓殑鏂規硶銆傚氨鏄鎴戜滑鍙互瀹炵幇鑷繁鐨凥andlerAdapter鐒跺悗閫氳繃IoC娉ㄥ叆鍒癉ispatcherServlet涓紝浠庤屽彲浠ュ疄鐜頒竴濂楄嚜瀹氫箟鐨勬帶鍒跺櫒銆傞殢鍚嶥ispatcherServlet浼氳皟鐢↖nterceptor涓殑postHandle()鏂規硶銆?

    瑙嗗浘鐨勫鐞?/p>

    DispatcherServlet浼氭湡鏈汬ander榪斿洖涓涓狹odelAndView錛孌ispatcherServlet浼氭牴鎹墍榪斿洖鐨凪odelAndView瀵硅薄鎵鍖呭惈鐨勪俊鎭繘琛岃鍥劇殑娓叉煋銆傝搗鍏蜂綋鍑烘潵嫻佺▼濡備笅錛?/p>

    棣栧厛DispatcherServlet浼氭牴鎹甃ocaleResolver鏉ヨ瘑鍒姹備腑鐨凩ocale錛屽紑鍙戜漢鍛樺彲浠ヨ嚜宸卞疄鐜癓ocaleResolver鎺ュ彛錛岀劧鍚庨氳繃IoC娉ㄥ叆鍒癉ispatcherServlet涓紝鐒跺悗DispatcherServlet浼氬垽鏂璏odelAndView涓槸鍚﹀凡緇忓寘鍚簡鎺ュ彛View鐨勫叿浣撳疄鐜幫紝濡傛灉鍖呭惈浜嗭紝鍒欑洿鎺ヨ皟鐢╒iew涓殑鏂規硶render(Map model, HttpServletRequest request, HttpServletResponse response)銆傚鏋滀笉鍖呭惈錛屽垯璇存槑璇odelAndView鍙槸鍖呭惈浜哣iew鐨勫悕縐板紩鐢紝DispatcherServlet浼氳皟鐢╒iewResolver涓殑resolveViewName(String viewName, Locale locale)鏉ヨВ鏋愬叾鐪熸鐨勮鍥俱傝鏂規硶浼氳繑鍥炰竴涓猇iew鐨勫叿浣撳疄鐜般?/p>

    瑙嗗浘鐨勬覆鏌?/p>

    Spring鏀寔澶氱瑙嗗浘鎶鏈紝鍏朵腑姣旇緝甯哥敤鐨勫寘鎷湁Jstl瑙嗗浘錛孷eloctiy瑙嗗浘錛孎reeMarker瑙嗗浘絳夈傚Jstl瑙嗗浘鐨勬覆鏌揝pring鏄氳繃JstlView榪欎釜綾誨叿浣撳疄鐜扮殑銆備簨瀹炰笂鍏舵渶緇堢殑娓叉煋鏄氦緇欏鍣ㄦ潵鍋氱殑錛孲pring鍙槸閫氳繃RequestDispatcher瀹炵幇浜嗘湇鍔″櫒鍐呴儴璇鋒眰鐨凢orward銆傝屽浜庢ā鏉胯鍥撅紝濡俈eloctiy鍜孎reeMarker絳夛紝Spring浼氬垵濮嬪寲鍏剁浉搴旂殑妯℃澘寮曟搸錛岀敱妯℃澘寮曟搸鐢熸垚鏈緇堢殑Html欏甸潰鐒跺悗鍦ㄥ悎騫跺埌Response鐨勮緭鍑烘祦涓?/p>

    寮傚父鐨勫鐞?/p>

    濡傛灉鍦℉ander涓鐞嗚姹傛槸鎶涘嚭寮傚父錛孌ispatcherServlet浼氭煡鎵綡andlerExceptionResolver鎺ュ彛鐨勫叿浣撳疄鐜幫紝璇ユ帴鍙e畾涔変簡涓涓柟娉曪細

    ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)錛屽疄鐜扮被闇瑕佸疄鐜拌鏂規硶浠ヤ究瀵瑰紓甯歌繘琛屽鐞嗭紝鏈鍚庤鏂規硶闇瑕佽繑鍥炰竴涓狹odelAndView銆?/p>

    SpringMVC鐨勪竴浜涙葷粨
    鐏墊椿鐨処nterceptor錛岄氳繃Interceptor鎴戜滑鍙互鍦ㄤ竴涓姹傚鐞嗗墠鍜岃姹傚鐞嗗畬鎴愪箣鍚庡仛鐩稿簲鐨勬搷浣滐紝閫氳繃Interceptor鏈哄埗錛屾垜浠彲浠ュ仛authentication, logging, and filtering絳夈?
    鑹ソ鐨勮〃鍗曟敮鎸侊紝鍦⊿pringMVC鐨凜ontroller緇ф壙浣撶郴緇撴瀯涓紝鍏跺叿浣撶殑瀛愮被瀵硅〃鍗曪紙Form錛夋彁渚涗簡鑹ソ鐨勬敮鎸併傝兘澶熷緢濂界殑鏀寔鍗曚釜琛ㄥ崟鐨勬樉紺恒佷慨鏀廣佹彁浜ゆ搷浣溿傚悓鏃朵篃鎻愪緵浜嗚〃鍗曠殑鍒嗘鎻愪氦銆?
    鍙畾鍒剁殑鏁版嵁緇戝畾錛圖ata Binding錛夈?
    澶氳鍥炬妧鏈殑鏀寔錛孲pringMVC鍚屾椂鏀寔Jstl, Velocity 絳夊涓鍥炬妧鏈紝浣嗘槸榪欏悓鏃朵篃浼氬紩鍑轟竴涓棶棰橈紝鍥犱負鍚勭瑙嗗浘鎶鏈兘鏈夎嚜宸辯殑涓濂楁柟娉曟潵澶勭悊鍥介檯鍖栵紝渚嬪Jstl鍜孷elocity澶勭悊鍥介檯鍖栫殑鏂瑰紡灝卞緢涓嶇浉鍚屻傚洜姝ゅ湪澶氫釜瑙嗗浘鎶鏈茍瀛樼殑搴旂敤涓紝鍥介檯鍖栦篃鏄竴涓渶瑕佹敞鎰忕殑闂銆?
    鍏禜andler錛堟帶鍒跺櫒錛変綔涓築ean瀹氫箟鍦⊿pring瀹瑰櫒涓紝鍥犳鑳戒韓鍙楀鍣ㄥ甫鏉ョ殑鏈嶅姟銆?
    Handler錛堟帶鍒跺櫒錛夊叿鏈夎壇濂界殑鍙祴璇曟с?



    ]]>HttpServletBeanhttp://www.tkk7.com/huamengxing/archive/2007/08/29/140794.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Wed, 29 Aug 2007 02:13:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/29/140794.htmlhttp://www.tkk7.com/huamengxing/comments/140794.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/29/140794.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/140794.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/140794.html
    public abstract class HttpServletBean
    extends HttpServlet
    		

    Simple extension of HttpServlet which treats its config parameters (init-param entries within the servlet tag in web.xml) as bean properties.

    HttpServlet鐨勭畝鍗曟墿灞曠敤鏉ュ鐞?錛坕nit-param錛塱n the web.xml
    A handy superclass for any type of servlet. Type conversion of config parameters is automatic, with the corresponding setter method getting invoked with the converted value. It is also possible for subclasses to specify required properties. Parameters without matching bean property setter will simply be ignored.

    This servlet leaves request handling to subclasses, inheriting the default behavior of HttpServlet (doGet, doPost, etc).

    This generic servlet base class has no dependency on the Spring ApplicationContext concept. Simple servlets usually don't load their own context but rather access service beans from the Spring root application context, accessible via the filter's ServletContext (see WebApplicationContextUtils).

    The FrameworkServlet class is a more specific servlet base class which loads its own application context. FrameworkServlet serves as direct base class of Spring's full-fledged DispatcherServlet.

    public abstract class FrameworkServlet
    extends HttpServletBean
    implements ApplicationListener
    		

    Base servlet for Spring's web framework. Provides integration with a Spring application context, in a JavaBean-based overall solution.

    spring web Framework鐨勫熀紜 servlet聽 錛屾彁渚涘湪浠avabean涓哄熀紜鐨勬暣浣撹В鍐蟲柟妗堝凡瀹屾垚涓巗pring搴旂敤涓婁笅鏂囩殑闆嗘垚
    This class offers the following functionality:
    1.綆$悊涓涓猻ervlet涓涓綉緇滃簲鐢ㄤ笂涓嬫枃瀹炰緥錛岃繖涓猻ervlet鐨勯厤緗敱servlet鍛藉悕絀洪棿閲岀殑bean鏉ュ喅瀹?br />2.鏍規嵁璇鋒眰澶勭悊鍙戝竷浜嬩歡錛屾槸鍚﹁姹傛垚鍔熺殑琚鐞嗕簡

    • Manages a WebApplicationContext instance per servlet. The servlet's configuration is determined by beans in the servlet's namespace.
    • Publishes events on request processing, whether or not a request is successfully handled.

    Subclasses must implement doService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) to handle requests. Because this extends HttpServletBean rather than HttpServlet directly, bean properties are automatically mapped onto it. Subclasses can override initFrameworkServlet() for custom initialization.

    鍥犱負瀹冪戶鎵胯嚜httpservletBean 鎵浠ean鐨勫睘鎬у凡緇忚鑷姩鐨勮閰嶄簡錛屽瓙綾誨彲浠ラ氳繃瑕嗙洊initFrameworkServlet鏉ュ畾鍒跺垵濮嬪寲bean

    Detects a "contextClass" parameter at the servlet init-param level, falling back to the default context class, XmlWebApplicationContext, if not found. Note that, with the default FrameworkServlet, a custom context class needs to implement the ConfigurableWebApplicationContext SPI.

    Passes a "contextConfigLocation" servlet init-param to the context instance, parsing it into potentially multiple file paths which can be separated by any number of commas and spaces, like "test-servlet.xml, myServlet.xml". If not explicitly specified, the context implementation is supposed to build a default location from the namespace of the servlet.

    Note: In case of multiple config locations, later bean definitions will override ones defined in earlier loaded files, at least when using Spring's default ApplicationContext implementation. This can be leveraged to deliberately override certain bean definitions via an extra XML file.

    The default namespace is "'servlet-name'-servlet", e.g. "test-servlet" for a servlet-name "test" (leading to a "/WEB-INF/test-servlet.xml" default location with XmlWebApplicationContext). The namespace can also be set explicitly via the "namespace" servlet init-param.



    ]]>
    瀹氬埗鍒濆鍖栬窡閿姣乥ean鐨勬柟娉?/title><link>http://www.tkk7.com/huamengxing/archive/2007/08/28/140488.html</link><dc:creator>鍗庢ⅵ琛?/dc:creator><author>鍗庢ⅵ琛?/author><pubDate>Tue, 28 Aug 2007 06:28:00 GMT</pubDate><guid>http://www.tkk7.com/huamengxing/archive/2007/08/28/140488.html</guid><wfw:comment>http://www.tkk7.com/huamengxing/comments/140488.html</wfw:comment><comments>http://www.tkk7.com/huamengxing/archive/2007/08/28/140488.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huamengxing/comments/commentRss/140488.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huamengxing/services/trackbacks/140488.html</trackback:ping><description><![CDATA[ <pre class="programlisting"> <pre class="programlisting"><bean id="exampleInitBean" class="examples.ExampleBean" init-method="cleanup"/></pre> <br /><bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup"/></pre> <img src ="http://www.tkk7.com/huamengxing/aggbug/140488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huamengxing/" target="_blank">鍗庢ⅵ琛?/a> 2007-08-28 14:28 <a href="http://www.tkk7.com/huamengxing/archive/2007/08/28/140488.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Spring BeanFactory API 璇﹁Вhttp://www.tkk7.com/huamengxing/archive/2007/08/28/140469.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Tue, 28 Aug 2007 06:09:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/28/140469.htmlhttp://www.tkk7.com/huamengxing/comments/140469.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/28/140469.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/140469.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/140469.htmlBeanFactory鐨勫疄鐜板簲璇ュ敖鍙兘鏀寔鏍囧噯鐨刡ean鐢熷懡鍛ㄦ湡錛屼互涓嬫槸鎵浠ョ殑鏂規硶鐨勯『搴忕殑渚濇鍒楄〃
    1. BeanNameAware's聽聽 setBeanName
    2. BeanClassLoaderAware's聽 setBeanClassLoader
    3. BeanFactoryAware's聽聽 setBeanFactory
    4. ResourceLoaderAware's setResourceLoader (only applicable when running in an application context)
    5. ApplicationEventPublisherAware's setApplicationEventPublisher (only applicable when running in an application context)
    6. MessageSourceAware's setMessageSource (only applicable when running in an application context)
    7. ApplicationContextAware's setApplicationContext (only applicable when running in an application context)
    8. ServletContextAware's setServletContext (only applicable when running in a web application context)
    9. postProcessBeforeInitialization methods of BeanPostProcessors
    10. InitializingBean's afterPropertiesSet
    11. a custom init-method definition
    12. postProcessAfterInitialization methods of BeanPostProcessors
    聽褰撳叧闂竴涓猙ean鐨勬椂鍊?br />On shutdown of a bean factory, the following lifecycle methods apply:
    1. DisposableBean's destroy
    2. a custom destroy-method definition

    Method Summary
    聽booleancontainsBean(String聽name)
    聽聽聽聽聽聽聽聽聽聽Does this bean factory contain a bean with the given name?
    String[]getAliases(String聽name)
    聽聽聽聽聽聽聽聽聽聽Return the aliases for the given bean name, if any.
    ObjectgetBean(String聽name)
    聽聽聽聽聽聽聽聽聽聽Return an instance, which may be shared or independent, of the specified bean.
    ObjectgetBean(String聽name, Class聽requiredType)
    聽聽聽聽聽聽聽聽聽聽Return an instance, which may be shared or independent, of the specified bean.
    ClassgetType(String聽name)
    聽聽聽聽聽聽聽聽聽聽Determine the type of the bean with the given name.
    聽booleanisPrototype(String聽name)
    聽聽聽聽聽聽聽聽聽聽Is this bean a prototype?
    聽booleanisSingleton(String聽name)
    聽聽聽聽聽聽聽聽聽聽Is this bean a shared singleton?
    聽booleanisTypeMatch(String聽name, Class聽targetType)
    聽聽聽聽聽聽聽聽聽聽Check whether the bean with the given name matches the specified type.


    ]]>
    Lifecycle apihttp://www.tkk7.com/huamengxing/archive/2007/08/28/140460.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Tue, 28 Aug 2007 05:49:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/28/140460.htmlhttp://www.tkk7.com/huamengxing/comments/140460.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/28/140460.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/140460.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/140460.html
    public interface Lifecycle
    		

    Interface defining methods for start/stop lifecycle control. The typical use case for this is to control asynchronous processing.

    Can be implemented by both components (typically a Spring bean defined in a Spring BeanFactory) and containers (typically a Spring ApplicationContext). Containers will propagate start/stop signals to all components that apply.

    Can be used for direct invocations or for management operations via JMX. In the latter case, the MBeanExporter will typically be defined with an InterfaceBasedMBeanInfoAssembler, restricting the visibility of activity-controlled components to the Lifecycle interface.

    Since:
    2.0
    Author:
    Juergen Hoeller
    See Also:
    ConfigurableApplicationContext , AbstractMessageListenerContainer, SchedulerFactoryBean

    Method Summary
    聽boolean isRunning ()
    聽聽聽聽聽聽聽聽聽聽Check whether this component is currently running.
    聽void start ()
    聽聽聽聽聽聽聽聽聽聽Start this component.
    聽void stop ()
    聽聽聽聽聽聽聽聽聽聽Stop this component.


    ]]>
    Spring涓瑽ean鐨勭敓鍛藉懆鏈?http://www.tkk7.com/huamengxing/archive/2007/08/28/140415.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Tue, 28 Aug 2007 04:56:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/28/140415.htmlhttp://www.tkk7.com/huamengxing/comments/140415.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/28/140415.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/140415.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/140415.html Spring涓瑽ean鐨勭敓鍛藉懆鏈?/b>
    聽 聽 鍦ㄤ紶緇熺殑Java搴旂敤涓紝Bean鐨勭敓鍛藉懆鏈熼潪甯哥畝鍗曘侸ava鐨勫叧閿瘝new鐢ㄦ潵瀹炰緥鍖朆ean錛堟垨璁鎬粬鏄潪搴忓垪鍖栫殑錛夈傝繖鏍峰氨澶熺敤浜嗐傜浉鍙嶏紝Bean鐨勭敓鍛藉懆鏈熷湪Spring瀹瑰櫒涓洿鍔犵粏鑷淬傜悊瑙pring Bean鐨勭敓鍛藉懆鏈熼潪甯擱噸瑕侊紝鍥犱負浣犳垨璁歌鍒╃敤Spring鎻愪緵鐨勬満浼氭潵璁㈠埗Bean鐨勫垱寤鴻繃紼嬨?br />

    1. 瀹瑰櫒瀵繪壘Bean鐨勫畾涔変俊鎭茍涓斿皢鍏跺疄渚嬪寲銆?br />2.鍙楃敤渚濊禆娉ㄥ叆錛孲pring鎸夌収Bean瀹氫箟淇℃伅閰嶇疆Bean鐨勬墍鏈夊睘鎬с?br />3.濡傛灉Bean瀹炵幇浜咮eanNameAware鎺ュ彛錛屽伐鍘傝皟鐢˙ean鐨剆etBeanName()鏂規硶浼犻払ean鐨処D銆?br />4.濡傛灉Bean瀹炵幇浜咮eanFactoryAware鎺ュ彛錛屽伐鍘傝皟鐢╯etBeanFactory()鏂規硶浼犲叆宸ュ巶鑷韓銆?br />5.濡傛灉BeanPostProcessor鍜孊ean鍏寵仈錛岄偅涔堝畠浠殑postProcessBeforeInitialzation()鏂規硶灝嗚璋冪敤銆?br />6.濡傛灉Bean鎸囧畾浜唅nit-method鏂規硶錛屽畠灝嗚璋冪敤銆?br />7.鏈鍚庯紝濡傛灉鏈塀eanPsotProcessor鍜孊ean鍏寵仈錛岄偅涔堝畠浠殑postProcessAfterInitialization()鏂規硶灝嗚璋冪敤銆?br />聽聽聽 鍒拌繖涓椂鍊欙紝Bean宸茬粡鍙互琚簲鐢ㄧ郴緇熶嬌鐢ㄤ簡錛屽茍涓斿皢琚繚鐣欏湪Bean Factory涓煡閬撳畠涓嶅啀闇瑕併傛湁涓ょ鏂規硶鍙互鎶婂畠浠嶣ean Factory涓垹闄ゆ帀銆?br />1.濡傛灉Bean瀹炵幇浜咲isposableBean鎺ュ彛錛宒estory()鏂規硶琚皟鐢ㄣ?br />2.濡傛灉鎸囧畾浜嗚鍒剁殑閿姣佹柟娉曪紝灝辮皟鐢ㄨ繖涓柟娉曘?br />聽聽聽 Bean鍦⊿pring搴旂敤涓婁笅鏂囩殑鐢熷懡鍛ㄦ湡涓庡湪Bean宸ュ巶涓殑鐢熷懡鍛ㄦ湡鍙湁涓鐐逛笉鍚岋紝鍞竴涓嶅悓鐨勬槸錛屽鏋淏ean瀹炵幇浜咥pplicationContextAwre鎺ュ彛錛宻etApplicationContext()鏂規硶琚皟鐢ㄣ?br />



    ]]>
    ClassPathXmlApplicationContext 鑾峰緱javabeanhttp://www.tkk7.com/huamengxing/archive/2007/08/28/140324.html鍗庢ⅵ琛?/dc:creator>鍗庢ⅵ琛?/author>Tue, 28 Aug 2007 01:58:00 GMThttp://www.tkk7.com/huamengxing/archive/2007/08/28/140324.htmlhttp://www.tkk7.com/huamengxing/comments/140324.htmlhttp://www.tkk7.com/huamengxing/archive/2007/08/28/140324.html#Feedback0http://www.tkk7.com/huamengxing/comments/commentRss/140324.htmlhttp://www.tkk7.com/huamengxing/services/trackbacks/140324.html

    ]]>
    主站蜘蛛池模板: 无码av免费网站| 亚洲小视频在线播放| 18禁成年无码免费网站无遮挡| 色爽黄1000部免费软件下载| 亚洲免费闲人蜜桃| 久久精品国产亚洲AV麻豆王友容| 国产乱子伦精品免费无码专区| 国产男女爽爽爽爽爽免费视频 | 成人免费视频软件网站| 永久在线观看免费视频| 黄页网址在线免费观看| 亚洲日韩一区二区一无码| 精品日韩亚洲AV无码一区二区三区| 亚洲熟妇av一区二区三区| 亚洲国产成人久久综合区| 免费涩涩在线视频网| 久久WWW免费人成人片| 久久久精品2019免费观看 | 国产福利电影一区二区三区,亚洲国模精品一区| 四虎1515hh永久久免费| 免费国产黄网站在线观看视频| 中国精品一级毛片免费播放| 一级美国片免费看| 免费一级全黄少妇性色生活片 | 亚洲一区二区三区精品视频| 久久亚洲AV无码精品色午夜麻| 亚洲日韩精品A∨片无码| 久久影院亚洲一区| 精品国产日韩亚洲一区| 国产精品亚洲w码日韩中文| 亚洲精品麻豆av| 伊人久久亚洲综合| 久久久久亚洲?V成人无码| 中文字幕第13亚洲另类| 久久精品国产亚洲精品| 久久精品国产亚洲Aⅴ香蕉 | 亚洲jizzjizz少妇| 亚洲av中文无码乱人伦在线观看 | 成人免费视频77777| 性短视频在线观看免费不卡流畅| 无码区日韩特区永久免费系列|