Diskuze: Java EE - zavolání servletu z JSP

Java Java Java EE - zavolání servletu z JSP

Avatar
Honza
Člen
Avatar
Honza:

Ahoj, blbnu s Javou a narazil jsem na jeden problém kde ve všech tutoriálech všechno funguje, ale já to nemůžu rozchodit. Jde o to že mám jeden servlet a pár JSP. V každým tutoriálu se při odeslání formuláře nebo při get požadavku volají metody doPost a doGet které jsou v servletu. Mně se ale nezavolají. Moje otázka tedy je, co kde nastavit aby JSP veděla který servlet volat.

Dejme tomu že mám tento servlet:

@WebServlet("/smena")

public class ServletController extends HttpServlet {

        private static final long serialVersionUID = 1L;

        public ServletController() {
                super();
        }





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



           PrintWriter out = response.getWriter(  );
            response.setContentType("text/html");
            out.println("<H1>Hello from a Servlet</h2>");
            out.println("<P>This servlet ran at ");
            out.println(new Date().toString(  ));
            out.println("<P>Courtesy of HelloServlet.java 1.2 ");

        }



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


                   PrintWriter out = response.getWriter(  );
                    response.setContentType("text/html");
                    out.println("<H1>Hello from a Servlet</h2>");
                    out.println("<P>This servlet ran at ");
                    out.println(new Date().toString(  ));
                    out.println("<P>Courtesy of HelloServlet.java 1.2 ");

        }
}

Co mám v JSP nastavit aby se zavolaly tyto metody? Nenašel jsem to v žádném tutoriálu protože tam jim to funguje hned od začátku :(
Pokud bych mohl být tak smělý, ideální by byl kód nějaké nejjednodušší JSP která zavolá tyto dvě metody v servletu. Díky za jakoukoli radu.

Odpovědět 30.12.2015 22:20
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Atrament
Člen
Avatar
Atrament:

Chybí info o tom jak to spouštíš. Servlet normálně nevoláš, servlet reaguje na http požadavek. Tak jak to máš tak by to mělo reagovat na pokus o přístup na http://adresa_tveho_webu/smena vypsáním toho textu co tam máš.

 
Nahoru Odpovědět  +1 30.12.2015 23:43
Avatar
Honza
Člen
Avatar
Odpovídá na Atrament
Honza:

Díky za odpověď. Mohl by jsi mi prosím napsat jak ho volat aby na ten požadavek reagoval? To je právě to na co nemůžu přijít, jak mu říct aby na JSP reagoval tenhle servlet.

Nahoru Odpovědět 31.12.2015 6:42
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Honza
Člen
Avatar
Honza:

Taky ten servlet nemám namapovaný ve web.xml, problém možná bude i v tom.

Nahoru Odpovědět 31.12.2015 6:58
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Atrament
Člen
Avatar
Odpovídá na Honza
Atrament:

To je právě to na co nemůžu přijít, jak mu říct aby na JSP reagoval tenhle servlet.

Ale to je přece právě přesně naopak - ty máš v servletu říct jaké jsp se má použít.

Jelikož jsi pořád nenapsal jak tu aplikaci pouštíš budu předpokládat modelovou situaci, že to píšeš v Netbeans a pouštíš to v lokálně puštěném GlassFish a aplikaci jsi nazval EEAplikace. Potom když v Netbeans dáš tu aplikaci pustit, pak se ti pustí GlassFish na lokále na portu 8080, tudíž když zadáš do prohlížeče

http://localhost:8080/EEAplikace

měl bys vidět obsah index.html, který máš v té své aplikaci mezi Web Pages.

Tím, že tam máš servlet ServletController a ten máš správně registrovaný pomocí anotace @WebServlet a nastavený na "/smena" (anotace stačí, další registrace ve web.xml už pak potřeba není), když v prohlížeči upravíš adresu na

http://localhost:8080/EEAplikace/smena

dojde k zavolání doGet() metody v tomto servletu. V této metodě můžeš buď jen přímo něco vypsat, tak jak to máš teď a nebo přesměrovat na nějakou konkrétní jsp pomocí

request.getRequestDispatcher("cesta_a_jmeno_jsp_souboru").forward(request, response);
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 31.12.2015 14:01
Avatar
Honza
Člen
Avatar
Odpovídá na Atrament
Honza:

Moc díky, jak píšeš dělal jsem to přesně naopak. Místo abych volal servlet který vybere jsp pokoušel jsem se jsp donutit aby volal servlet. Teď už to funguje. Díky moc :)

Nahoru Odpovědět 31.12.2015 15:53
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.