java Tapestry 4.1.2 입문 설명 강좌 1/2페이지

6970 단어 javaTapestry4
간단한 소개는 링크에 신경 쓰지 마세요!요청 (http request) 이 어디에 도착했는지 신경 쓸 필요가 없습니다!응답 (http response) 을 어디로 돌려야 하는지 신경 쓸 필요가 없습니다!Tapestry는 밑바닥에 구축된request-resonse 모델로 Servlet 기술을 바탕으로 추상적으로 구성 요소에 개발한 모델입니다.Tapestry의 관심사는 페이지, 구성 요소, 이벤트, 대상, 방법, 속성!jar 패키지 1을 설치하고 Tapestry 압축 해제 디렉터리에 있는lib 디렉터리에 있는jar 패키지를 WEB-INF/lib 디렉터리로 복사합니다.반복된 패키지 삭제 (commons-logging.jar/javassist.jar/ognl-2.6.11.jar) 2, 웹.xml에 추가:

<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
이것은 Tapestry의 중앙 컨트롤러입니다.Tapestry 페이지의 표시는 모든 요청이 이 Servlet에 전송됩니다.실례1: 가장 간단한 Tapestry 프로그램은 WebRoot에 Home을 추가합니다.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
Tapestry
</body>
</html>
및 사이트 방문:http://localhost:8088/[context path]/app 결과 페이지에 Home이 표시됩니다.html 안의 내용.이것은 Tapestry가 항상'Home'이라는 페이지를 포함하기 때문에 기본적으로 루트 경로 아래의 Home입니다.html 실례 2: 간단한 동적 내용 추가 Home.html 변경:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
Tapestry
:<span jwcid="@Insert" value="ognl:new java.util.Date()"> </span>
</body>
</html>
사이트 재방문:http://localhost:8088/[context path]/앱은 이 페이지에서 Tapestry의 Insert 구성 요소(Component)를 사용합니다.그것은ognl 표현식을 통해 전달되는 매개 변수를 가지고 있다.응용 서버의 시작 매개 변수에 추가:-Dorg.apache.tapestry.disable-caching=true, 페이지 템플릿을 수정할 때마다 서버를 다시 시작하는 것을 피할 수 있습니다.jwc = Java Web Component 실례 3: 링크를 만들고 특정한 페이지를 가리킨다

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
Tapestry
:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home"> </a>
</body>
</html>
. 이번에는 하나의 PageLink 구성 요소를 통해 홈 페이지를 가리키면 PageLink 구성 요소는 자동으로 홈 페이지를 가리키는 링크를 생성한다(이 링크는 신경 쓸 필요가 없다!).실례4: 간단한 계수기는 지금까지java류와 관련이 없지만 Tapestry를 성공적으로 실행시켰습니다!자바 코드를 좀 쓸 때가 됐어요.사용자가 "계수기 1"을 클릭할 때마다 이 계수기를 1을 추가해서 페이지에 이 결과를 표시하는 계수기를 만들고 싶습니다.전통적인 요청-응답 모드에서 우리가 이 문제에 대해 고려해야 할 것은 요청을 제출하고 해당하는 Action을 만들어서 이 요청을 받아들이고 계수기의 값을 유지한 다음에 성공적으로 방향을 바꾼 페이지를 결정하여 결과를 페이지에 표시하는 것이다.Tapestry에서 우리가 고려해야 할 것은: 어느 페이지에서 이 사건을 처리하고 그 결과가 어떻게 페이지에 나타날까요?다음은 홈.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
Tapestry
:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home"> </a>
<p>
:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick"> 1</a>
</body>
</html>
DirectLink가 지정한listener는:doClick입니다. 이것은 이벤트를 촉발합니다. 실제로는doClick() 방법을 호출하는 것입니다.doClick() 메서드는 어디에 쓰입니까?현재 페이지의 동적 데이터는 간단하게 얻을 수 없기 때문에 현재 페이지에 대응하는 클래스를 만들어야 합니다. 우리의 방법은 이 클래스에 만들 것입니다.

package com.bjsxt.crm.web.tapestry.test;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.html.BasePage;
public abstract class Home extends BasePage {
@Persist
public abstract int getCounter();
public abstract void setCounter(int count);
public void doClick(){
int counter = getCounter();
counter = counter + 1;
setCounter(counter);
}
}
주의: 이 예에서 클래스 이름은 홈으로 정의해야 한다.listener의 이름은 doClick입니다. doClick () 이 아니라 웹 - inf 디렉터리에 프로필을 추가해야 합니다: app.응용 프로그램

<?xml version="1.0"?>
<!DOCTYPE application PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
<application>
<meta key="org.apache.tapestry.page-class-packages" value="com.bjsxt.crm.web.tapestry.test"/>
</application>
설정의 주요 목적은 Tapestry가 어떻게 페이지와 페이지 종류를 연결하는지 이해하도록 하는 것이다.인스턴스 5: 매개변수가 있는 카운터 Home.html 변경:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
Tapestry
:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home"> </a>
<p>
:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:1"> 1</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:5"> 5</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:10"> 10</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:clearCounter"> </a>
</body>
</html>
1 다음 페이지 전문을 읽다

좋은 웹페이지 즐겨찾기