The implementation of the request URL suffix to determine the return value type, such as Localhost:8080/list return JSP page, Localhost:8080/list.json return JSON format data
1. Create an enumeration return value type
Public enum resulttype {REDIRECT, JSP, JSON, XML}
2. Create a custom Viewresolver
1 Public classJsonviewresolverImplementsViewresolver {2 3 Privateview view;4 5 PublicView GetView () {6 returnview;7 }8 9 Public voidSetview (view view) {Ten This. View =view; One } A - @Override - PublicView resolveviewname (String viewName, locale locale) the throwsException { - return This. View; - } - +}Jsonviewresolver
1 Public classXmlviewresolverImplementsViewresolver {2 3 Privateview view;4 5 PublicView GetView () {6 returnview;7 }8 9 Public voidSetview (view view) {Ten This. View =view; One } A - @Override - PublicView resolveviewname (String viewName, locale locale) the throwsException { - return This. View; - } - +}Xmlviewresolver
1 Public classMultipleviewresolverextendsWebapplicationobjectsupportImplements2 Viewresolver {3 4 PrivateMap<string, viewresolver>resolvers;5 PrivateString Defaultviewresolvername =NULL;6 7 PublicMap<string, viewresolver>getresolvers () {8 returnresolvers;9 }Ten One Public voidSetresolvers (map<string, viewresolver>resolvers) { A This. resolvers =resolvers; - } - the PublicString Getdefaultviewresolvername () { - returnDefaultviewresolvername; - } - + Public voidsetdefaultviewresolvername (String defaultviewresolvername) { -Defaultviewresolvername =Defaultviewresolvername; + } A at Privateviewresolver Getdefaultviewresolver () { - return This. Resolvers.get ( This. Defaultviewresolvername); - } - - @Override - PublicView resolveviewname (String viewName, locale locale) in throwsException { -Viewresolver Viewresolver =NULL; to if(Viewname.equalsignorecase ("JSON") | | viewname.equalsignorecase ("XML"))) { + return This. Resolvers.get (ViewName). Resolveviewname (ViewName, locale); - } the intindex = Viewname.indexof (":"); * if(Index = =-1) { $Viewresolver = This. Getdefaultviewresolver ();Panax Notoginseng}Else { - if(viewname.substring (0, index). Equalsignorecase ("redirect")) { theViewresolver = This. Getdefaultviewresolver (); +}Else { AViewresolver = This. Resolvers.get (viewname.substring (0, index)); theViewName = viewname.substring (index + 1); + } - } $ $ if(Viewresolver! =NULL) { - returnviewresolver.resolveviewname (viewName, locale); - } the return NULL; - }Wuyi the}Multipleviewresolver
3. Create the Mybasecontroller so that all controllers inherit from it
1 Public Abstract classMybasecontroller {2 3 Public FinalString JSON = "JSON";4 Public FinalString XML = "xml";5 6 protectedstring result (Resulttype resulttype, string url) {7 8Resulttype = Resulttype = =NULL?ResultType.JSP:resultType;9 TenString ext =requestutil.getlookuppathextension (Threadlocalutil One . Getrequest ()); A - if(ext = =NULL) { - if(Resulttype.equals (Resulttype.json) the||resulttype.equals (Resulttype.xml)) { - returnresulttype.name (). toLowerCase (); - } -}Else if("JSON". Equalsignorecase (EXT) | | "XML". Equalsignorecase (EXT)) { + returnext; - } + if(Resulttype.equals (resulttype.redirect)) { Aext =requestutil.getlookuppathfullextension (Threadlocalutil at . Getrequest ()); - if(Ext! =NULL) { -URL + =ext; - } - } - in returnResulttype.name (). toLowerCase () + ":" +URL; - } to}Mybasecontroller
4.SpringMVC Configuration
<bean name= "Viewresolver"class= "Org.matrixframework.common.viewresolver.MultipleViewResolver" > <property name= "Defaultviewresolvername" Value= "jsp"/> <property name= "resolvers" > <map> <entry key= "JSP" > <!--JSP View Resolver--<bean name= "Internalresourceviewresolver"class= "Org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name= "Viewcla SS "value=" Org.springframework.web.servlet.view.JstlView "/> <property name=" prefix "value="/ web-inf/views/jsp "/> <property name=" suffix "value=". jsp "/> </bean > </entry> <entry key= "JSON" > <!--JSON view parser-- <bean name= "Jsonviewresolver"class= "Com.framework.common.viewresolver.JsonViewResolver" > <property name= "View" > <beanclass= "Org.springframework.web.servlet.view.json.MappingJackson2JsonView" > <property name= "ContentType" value= "text/html; Charset=utf-8 "/> </bean> </property> & lt;/bean> </entry> </map> </property> </bean>
SPRINGMVC Customizing the Multi-View parser