IMPORTANT! Completed tasks are evaluate at the final result and the manner of applying the knowledge gained in the course
The Java EE 5 Tutorial
The Definitive Guide to HTML5 WebSockets
Handling form data with Servlet
Preventing Double Form Submission from the Client
Post/Redirect/Get
REST API Rulebook
Remarks: Stick to Servlet API 2.5 for now.
Забележка: Използвайте примерни теми, с които да подобрите визуализацията на потребителския интерфейс
-
Да се направи страница съдържаща 3 линка. До всеки линк да се изписва броят пъти които е натиснат. Броенето да става от Servlet който връща необходимата информация обратно на същата страница. Да се използва GET метода за изпращане на заявката до Servlet-а.
-
Да се направят 3 страници изпращащи request само до един Servlet, който трябва да разпознава от коя страница получава request и да предават името й на друга страница, която да го визуализира.
-
Да се направят 4 страници. Една от тях съдържаща 3 радиобутона - съответстващи на другите 3 страници. При избор на радиобутон да се праща информация до Servlet и той да отваря избраната страница. На всяка страница да се изписва поздравително съобщение само когато се отваря за първи път.
-
Да се направи сайт за интернет банкиране, предлагащ следната функционалност:
- Регистриране на нов потребител (въвежда се само username и password)
- Проверка текущото състояние на сметката
- Добавяне на пари в сметката
- Теглене на пари от сметката
- Показване на всичките транзакции във формат (Дата, Потребител, Операция(Deposit/Withdraw), Amount)
- Транзакациите трябва да се показват на страници (20 на страницата с next,prev бутони или с номериране ако е възможно)
- Да се реализира запазване на информацията в база данни.
- да се имплементира authentication и authorization (потребител, който не eвлязъл в системата да няма достъп до функционалност, която изисква логин).
- при показване на главната страница да се пoказва колко потребителя рабoтят със системата
- валидациите трябвa да се направят с регулярни изрази и да са от страна на сървъра ( server side validations)
- за реализацията на приложението да се ползва MySQL
Забележка: Да се прихващат възникналите изключения и адекватно да се обработват (примери за изключения: опит за логване на нерегистриран потребител, вписване на невалидни данни във формата и т.н.). Да се помисли за начина на визуализиране на грешките на потребителя. Да се разгледа стандартния начин за обработка и визуализиране на грешки (Error Page).
public final class Jetty {
private final Server server;
public Jetty(int port) {
this.server = new Server(port);
}
public void start() {
ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContext.setContextPath("/");
servletContext.addEventListener(new ServletContextListener() {
public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext servletContext = servletContextEvent.getServletContext();
servletContext.addServlet("homeServlet", new HttpServlet() {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("Hello!");
writer.flush();
}
}).addMapping("/");
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
});
ContextHandler staticResourceHandler = new ContextHandler();
staticResourceHandler.setContextPath("/assets");
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase("static");
staticResourceHandler.setHandler(resourceHandler);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{staticResourceHandler, servletContext});
server.setHandler(handlers);
try {
server.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}The snipped shown above requires the following folder structure:
src/main/java
static/app.css
So the "/" renders result of Home Servlet whether the "/assets/app.css" renders the CSS stored in the static folder.
PrintWriter writer = resp.getWriter();
resp.setContentType("text/html");
ServletContext context = getServletContext();
byte[] content = ByteStreams.toByteArray(context.getResourceAsStream("/WEB-INF/LoginPage.html"));
String pageContent = new String(content, "UTF-8");
writer.println(pageContent);
writer.flush();The complete example could be found Here
Servlets - From Practicals and Projects , Learn Web Applications With Java