import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import weblogic.html.*; class CurrentStyle extends StringElement { CurrentStyle(String val) { super(new StringElement(val) .asFontElement("+2") .asBoldElement() .asCenteredElement()); } } class ExtendedTitleStyle extends StringElement { ExtendedTitleStyle(String val) { super(new StringElement(val) .asFontElement("+1") .asBoldElement() .asCenteredElement()); } } class ExtendedDayStyle extends StringElement { ExtendedDayStyle(String val) { super(new StringElement(val) .asFontElement("+1")); } } class ExtendedTempStyle extends StringElement { ExtendedTempStyle(String val) { super(new StringElement(val) .asFontElement("+1") .asCenteredElement()); } } class ImageStyle extends CenteredElement { ImageStyle(String src) { super(new ImageElement(src).setWidth(48).setHeight(35)); } } public class WeatherHtmlKonaRevised extends HttpServlet { static final ImageStyle sunny = new ImageStyle("/images/sunny.gif"); static final ImageStyle rainy = new ImageStyle("/images/rainy.gif"); // Some static final variables to populate the page... // These would normally come from a database or // maybe another servlet that retrieved it as POST data. static final int currentTemp = 70; static final ImageStyle currentImage = sunny; static final String[] forecastDay = { "Thursday", "Friday", "Saturday" }; static final ImageStyle[] forecastImage = { sunny, sunny, rainy }; static final int[] forecastHi = { 82, 82, 73 }; static final int[] forecastLo = { 58, 65, 48 }; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); // Get a new page ServletPage page = new ServletPage(); // Set its title String title = "Sebastopol Weather Forecast"; page.getHead().addElement(new TitleElement(title)); // Get the body HtmlContainer body = page.getBody(); // Make a table, and add it to the body (even before it's filled) TableElement tab = new TableElement() .setCellPadding(0) .setCellSpacing(0) .setBorder(1) .setWidth("60%"); body.addElement(new CenteredElement(tab)); // Create the first row HtmlElement conditions = new CurrentStyle("Current Conditions"); HtmlElement image = currentImage; HtmlElement temp = new CurrentStyle(currentTemp + "°"); // degree symbol tab.addElement(new TableRowElement() .addElement(new TableDataElement(conditions)) .addElement(new TableDataElement(image)) .addElement(new TableDataElement(temp) .setColSpan(2))); // Create the second row HtmlElement extended = new ExtendedTitleStyle("Extended Forecast"); HtmlElement hi = new ExtendedTitleStyle("Hi"); HtmlElement lo = new ExtendedTitleStyle("Lo"); tab.addElement(new TableRowElement() .addElement(new TableDataElement(extended) .setColSpan(2)) .addElement(new TableDataElement(hi)) .addElement(new TableDataElement(lo))); // Create the forecast rows for (int i = 0; i < forecastDay.length; i++) { HtmlElement day = new ExtendedDayStyle(" " + forecastDay[i]); HtmlElement daypic = forecastImage[i]; HtmlElement dayhi = new ExtendedTempStyle("" + forecastHi[i]); HtmlElement daylo = new ExtendedTempStyle("" + forecastLo[i]); tab.addElement(new TableRowElement() .addElement(new TableDataElement(day)) .addElement(new TableDataElement(daypic)) .addElement(new TableDataElement(dayhi)) .addElement(new TableDataElement(daylo))); } // Send the page to the response's output stream page.output(res.getOutputStream()); } }