Mason은 Java Web Applications에서 사용되도록 설계된 REST 리소스 용 오픈 소스의 가벼운 데이터 액세스 계층입니다. 들어오는 API 요청을 처리하고 매개 변수를 이러한 리소스로 라우팅합니다.
< dependency >
< groupId >com.metamug</ groupId >
< artifactId >mason</ artifactId >
< version >4.8</ version >
</ dependency >데이터베이스 쿼리 편집 및 요청 처리에 JSP 태그를 사용하십시오. Java 클래스를 컴파일/배포하지 않고 REST API를 배치하는 데. JSP 태그로 REST API를 구축하십시오.
< jsp : directive .include file = " ../fragments/mason-init.jspf " />
<%-- customer.jsp --%>
< m : resource >
< m : request method = " GET " >
< sql : query var = " customers " dataSource = " ${datasource} " >
SELECT name, address, phone, type from retail_customer
</ sql : query >
< c : set target = " ${output} " property = " customers " value = " ${customers} " />
</ m : request >
</ m : resource >샘플 프로젝트
Mason은 평범한 오래된 JSP (깔끔한 태그 라이브러리 포함)를 REST 자원으로 바꿉니다. Mason은 Resource JSPS에서 스크립트를 사용하는 것을 권장하지 않습니다.
JSP에서 요청을 get, post, put, 삭제할 수 있습니다. Mason은 Tomcat 9로 테스트되었습니다 .
JSP 구성에 대해 자세히 알아보십시오. https://tomcat.apache.org/tomcat-90-doc/jasper-howto.html
위의 예에서 볼 수 있듯이 리소스 JSP 파일 내에 데이터베이스 쿼리를 작성하거나 {webAppDir}/WEB-INF/classes/query.properties 파일에 배치하고 재사용을 위해 JSP 파일 내부에서 참조 할 수 있습니다.
Accept 헤더를 기반으로 SQL 결과를 JSON/XML로 변환합니다MVN으로 프로젝트를 복제하고 포장하십시오
mvn clean package
그 후 대상 폴더 내에서 mtg-mason-1.0.jar를 찾을 수 있습니다. 이 JAR을 Java WebApp의 종속성으로 사용할 수 있습니다.
Mason Jar 파일을 {webAppDir}/WEB-INF/lib 에 배치하십시오
jstl jar 파일을 다운로드하여 {webAppDir}/WEB-INF/lib 안에 배치하십시오
폴더 {webAppDir}/WEB-INF/resources/{resourceVersion} 작성하고 JSP 파일을 여기에 배치하십시오. 예를 들어 mywebapp/WEB-INF/resources/v1.0/foo.jsp .
JSP 파일 내에서 mtg-mason.tld를 가져옵니다. 이 Taglib는 Mason Jar 안에 존재하며 MTG 접두사를 사용할 수 있습니다. JSTL Taglib도 가져와야합니다. JSP 파일에는 다음이 포함되어 있어야합니다
<% @taglib uri = " http://java.sun.com/jsp/jstl/core " prefix = " c " %>
<% @taglib uri = " http://java.sun.com/jsp/jstl/sql " prefix = " sql " %>
<% @taglib uri = " mtg-mason.tld " prefix = " m " %>
<%@ page trimDirectiveWhitespaces="true" %>{webAppDir}/WEB-INF/web.xml 내부에 다음 필터와 리스너를 추가하십시오 < filter >
< filter-name >Router</ filter-name >
< filter-class >com.metamug.mason.Router</ filter-class >
</ filter >
< filter-mapping >
< filter-name >Router</ filter-name >
< url-pattern >/*</ url-pattern >
< init-param >
< param-name >datasource</ param-name >
< param-value >jdbc/mason</ param-value >
</ init-param >
</ filter-mapping >JSP 리소스에 대한 모든 요청은이 필터를 통해 라우팅됩니다.
6. {webAppDir}/META-INF/context.xml 파일에서 데이터 소스를 구성하십시오.
샘플 webapp을 볼 수 있습니다.
Javaee-Web-API를 제외하고는 응용 프로그램 서버에 존재하고 HSQL, MySQL 또는 PostgreSQL 종속성에 포함되기 때문입니다. 우리는 또한 Oracle Database를 지원하지만 라이센스로 인해 Oracle JDBC 드라이버를 배송 할 수 없습니다. 따라서 Oracle 데이터베이스를 사용하는 경우 프로젝트의 종속성으로 드라이버를 수동으로 설치해야합니다.
아래 링크에서 동일하게 수행하는 방법에 대한 지침 (중 하나를 참조 할 수 있음). https://www.mkyong.com/maven/how-to-add-oracle-jdbc-maven-local-repository/ 또는 https://stackoverflow.com/a/1074971/4800126
Mason은 application/xml , applicaton/json 및 application/json+dataset 지원합니다. https://metamug.com/docs/api-request
메이슨은 스크립트를 작성하기 위해 그루비를 지원합니다. 스크립트를 {webAppDir}/WEB-INF/scripts 에 보관해야합니다
예제 스크립트
// test.groovy
def params = _request . getParams()
res[ ' message ' ] = ' Hello ' + params[ ' name ' ] JSP 리소스에서 script 태그를 사용하여 스크립트를 호출 할 수 있습니다.
< m : script file = " test.groovy " var = " res " />이 저장소를 포크하고 나열된 문제에 대해 PR을 제출하십시오. 이 프로젝트에 대한 기부금은이 프로젝트에서 개인 역량으로 일하는 개별 개발자에게 지불됩니다. 그들의 공헌에 대해 그들에게 보상하고 메이슨을 커뮤니티 프로젝트로 유지합니다.