Przeanalizuj i przetestuj poniższy przykład serwletu obsługującego formularz html. Użyj serwera Resin ( lokalnie ). Informacje dotyczące umieszczenia serwletu i mapowania url znajdziesz w pliku readme.txt w katalogu głównym Resina.
Napisz serwlet pobierający pytania z pliku tekstowego (zob. JavaI 5.3), losujący zestawy pytań (np. java.util.Random) i generujący dynamicznie stronę www z wylosowanym zestawem pytań.
<form action="/servlet/GenTest" method="post"> <b>Nazwisko: </b><br><input type="text" name="nazwisko"> <input type="submit" value="Rozpocznij test"> </form>
import java.io.*; import java.util.*; import javax.servlet.http.*; import javax.servlet.*;
public class GenTest extends HttpServlet { String str; //pole (zmienna składowa klasy) public void init() { //metoda wywoływana jednokrotnie, podczas inicjalizacji serwletu str="Test z Geografii"; } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //metoda wywoływana res.setContentType("text/html"); //w celu obsłużenia PrintWriter pw = res.getWriter(); //żądania typu POST pw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); pw.println(); pw.println("<head>"); pw.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">"); pw.println(); pw.println("<title>Test</title>"); pw.println("</head>"); pw.println(); pw.println("<body bgcolor=white>"); pw.println(); pw.println("<h1>"+str+"</h1>"); pw.println(); String param=req.getParameter("nazwisko"); //parametr //z formularza html pw.println("Nazwisko : " + param + "<hr>"); pw.println("<form action=/servlet/Wyniki method=post>"); pw.println("<H4>Najdluższa rzeka świata?</H4>"); //polskie znaki pw.println("<P>"); //w standardzie pw.println("<INPUT type=radio name=pyt1 value=odp1> Wisła <BR>"); //unicode pw.println("<INPUT type=radio name=pyt1 value=odp2> Odra <BR>"); pw.println("<INPUT type=radio name=pyt1 value=odp3> Dunaj <BR>"); pw.println("<INPUT type=radio name=pyt1 value=odp4> Nil <BR>"); pw.println("<H4>Najwyższy szczyt świata?</H4>"); pw.println("<P>"); pw.println("<INPUT type=radio name=pyt2 value=odp1> Babia Góra <BR>"); pw.println("<INPUT type=radio name=pyt2 value=odp2> Łysa Góra <BR>"); pw.println("<INPUT type=radio name=pyt2 value=odp3> Mount Everest <BR>"); pw.println("<INPUT type=radio name=pyt2 value=odp4> K2 <BR>"); pw.println("<br><hr><input type=\"submit\" value=\"Send\">"); pw.println("</form>"); pw.println("</body>"); pw.close(); } } |