Obsah
<html><head>
<title>#showWebsiteTitle()</title>
<style type="text/css">#includePage("_css")</style>
#showRSSAutodiscoveryLink()
</head>
<body><div id="Content">
<center>
<h1>#showWebsiteTitle()</h1>
<p class="descrip">#showWebsiteDescription()</p>
#showWeblogCategoryChooser()<br>
</center>
#showWeblogEntries("_day" 15)
<hr />
#showReferers( 40 25 )
</div></body></html>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-faces"
prefix="s" %>
<f:use_faces>
<s:form action="/listFlights">
<h:input_text id="fromCity"
valueRef="FlightSearchForm.fromCity"/>
<h:input_text id="toCity"
valueRef="FlightSearchForm.toCity"/>
<h:command_button id="submit" action="success" label="Submit" commandName="submit" />
<h:command_button id="reset" action="reset" label="Reset"
commandName="reset" />
<s:errors/>
</s:form>
</f:use_faces>
Příklad konfigurace Java Security Manageru (Apache Tomcat 5):
The permission granted to your JDBC driver
grant codeBase "jar:file:${catalina.home}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
permission java.net.SocketPermission "dbhost.mycompany.com:5432", connect";
};...
// These permissions apply to the container's core code, plus any additional libraries installed in the "server" directory
grant codeBase "file:${catalina.home}/server/-" {
permission java.security.AllPermission;
};
Řada rámců podporuje deklarativní specifikaci uživatelských vstupů
datový typ, formát, přípustné rozmezí hodnot...
a jejich dekódování
znakové sady, různé národní zvyklosti
řízení toku při vyplňování formulářů (průvodci jako u desktopových GUI)
automatické generování fyz. podoby form.
Příklad specifikace zpracování uživ. vstupů - rámec Struts
<form-validation>
<formset>
<form name="addSubjectForm">
<field property="subjID"
depends="required" page="1">
<arg0 key="admin.subject.missing.ID"/>
</field>
<field property="subjName"
depends="required" page="1">
<arg0 key="admin.subject.missing.name"/>
</field>
<field property="groupID"
depends="required" page="2">
<arg0 key="admin.subject.missing.groupID"/>
</field>
</form>
<form name="addTaskForm">...
<!-- Action Mapping Definition -->
<action-mappings>
<!-- List Flights action -->
<action path="/listFlights"
type="foo.bar.FlightSearchAction"
name="FlightSearchForm"
scope="request"
input="/faces/FlightSearch.jsp">
<forward name="success" path="/faces/FlightList.jsp"/>
</action>
</action-mappings>
S minimálním "obtěžováním" programátora zajistit kontrolu nad chodem aplikace ve fázi tvorby, ladění i ostrého provozu
Java nabízí několik "logging API":
Pomocí Aspect-oriented Programming lze logování řešit ještě méně invazivně
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<c:if test="${lang==null}">
<fmt:setBundle basename="com.heaton.bundles.Forum"
var="lang" scope="session"/>
</c:if>
<c:if test="${param.lang!=null}">
<fmt:setLocale value="${param.lang}"/>
<fmt:setBundle basename="com.heaton.informit.I18NBundle"
var="lang" scope="session"/>
<c:redirect url="index.jsp"/>
</c:if>
<html><head><title>I18N Example</title></head>
<body>
<h1><fmt:message key="login.pleaselogin" bundle="${lang}"/></h1>
<form method=post action=main.jsp>
<fmt:message key="login.uid" bundle="${lang}"/><input name=uid><br/>
<fmt:message key="login.pwd" bundle="${lang}"/><input name=pwd><br/>
<input type="submit" name="action" value="<fmt:message
key="login.title" bundle="${login}"/>">
</form>
<h1><fmt:message key="login.language" bundle="${lang}"/></h1>
<ul>
<li><a href="index.jsp*lang=en">
<fmt:message key="login.english" bundle="${lang}"/>(English)</li>
<li><a href="index.jsp*lang=es">
<fmt:message key="login.spanish" bundle="${lang}"/>(Spanish)</li>
</ul>
</body></html>
Web Application Framework Research project - http://www.waferproject.org.