Commit ce2eecf4 by Patryk Czarnik

Gotowe proste przykłady do serwletów

parent 238ebbed
package parametry;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Parametry")
public class Parametry extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
// W zapytaniu mogą zostać przysłane "parametry".
// W przypadku zapytania typu GET, parametry są zakodowane na końcu ścieżki URL
// .../adres?parametr1=wartość&parametr2=wartość
// w przypadku zapytań POST, parametry są przysłane w treści zapytania.
// W obu sytuacjach wartość parametru można odczytać za pomocą request.getParameter("NAZWA")
String imie = request.getParameter("imie");
out.println("Witaj " + imie + "!");
String wiekTekstowo = request.getParameter("wiek");
if(wiekTekstowo != null) {
int wiek = Integer.parseInt(wiekTekstowo);
if(wiek >= 18) {
out.println("Chodź na piwo");
} else {
out.println("Może czekoladę?");
}
}
}
}
package techniczne;
import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalTime;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// Można spróbować z takimi parametrami:
// http://localhost:8080/PC25-Serwlety/Info?x=Ala&y=Ola&x=Ela&x=Ula&z=Asia
@WebServlet("/Info") // mogłby być też wpis w web.xml
public class Info extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String teraz = LocalTime.now().toString();
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.addCookie(new Cookie("czas", teraz));
PrintWriter out = response.getWriter();
out.println("Halo halo");
out.println("ContextPath: " + request.getContextPath());
out.println("RequestURI: " + request.getRequestURI());
out.println("QueryString: " + request.getQueryString());
out.println();
out.println("LocalName: " + request.getLocalName());
out.println("LocalAddr: " + request.getLocalAddr());
out.println("LocalPort: " + request.getLocalPort());
out.println();
out.println("RemoteHost: " + request.getRemoteHost());
out.println("RemoteAddr: " + request.getRemoteAddr());
// itd.
out.println();
out.println("parametr x: " + request.getParameter("x"));
out.println("parametr y: " + request.getParameter("y"));
String[] wartosciX = request.getParameterValues("x");
out.println("x jako tablica: " + Arrays.toString(wartosciX));
out.println("Wszystkie parametry:");
for (Map.Entry<String, String[]> e : request.getParameterMap().entrySet()) {
String[] v = e.getValue();
out.println(" * " + e.getKey() + " : " + Arrays.toString(v));
}
out.println();
out.println("nagłówek Accept: " + request.getHeader("Accept"));
out.println("nagłówek User-Agent: " + request.getHeader("User-Agent"));
out.println("Wszystkie nagłówki:");
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String nm = headerNames.nextElement();
out.println(nm + ": " + request.getHeader(nm));
}
out.println();
out.println("Wszystkie ciastka:");
String poprzedniCzas = null;
Cookie[] cookies = request.getCookies();
if (cookies != null)
for (Cookie cooky : cookies) {
out.println("cookie " + cooky.getName() + " " + cooky.getValue());
if ("czas".equals(cooky.getName())) {
poprzedniCzas = cooky.getValue();
}
}
out.println("czas teraz : " + teraz);
out.println("czas poprzedni: " + poprzedniCzas);
}
}
...@@ -2,9 +2,49 @@ ...@@ -2,9 +2,49 @@
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Insert title here</title> <title>Aplikacja serwletowa &mdash; spis treści</title>
<link rel="stylesheet" type="text/css" href="styl.css">
</head> </head>
<body> <body>
<h1>Hello world</h1> <h1>Aplikacja serwletowa &mdash; spis treści</h1>
<h3>Podstawy</h3>
<ul>
<li><a href="stronka.html">zwykła strona HTML</a></li>
<li><a href="Hello">serwlet Hello</a></li>
<li><a href="Ping">Ping</a></li>
<li><a href="Info">Info</a> - informacje techniczne o zapytaniu</li>
<li><a href="Info?x=Ala&y=Ola&x=Ela&x=Ula&z=Asia">Info z prametrami</a></li>
<li><a href="godzina">która godzina</a></li>
</ul>
<h3>Pierwsze parametry</h3>
<ul>
<li><a href="Parametry">Parametry</a> - bez parametrów</li>
<li><a href="Parametry?imie=Ala">Parametry?imie=Ala</a> - tylko imię</li>
<li><a href="Parametry?imie=Ala&wiek=30">Parametry?imie=Ala&amp;wiek=30</a> - pełnoletnia</li>
<li><a href="Parametry?imie=Ala&wiek=14">Parametry?imie=Ala&amp;wiek=14</a> - niepełnoletnia</li>
<li><a href="Rozmowa">Rozmowa</a> - prosta rozmowa</li>
</ul>
<h3>Kalkulator</h3>
<ul>
<li><a href="Kalkulator1">Kalkulator1</a> - tylko dodawanie</li>
<li><a href="Kalkulator2">Kalkulator2</a> - wiele działań, GET</li>
<li><a href="Kalkulator3">Kalkulator3</a> - formularz typu POST</li>
<li><a href="Kalkulator4">Kalkulator4</a> - zrefaktoryzowany POST</li>
</ul>
<h3>Kalkulator z historią</h3>
<ul>
<li><a href="Kalkulator5">Kalkulator 5</a> - historia w zmiennej instancyjnej</li>
<li><a href="Kalkulator6">Kalkulator 6</a> - historia w sesji (inicjalizacja if-em)</li>
<li><a href="Kalkulator7">Kalkulator 7</a> - historia w sesji (inicjalizacja listenerem)</li>
<li><a href="Kalkulator8">Kalkulator 8</a> - historia w sesji i kontekście aplikacji (inicjalizacja listenerem)</li>
<li><a href="Kalkulator9">Kalkulator 9</a> - wersja z <code>forward</code> i widokiem JSP</li>
</ul>
</body> </body>
</html> </html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tytuł strony</title>
<link rel="stylesheet" type="text/css" href="styl.css">
</head>
<body>
<h1>Przykładowa strona</h1>
<p>Ala ma kota a Ola ma psa.</p>
<ul>
<li style="color:red">Warszawa</li>
<li style="color:green">Kraków</li>
<li>Gdańsk</li>
</ul>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tytuł strony</title>
<style type="text/css">
body {
background-color: yellow;
}
li {
list-style: square;
}
</style>
</head>
<body>
<h1 style="color:blue;font-style:italic">Przykładowa strona</h1>
<p>Ala ma kota a Ola ma psa.</p>
<ul>
<li style="color:red">Warszawa</li>
<li style="color:green">Kraków</li>
<li>Gdańsk</li>
</ul>
</body>
</html>
\ No newline at end of file
body {
background-color: #FFFFDD;
}
h1 {
text-align: center;
color: blue;
}
form {
width: 600px;
background-color: #AAEEFF;
margin: 2em auto;
padding: 0.75em;
border: 4px solid blue;
}
.wynik {
width: 600px;
background-color: #CCFFDD;
margin: 2em auto;
padding: 0.75em;
border: 4px outset green;
}
.error {
width: 600px;
background-color: white;
color: red;
margin: 2em auto;
padding: 0.75em;
border: 4px double red;
}
Utwórz nowy serwlet Kalkulator obsługujący doGet
- ContentType text/html
- formularz, który pozwala wpisać dwie liczby i znak działania
→ (docelowo wybór działania zrobimy za pomocą <select><option>
ale na początku może być input)
- jeśli w parametrach zostaną przysłane liczby i działanie,
to wykonaj obliczenie i umieść na stronie wynik tego działnia
if(liczba1 != null && liczba2 != null)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment