//url
http://java.taketours.com:8080/dev_project/testhotel.do?cmd=filterTour
http://java.taketours.com:8080/dev_project/testhotel.do?cmd=searchTour
首先,控制器层Controller:
package com.gotobus.controller.search;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.jca.context.SpringContextResourceAdapter;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.gotobus.controller.BaseController;
import com.gotobus.web.QueryInterface;
@Controller
public class TestHotelController extends BaseController{
@RequestMapping("testhotel")
public ModelAndView testHotelApi(HttpServletRequest request,HttpServletResponse response){
String cmd = getParameter(request, "cmd");
//根据前台传参cmd 的不同, 分流到不同的实现类完成相应的操作, 达到解耦的目的
QueryInterface queryInterface = (QueryInterface)SpringContext.getBean(cmd);
queryInterface.query();
return null;
}
}
//查询结构(QueryInterface)
package com.gotobus.web;
public interface QueryInterface {
public void query();
}
//实现类
package com.gotobus.web.impl;
import com.gotobus.web.QueryInterface;
public class SearchTourQuery implements QueryInterface{
@Override
public void query() {
System.out.println("search tour ");
}
}
//工具类
package com.gotobus.controller.search;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;
@Service
public class SpringContext implements ApplicationContextAware{
private static ApplicationContext applicationContext;
public static Object getBean(String name){
System.out.println("name:" + name + "duxiang:" + applicationContext);
return applicationContext.getBean(name);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
}
Bean的配置:
<bean id="searchTour" name="searchTour" class="com.gotobus.web.impl.SearchTourQuery"/>
在系统启动的时候,会自动加载spring文件, 完成bean 的初始化. 可以看到 在控制器中, 我通过一个cmd 的参数进行了分流的操作,
如果,下次来一filterSearch, 或者,手机端的搜索, 我们只需要通过这个cmd 参数进行分流, 然后定义一个实现类完成相应的参数获取,业务处理.
使相似行为的不同操作解耦. 达到高效开发的目的.
相似案例
afId=0&mod=2&dst=Cuzco&scf=1&onlyAvail=false&r1a=2&r1c=0&r1ca=11&brnd=0&lsb=0&pg=1&ctb=false
http://www.touricoholidays.com/en/PageHotels.aspx?tab=hotel&performSearch=1&isTabClick=true#st=2&cin=07/31/2015&cout=08/01/2015&afId=0&mod=2&dst=Cuzco&scf=1&onlyAvail=false&r1a=2&r1c=0&r1ca=11&brnd=0&lsb=0&pg=1&ctb=false