JavaEE - Servlety

0

Witam,
Zaczynam przygodę z JavaEE, zakupiłem sobie książkę Java EE 6 Programowanie aplikacji WWW, żeby od czegoś zacząć, niestety zakłada ona programowanie w NetBeans. Ten kod wygenerowałem w Eclipsie, nie wiem czy to po tej stronie może leżeć jakiś błąd ?

Formularz wyświetla się ładnie, podajemy swoje imię, niestety klikając przycisk submit ("OK") otwiera się pusta strona internetowa ;/
Będę wdzięczny za pomoc.

plik index.jsp :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Hello World!</h1>
<form action="Hello.do">
	<input type="text" name="imie" />
	<input type="submit" value="OK" />
</form>
</body>
</html> 

Servlet:

 package pl.helion.jeeweb.HelloServlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html:charset=UTF-8");
		PrintWriter out = response.getWriter();
		try {
			String login = request.getParameter("imie");
			out.println("<html>");
			out.println("<head>");
			out.println("<title>Servlet HelloWorld</title>");
			out.println("</head>");
			out.println("<body>");
			out.println("<h1>Witaj, " + login + ", na tym swiecie! </h1>");
			out.println("</body>");
			out.println("</html>");
			
		} finally {
			out.close();
		}
		
	}
    public HelloServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

plik web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>pl.helion.jeeweb.HelloServlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/Hello.do</url-pattern>
  </servlet-mapping>
</web-app>
0

doPost i doGet powinny chyba cos robic, jak np. wolac processRequest?

0

Moze lekki offtop, ale nie wiem co zlego w tym, ze polecaja Netbeans. Moim zdaniem glowna zaleta NetBeans nad Eclipse jest latwa integracja z Mavenem (nie trzeba doinstalowywywac pluginow np. m2e), wbudowane narzedzie do testowania zapytan JPQL (znowu nie trzeba pluginow), mnostwo narzedzi ulatwiajacych prace z Java EE np. do JPA, generowanie encji z bazy, generowanie session beanow z encji itp.

Kiedys ludzie narzekali na problemy z integracja NetBeans JBoss, ale to juz przeszlosc. Mysle, ze nawet springowe projekty bym w tym pisal: uzywam w polaczeniu ze Spring Security i schemy XMLowe bez zadnego problemu sie autouzupelniaja itp. kwestia pobrania schema. Dla testu odpalilem nawet projekt nie JEE w Spring MVC i bez problemu: kwestia ustawienia zaleznosci pom.xml dla Mavena, IDE sobie bardzo dobrze z tym radzi.

Z wersji na wersje NetBeans zdaje sie coraz bardziej wymiatac. Naprawde nie rozumiem dlaczego wiekszosc developerow uzywa Eclipse: chyba z przyzwyczajenia. Jestem sklonny zrozumiec preferencje nad narzedzia JetBrains np. IntelliJ, ale kompletnie nie rozumiem fenomenu Eclipse w 2013 r.: chyba wynika tylko z tego, ze wydal go IBM, ktory ma sklonnosc do nadawania 'standardow przemyslowych' i developerzy sa przywyczajeni. Rozumiem, ze to fajna platforma do rozwijania wlasnych IDE (np. Directory Studio dla LDAP), wlasnych pluginow, ale kompletnie nie przekonalo mnie jako IDE ulatwiajace nauke JEE i zastanawie mnie ile pracy nalezy wlozyc w konfiguracje, aby to sensownie dzialalo.

Co do tematu, moze zamiast Servletow i JSF lepiej bedzie jesli sprobujesz zanurkowac w JSF i JPA: zbudujesz prosta aplikacje bazodanowa?
Fajne kontrolki:
http://primefaces.org/

Przykladowy tutorial jak zaczac zabawe z JSF:
https://netbeans.org/kb/docs/web/jsf20-intro.html

Zabawe z servletami zostawilbym na pozniej, bo dzis nie uzywa sie ich az tak czesto jak kiedys. Mi ksiazki nic nie daja jesli chodzi o JEE.

Pozdrawiam,

0

chętnie dołączę się do tematu bo jestem w niemal identycznej sytuacji jak autor, tylko juz troszke dalej w książce :) Co do niej samej to mam pewne zastrzeżenia ze jest troche "wodolejnie" napisana, ale to swoją drogą.

1.Moje pytanie brzmiałoby, czym jest dokładnie JSF? wikipedia podaje ze:

[...]Obecnie domyślną technologią widoku dla stron JSF jest technologia Facelets, jednak można korzystać także z innych rozwiązań (np. JSP lub XUL).

Także zastanawiam się, jak JSP może być warstwą widoku? przeciez nie ma żadnych ciekawych komponentów do UI, chyba przynajmniej tak mi sie wydaje:) mógłbyś lub ktoś chętny rozwinąć tę mysl z wiki, troche rozjaśnić sprawe? :P

2.I jeszcze pytanie co do stosu JavyEE i stosu Springa.
Mógłby ktoś przedstawić mi odpowiadające sobie.. "technologie" w obu tych stosach? przykład: w J2EE do UI stosujemy JSF a w Springu MVC (to akurat wiem :P) Ciekawi mnie jak to sie do siebie ma, na przyszłość.

3.Gdzies obiło mi się o uszy, że servlety i JSP to podstawa całej javy enterprise - stąd od nich należy zaczac. I prawde mówiąc troche ciężkie to, nie pod względem trudności ale mozolności. Nie wyobrażam sobie tymi skryptami z JSTL napisać jakas ciekawsza aplikacje sieciową, nawet glupie okno rejestracji aktualnie stwarza mi małe problemy
Stąd pytanie nr 3 brzmi: czego byś polecił się uczyć po kolei? słyszałem ze to bez różnicy, ale zawsze lepiej jest zacząć czymś co pokazuje nam efekty naszej pracy, wiadomo ze wtedy sie motywujemy i douczamy tych bardziej zawiłych i mniej "pokazujących" rzeczy. Mysle ze taki sposób nauki jest najsprawniejszy dlatego pytam o kolejność :)

0

AD 1.
"jak JSP może być warstwą widoku, przeciez nie ma żadnych ciekawych komponentów do UI, chyba przynajmniej tak mi sie wydaje" - wydaje się że bardziej chodzi Tobie o jakieś wodotryski, sprawdź sobie np. ASP.NET MVC, tam też nie ma żadnego 'ciekawego' komponentu. Mylisz pojęcia.

AD 2.
"Mógłby ktoś przedstawić mi odpowiadające sobie.. "technologie" w obu tych stosach? przykład: w J2EE do UI stosujemy JSF a w Springu MVC (to akurat wiem :P) Ciekawi mnie jak to sie do siebie ma, na przyszłość." - Wydaje Ci się że wiesz, a wygląda na to że nie masz pojęcia o czym piszesz. W J2EE możesz stosować JSP jak i JSF jak i pare innych technologii, tak samo w Springu. W Spring MVC, jak sama nazwa wskazuje chodzi o wzorzec model-view-controller, warstwa widoku nie ma w ogóle nic z tym wspólnego. Weź książkę i przeczytaj jeszcze raz lub wejdź na wiki i poczytaj o JSF, JSP, MVC bo masz ogromne braki.

AD 3.
"Gdzies obiło mi się o uszy, że servlety i JSP to podstawa całej javy enterprise - stąd od nich należy zaczac. I prawde mówiąc troche ciężkie to, nie pod względem trudności ale mozolności. Nie wyobrażam sobie tymi skryptami z JSTL napisać jakas ciekawsza aplikacje sieciową, nawet glupie okno rejestracji aktualnie stwarza mi małe problemy" - raczyłeś w ogóle poszukać informacji na temat servletów/JSP ?? JSP jest to servlet @ runtime

0

@NoZi no i sie zaczyna gadanina, zamiast treściwego wyjaśnienia.. ojoj
Zacznijmy od tego, że nie możliwym jest mieć zaległości z czegoś czego jeszcze sie nie przerabiało lub przerabia sie obecnie - z kontekstu to wynika.

[..]Mylisz pojęcia.

W takim razie lepiej byloby wyjaśnić, niż oceniać moja wiedzę

W Spring MVC, jak sama nazwa wskazuje chodzi o wzorzec model-view-controller, warstwa widoku nie ma w ogóle nic z tym wspólnego.

Niegdyś Shalom wspominał mi o odpowiadajacych sobie technologiach, mówił tam ze: od frontendu w J2EE mamy JSF natomiast w Springu jest Spring MVC - podejrzewam, że zle rozumiem termin frontend - to nie tylko UI aplikacji ale wszystko co integruje z userem? pytanie czemu JSP sie do tego zalicza?

raczyłeś w ogóle poszukać informacji na temat servletów/JSP ?? JSP jest to servlet @ runtime

Wyobraz sobie ze tak. Ale to chyba nie odpowiedz na moje pytanie :D?

Chciałbym się dowiedzieć czym jest JSF - skoro od UI mamy np Facelets i PrimeFaces (jeśli oczywiscie dobrze rozumiem :)) to czym właściwie w tym wszystkim jest JSF?

prosiłbym na prawde zeby jak juz coś pisać to na temat @NoZi :)

1

Niegdyś Shalom wspominał mi o odpowiadajacych sobie technologiach, mówił tam ze: od frontendu w J2EE mamy JSF natomiast w Springu jest Spring MVC - podejrzewam, że zle rozumiem termin frontend - to nie tylko UI aplikacji ale wszystko co integruje z userem? pytanie czemu JSP sie do tego zalicza?

Frontend to nie sama warstwa widoku a raczej warstwa komunikacji z użytkownikiem. Spring MVC, tak samo jak JSF czy JSP potrafią serwować użytkownikowi strony i odbierać akcje od użytkownika.
Wodotryski w UI to zupełnie inna bajka.

Chciałbym się dowiedzieć czym jest JSF - skoro od UI mamy np Facelets i PrimeFaces (jeśli oczywiscie dobrze rozumiem ) to czym właściwie w tym wszystkim jest JSF?

JSF tak jak wszystko w JEE to jest tylko standard który opisuje pewne funkcjonalności i interfejsy. PrimeFaces to jest implementacja tego standardu. Tak jak np. z JPA - samo z siebie to jest tylko opis interfejsów, a żeby móc go używać musisz mieć dostawcę JPA -> np. Hiberate czy EclipseLink. Zwykle serwer aplikacyjny dostarcza pewną implementację standardów JEE, ale możesz chcieć zmienić ją na inną.

0

Czyli frontendem nazywamy wszystko czego dotyka sie użytkownik?

Spring MVC, tak samo jak JSF czy JSP potrafią serwować użytkownikowi strony i odbierać akcje od użytkownika.
Wodotryski w UI to zupełnie inna bajka.

W takim razie.. hm.. czy PrimeFaces to właśnie takie "wodotryski"? jak przeglądałem ostatnio komponenty to właśnie takie UI tam było. I jeśli ktoś nie chce korzystać z np tego primefaces to moze uzyc jQuery i stworzyc podobne wodotryskowe efekty tą biblioteka JSową? dobrze rozumiem temat ?:D (z reszta nie wiem czy dobrze pamietam, ale chyba gdzies przeczytałem, ze primefaces tworzono przy pomocy jQuery wlasnie ale reki uciac nie dam)

JSF tak jak wszystko w JEE to jest tylko standard który opisuje pewne funkcjonalności i interfejsy.

Czyli rozumiem, że JSF to jakby zestaw zasad które twórcy min. primefaces lub facelets musieli spełnić (zasady okreslaly interfejsy itp.) Tak wiec frontend robimy za pomocą zasad JSF ale nie bezpośrednio tylko bibliotekami/frameworkami które sa implementacją JSF?

No i wciąż pozostaje pytanie, co brać jako pierwsze, drugie? Tak jak mówiłem - myśle, że lepiej jest zacząć od czegos co pokaże nam efekt naszej pracy bo wtedy troche motywacja jak widać, że cos sie dzieje, a jak zaczniemy od skomplikowanych akcji które liczą licza, ale mało pokazują to sie człowiek szybko z natury zniechęca.
Dlatego myślę, że najlepiej na poczatek cos co mi na oczy pokaze ze cos zrobilem, a dopiero potem jakas logika ciekawsza itp, dla uzupełnienia bo wtedy motywacji nie brak :D

Jaką, mniej-wiecej oczywiscie, kolejnością iść? (wiem, że mówiłeś mi juz kiedyś @Shalom ze to bez różnicy, ale zgodnie z tym co napisalem wyżej jak to obrać, bo szczerze powiem nie znam sie na razie na tym ani troche, co z reszta nie dziwne)

0

W takim razie.. hm.. czy PrimeFaces to właśnie takie "wodotryski"? jak przeglądałem ostatnio komponenty to właśnie takie UI tam było.

Bo ze względu na sposób działania tego frameworka można za jego pomocą korzystać z różnych gotowych komponentów. JSF i Spring MVC działają zupełnie inaczej, stąd też są spore różnice w tym jak się je stosuje i do czego.

Tak wiec frontend robimy za pomocą zasad JSF ale nie bezpośrednio tylko bibliotekami/frameworkami które sa implementacją JSF?

Nie ma czegoś takiego jak "bezpośrednio JSF". To tak jakbyś powiedział że chcesz łączyć się z bazą danych za pomocą JDBC ale próbował to zrobić bez załadowania odpowiedniego sterownika. JSF to tylko specifykacja.

Nadal uważam ze to bez różnicy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1