The code shows how to use a servlet to generate SVG, in this case demonstrating Greatest Common Divisor properties of number pairs.
<html> <body> <% } %> <%! public static long GCD(long a, long b){ if (b==0) return a; return GCD(b,a%b); } %> <svg width="1030" height="1080" version="1.1" xmlns="http://www.w3.org/2000/svg" onload="Init()"> <script type="text/ecmascript"> <![CDATA[ var evtT1; function Init(evt) { evtT1 = document.getElementById("evtText1"); } function Highlight(evt) { evt.target.setAttribute("opacity", "1.0"); evtT1.firstChild.nodeValue = "Mouse over: " + evt.target.getAttributeNS(null,"id"); } function Unhighlight(evt) { evt.target.setAttribute("opacity", "0.8"); evtT1.firstChild.nodeValue = ""; } ]]> </script> <rect width="100%" height="100%" fill="lightgrey"/> <g font-size="16px" font-family="Arial"> <text x="20" y="20" color="black" id="evtText1" > </text> </g> <% for (long n=1 ; n< 50; n+=1){ for ( long m = 1; m < 50 ; m+=1 ){ long gcd=GCD(n,m); if ( gcd < 2 ) { %> <rect x="<%= n * 20 %>" y="<%= 30 + m * 20 %>" width="19" height="19" fill="darkgrey" opacity="0.8" onmouseover="Highlight(evt);" onmouseout="Unhighlight(evt);" id="<%= n %>,<%= m %>" gcd="<%= gcd %>" /> <% } else { %> <rect x="<%= n * 20 %>" y="<%= 30 + m * 20 %>" width="19" height="19" fill="darkred" opacity="0.8" onmouseover="Highlight(evt);" onmouseout="Unhighlight(evt);" id="<%= n %>,<%= m %>" gcd="<%= gcd %>"/> <% } } } if (browserType.indexOf("MSIE") > 0) { %> </svg> <% }else{ %> </svg> </body> </html> <% } %>It will show up like (demonstrating 'mouse over'):