jquery + JSonView + spring + ibatis 인 스 턴 스

최대한 경량급, 최대한 의존 하지 않 는 다 는 원칙 에 따라 이 조합 을 선택 했다.주요 사고방식 은 전단 jquery 가 getJSON 으로 데 이 터 를 얻 은 다음 에 보 여주 고 페이지 리 셋 을 줄 이 며 jsp 의 사용 을 줄 이 는 것 이다. 데이터 층 은 필요 에 따라 ibatis 나 hibernate 를 선택한다.
ibatis 설정 은 붙 이지 않 습 니 다. 다음은 spring 의 주요 설정 입 니 다. annotation 을 사용 하여 설정 해 야 할 것 도 적 습 니 다.
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
	<property name="configLocation" value="WEB-INF/config/SqlMapConfig.xml" />
</bean>	
<bean id="personDao" class="net.dao.PersonDao">
	<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" >
	<property name="mediaTypes">
		<map>
			<entry key="json" value="application/json"/>
		</map>
	</property>
	<property name="defaultViews">
		<list>
			<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
		</list>
	</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
	<property name="order" value="1" />
</bean>

자바 류 코드 세 개 는 간단 합 니 다. 주요 의 미 를 표현 하면 됩 니 다.
public class PersonDao extends SqlMapClientDaoSupport {
//      ,    ,     
}

@Service("personService")
public class PersonServiceImpl implements PersonService {

	@Autowired
	private PersonDao personDao;
	//         sql
	public List findByLastName(String lastName) {
		return  personDao.getSqlMapClientTemplate().queryForList("getPerson");
	}
}

@Controller
@RequestMapping("/person/**")
public class PersonController {

	@Autowired
	private PersonService personService;
	
	@RequestMapping(value = "/person/{id}", method = RequestMethod.GET)
	public String show(@PathVariable("id") Long id, ModelMap modelMap) {
		Assert.notNull(id, "Identifier must be provided.");
		modelMap.addAttribute("person", personService.findByLastName(id.toString()));
		return "person/show";
	}
}

웹. xml 에 DispatcherServlet 맵 *. json 요청 을 설정 하고 jquery 는 json 대상 으로 돌아 가 기 를 요청 합 니 다.imList 는 표, 드 롭 다운 목록 등 을 만 들 수 있 습 니 다.jqgrid 는 jquery 보다 큽 니 다. 표시 만 한다 면 이 몇 K 밖 에 없 는 작은 플러그 인 을 사용 하 세 요.(IE8 에 문제 가 있어 서 직접 고 쳐 야 해 요)
<html>
 <head>
    <meta http-equiv = "content-type" content = "text/html; charset=UTF-8" />
    <script language="javascript" type="text/javascript" src="jquery.js"></script>
 	<script id="source" language="javascript" type="text/javascript">
	$(function() {
		
		$.getJSON("person/12.json", null, function(json){
		  	var result = json.person;
			//    
		});
	});
	</script>
 </head>
 <body>
	<div id="mytb"></div>
 </body>
</html>

2010 - 1 - 26 보충:
다음 설정 을 통 해 이니셜 소문 자 이름 에 따라 Controller 더하기 방법 명 을 제거 하여 url 맵 을 실현 할 것 을 약속 할 수 있 습 니 다. 클래스 에 url 을 쓰 지 않 아 도 됩 니 다. 설정 을 더욱 간소화 할 수 있 습 니 다.
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

아래 클래스 맵 보기 common / find
@Controller
public class CommonController {

	@Autowired
	private CommonService commonService;
	
	@RequestMapping
	public void find(@RequestParam("sqlid") String sqlid,
					WebRequest webRequest, ModelMap modelMap) {
		Map map = new HashMap();
		Map<String, String[]> parameter = webRequest.getParameterMap();
		// Map<String, String[]>  Map<String, String>
		Iterator<Entry<String, String[]>> it = parameter.entrySet().iterator();
	    while (it.hasNext()) {
	        Map.Entry<String, String[]> pairs = it.next();
	        if(pairs.getValue().length > 0)
	        	map.put(pairs.getKey(), pairs.getValue()[0]);
	    }
	    //  
	    List list = commonService.find(sqlid, map);
		modelMap.addAttribute("result", list);
	}
}

방법 매개 변 수 는 WebRequest 를 추가 할 수 있 을 뿐만 아니 라 다른 여러 가지 추가 할 수 있 습 니 다. 예 를 들 어 서버 에서 세 션 을 검증 하거나 처리 하 는 등 편리 하고 사용 할 수 있 습 니 다.예전 에는 어떤 언어 를 소개 하 는 것 이 효율 적 이 고, 쓰 는 것 이 매우 적 으 며, 많은 일 을 할 수 있다 고 생각 하지 도 않 았 다.지금 은 다른 언어 를 사용 할 기회 가 많아 져 서 편리 한 곳 을 보면 매우 좋아한다.고 개 를 돌려 자바 와 그 프레임 워 크 를 보 세 요. 제 요 구 는 설정 이 더 적 고 코드 가 더 적 습 니 다.spring 주 해 는 기본 약속 을 추가 하여 설정 을 줄 이 고 우리 가 쓸 코드 량 을 줄 이 며 자바 개발 의 효율 이 향상 되 었 습 니 다.
2010 - 4 - 16: 지금 은 주로 조회 의 응용 이 시원 하 다 고 생각 합 니 다. 자바 코드 는 200 줄 정도 밖 에 안 됩 니 다. (수요 가 간단 하지 않 습 니 다. 5 개 모듈, 각종 조회) ibatisl 은 10 여 개의 조회 sql 을 설정 하고 조건 은 ajax 가 보 낸 것 과 대응 합 니 다.
	var settings = {sid:"getpp",exchange:2,limit:50,cc_date:$("#date_input").val()};
	$.ajax({type: "POST",url:"../find.json", data:settings, success:function(json){
		//create grid
		},dataType:"json",error:function () {
			alert('     ,     ');
		}
	});
<select id="getpp" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">
		SELECT @rownum:=@rownum+1 rownum, t.* FROM (SELECT @rownum:=0) r, (
			SELECT company,SUM(amount) amount FROM XXXX WHERE 
			<isNotEmpty property="date">
			date=#date# 
			</isNotEmpty>
			<isEmpty property="date">
			date between #start_date# and #end_date# 
			</isEmpty>
			<isNotEmpty property="code">
			and code=#code#
			</isNotEmpty>
			<isEmpty property="code">
			and code like CONCAT('%', #name#, '%')
			</isEmpty>
			and EXCHANGE=#exchange#
			GROUP BY company
			ORDER BY amount DESC LIMIT #limit#
		) t
	</select> 

js 코드 는 6700 줄 을 썼 고 jqgrid 표 와 flot 로 그림 을 그 렸 습 니 다.페이지 를 새로 고치 지 않 는 응용 프로그램 이 라면 테스트 를 거 친 구성 요 소 를 사용 해 야 합 니 다. 이름 없 는 작은 구성 요 소 는 사용 할 수 없고 메모리 가 계속 증가 합 니 다.

좋은 웹페이지 즐겨찾기