ããéè¿RESTé£æ ¼ä½ç³»æ¶æï¼è¯·æ±åååºé½æ¯åºäºèµæºè¡¨ç¤ºçä¼ è¾æ¥æ建çãèµæºæ¯éè¿å
¨å±IDæ¥æ è¯çï¼è¿äºIDä¸è¬ä½¿ç¨çæ¯ä¸ä¸ªç»ä¸èµæºæ è¯ç¬¦ï¼URIï¼ã客æ·ç«¯åºç¨ä½¿ç¨HTTPæ¹æ³ï¼å¦ï¼GETãPOSTãPUTæDELETEï¼æ¥æä½ä¸ä¸ªæå¤ä¸ªèµæºãé常ï¼GETæ¯ç¨äºè·åæååºä¸ä¸ªæå¤ä¸ªèµæºï¼POSTç¨äºå建ï¼PUTç¨äºæ´æ°ææ¿æ¢ï¼èDELETEåç¨äºå é¤èµæºã
ããä¾å¦ï¼GET http //host/context/employees/12345å°è·åID为12345çåå·¥ç表示ãè¿ä¸ªååºè¡¨ç¤ºå¯ä»¥æ¯å
å«è¯¦ç»çå工信æ¯çXMLæATOMï¼æè
æ¯å
·ææ´å¥½UIçJSP/HTML页é¢ãæ¨çå°åªç§è¡¨ç¤ºæ¹å¼åå³äºæå¡å¨ç«¯å®ç°åæ¨ç客æ·ç«¯è¯·æ±çMIMEç±»åã
ããRESTful Web Serviceæ¯ä¸ä¸ªä½¿ç¨HTTPåRESTåçå®ç°çWeb Serviceãé常ï¼ä¸ä¸ªRESTful Web Serviceå°å®ä¹åºæ¬èµæºURIãå®ææ¯æç表示/ååºMIMEï¼ä»¥åå®ææ¯æçæä½ã
ããæ¬æå°ä»ç»å¦ä½ä½¿ç¨Springå建Javaå®ç°çæå¡å¨ç«¯RESTful Web Servicesãè¿ä¸ªä¾åå°ä½¿ç¨æµè§å¨ãcurlåFirefoxæ件RESTClientä½ä¸ºååºè¯·æ±ç客æ·ç«¯ã
ããæ¬æåå®æ¨æ¯çæRESTåºæ¬ç¥è¯çã
ããSpring 3çRESTæ¯æ
ããå¨Springæ¡æ¶æ¯æRESTä¹åï¼äººä»¬ä¼ä½¿ç¨å
¶ä»å ç§å®ç°ææ¯æ¥å建Java RESTful Web Servicesï¼å¦RestletãRestEasyåJerseyãJerseyæ¯å
¶ä¸æå¼å¾æ³¨æçï¼å®æ¯JAX-RSï¼JSR 311ï¼çåèå®ç°ã
ããSpringæ¯ä¸ä¸ªå¾å°å¹¿æ³åºç¨çJava EEæ¡æ¶ï¼å®å¨çæ¬3以åå°±å¢å äºRESTful Web Serviceså¼åçæ¯æãè½ç¶ï¼å¯¹RESTçæ¯æ并ä¸æ¯JAX-RSçä¸ç§å®ç°ï¼ä½æ¯å®å
·ææ¯æ åå®ä¹æ´å¤çç¹æ§ãRESTæ¯æ被æ ç¼æ´åå°SpringçMVCå±ï¼å®å¯ä»¥å¾å®¹æåºç¨å°ä½¿ç¨Springæ建çåºç¨ä¸ã
ããSpring RESTæ¯æç主è¦ç¹æ§å
æ¬ï¼
ãã注éï¼å¦@RequestMapping å @PathVariableï¼æ¯æèµæºæ è¯åURLæ å°
ããContentNegotiatingViewResolveræ¯æ为ä¸åçMIME/å
容类å使ç¨ä¸åç表示æ¹å¼
ãã使ç¨ç¸ä¼¼çç¼ç¨æ¨¡åæ ç¼å°æ´åå°åå§ç MVC å±
ããå建ä¸ä¸ªç¤ºä¾RESTful Web Service
ããæ¬èä¸çä¾åå°æ¼ç¤ºSpring 3ç¯å¢çå建è¿ç¨ï¼å¹¶å建ä¸ä¸ªå¯ä»¥é¨ç½²å°Tomcatä¸çâHello Worldâåºç¨ãç¶åæ们åå®æä¸ä¸ªæ´å¤æçåºç¨æ¥äºè§£Spring 3 RESTæ¯æçéè¦æ¦å¿µï¼å¦å¤ç§MIMEç±»å表示æ¯æåJAXBæ¯æãå¦å¤ï¼æ¬æè¿ä½¿ç¨ä¸äºä»£ç çææ¥å¸®å©ç解è¿äºæ¦å¿µã
ããHello Worldï¼ä½¿ç¨Spring 3 RESTæ¯æ
ããè¦å建è¿ä¸ªä¾åæ使ç¨çå¼åç¯å¢ï¼æ¨éè¦ï¼
ããIDEï¼Eclipse IDE for JEE (v3.4+)
ããJava SE5 以ä¸
ããWeb 容å¨ï¼Apache Tomcat 6.0ï¼Jettyæå
¶ä»å®¹å¨ä¹å¯ï¼
ããSpring 3æ¡æ¶ï¼v3.0.3æ¯æ¬æç¼åæ¶çææ°çæ¬ï¼
ããå
¶ä»ç¨åºåºï¼JAXB 2ãJSTLãcommons-logging
ããå¨ Eclipse ä¸å建ä¸ä¸ªWebåºç¨ï¼ç¶å设置Tomcat 6ä½ä¸ºå®çè¿è¡ç¯å¢ãç¶åï¼æ¨éè¦è®¾ç½®web.xmlæ件æ¥æ¿æ´»Spring
WebApplicationContextãè¿ä¸ªä¾åå°Spring beané
ç½®åæ两个æ件ï¼rest-servlet.xml å
å«ä¸MVC/RESTæå
³çé
ç½®ï¼rest-context.xmlå
å«æå¡çº§å«çé
ç½®ï¼å¦æ°æ®æº beansï¼ãæ¸
å 1 æ¾ç¤ºäºweb.xmlä¸çSpringé
ç½®çé¨åã
ããæ¸
å 1. å¨web.xmlä¸æ¿æ´»Spring WebApplicationContext
以ä¸æ¯å¼ç¨ç段ï¼
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/rest-context.xml
</param-value>
</context-param>
<!-- This listener will load other application context file in addition to
rest-servlet.xml -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>rest</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
ããå¨rest-servlet.xmlæ件ä¸å建Spring MVCçç¸å
³é
ç½®ï¼ControllerãViewãView Resolverï¼ãæ¸
å 2 æ¾ç¤ºäºå
¶ä¸æéè¦çé¨åã
ããæ¸
å 2. å¨rest-servlet.xmlæ件ä¸å建Spring MVCé
ç½®
以ä¸æ¯å¼ç¨ç段ï¼
<context:component-scan base-package="dw.spring3.rest.controller" />
<!--To enable @RequestMapping process on type level and method level-->
<bean class="org.springframework.web.servlet.mvc.annotation
.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation
.AnnotationMethodHandlerAdapter" />
<!--Use JAXB OXM marshaller to marshall/unmarshall following class-->
<bean id="jaxbMarshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>dw.spring3.rest.bean.Employee</value>
<value>dw.spring3.rest.bean.EmployeeList</value>
</list>
</property>
</bean>
<bean id="employees" class=
"org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg ref="jaxbMarshaller" />
</bean>
<bean id="viewResolver" class=
"org.springframework.web.servlet.view.BeanNameViewResolver" />
ããä¸é¢ç代ç ä¸ï¼
ããComponent-scanå¯ç¨å¯¹å¸¦æSpring注éçç±»è¿è¡èªå¨æ«æï¼å¨å®è·µä¸ï¼å®å°æ£æ¥æ§å¶å¨ç±»ä¸æå®ä¹ç@Controller注éã
ããDefaultAnnotationHanlderMappingsåAnnotationMethodHandlerAdapter使ç¨@ReqeustMapping注éçç±»æå½æ°çbeansç±Springå¤çè¿ä¸ªæ³¨éå°å¨ä¸ä¸èè¿è¡è¯¦ç»ä»ç»ã
ããJaxb2Mashallerå®ä¹ä½¿ç¨JAXB 2è¿è¡å¯¹è±¡XMLæ å°ï¼OXMï¼çç¼ç»å¨ï¼marshallerï¼å解ç»å¨ï¼unmarshaller ï¼
ããMashallingViewå®ä¹ä¸ä¸ªä½¿ç¨Jaxb2MashallerçXML表示view
ããBeanNameViewResolver使ç¨ç¨æ·æå®çbeanå称å®ä¹ä¸ä¸ªè§å¾è§£æå¨
ããæ¬ä¾å°ä½¿ç¨å为âemployeesâçMarshallingViewã
ããè¿æ ·å°±å®æäºSpringçç¸å
³é
ç½®ãä¸ä¸æ¥æ¯ç¼åä¸ä¸ªæ§å¶å¨æ¥å¤çç¨æ·è¯·æ±ãæ¸
å3æ¾ç¤ºçæ¯æ§å¶å¨ç±»ã
温馨提示:答案为网友推荐,仅供参考