[jsp]submit a wyswietlana zawartosc

0

hej, chcialabym zrobic cos takiego:

pokazuje jakiegos forma, tam jakies info/tabelki etc. na dole guzik i po wcisnieciu jego chce nowe info. ale na tej samej stronie. czyli cos w stylu:


         <form method = POST>
                 <table>
                     <tr>
                         <td size="50"><font size="2">Imie:</font></td><td><input type="text" size="=30" name="imie"></td>
                     </tr>
                     <tr>
                         <td><br><input type="submit" name="szukaj"  ></td>
                     </tr>
</table>
<% jakies tam rzeczy%>

i teraz jak klikne na 'szukaj', chce zeby mi sie ta strona przeladowala, ale zeby np zamiast tabelki pokazywalo sie jakies info. wiem ze za pomoca java scriptu bardzo prosto mozna sprawdzic, ze kliknieto guzik-wystarczy zmodyfikowac linijke z guzikiem o:

<input type="submit" name="szukaj" onClick="return checkIfPressed();" >
//gdzie checkIfPressed:
                <script type="text/javascript">

                    function checkIfPressed(){
                        window.alert("wcisnieto!");

                    }

                </script>

dobra, ale jak zrobic to,by po wcisnieciu zaladowac inny widok/funkcje? (bo chodzi o to,ze chce uniknac odsylania do kolejnej strony jsp, chce zeby to byla ta sama). czyli np na poczatku wyswietlaja sie rzeczy w funkcja1(), po klikniecu przycisku wyswietlaja sie z funkcja2().

mam nadz ze w miare zrozumiale opisalam o co mi chodzi. bede wdzieczna za wszelkie sugestie.

pzdr,
misty

0

Mechanizm JSP opiera sie na serwletach. Cala logike mozesz umiescic na jednej stronie JSP, przy pomocy scriptletow i wyrazen (ang. expresions). IMO, czytelniej bedzie zbudowac serwlet, ktory przetworzy otrzymane z formularza dane i, po uzyskaniu odpowiednich wynikow, przekieruje uzytkownika na te sama lub inna strone. Caly czas masz dostep do biezacej sesji, wiec przy jej pomocy mozesz kontrolowac zawartosc i dalsze zachowanie.

Ew. mozsez polaczyc Serwlet + AJAX.

0

no ale jak sie miedzy tymi serwletami przelaczyc? przelaczenie ma byc na nacisniecie guzika. to ze wcisnieto guzik rozpoznam sobie przy pomocy javascriptu. ale czy z javascriptu zaladuje sobie drugi serwlet? jak?

pzdr,
misty

0

Najprostszy przyklad:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.util.*" %>
<!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=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <% String keyword = request.getParameter("keyword");
           if(keyword != null) {
                //do some searching in database
                List results = new ArrayList();
                results.add(keyword + " #1");
                results.add(keyword + " #2");
                session.setAttribute("results", results);
           }
        %>
        <h1>Simple form servlet!</h1>
        <form method="POST">
            <input onclick="document.getElementById('keyword').value='';" type="text" name="keyword" value="Enter keyword here!" />
            <input type="submit" name="submit" value="Find" />
        </form>
        <br /><br />
        <hr width="75%" />
        <br /><br />
        <c:if test="${results != null}">
        <table>
            <c:forEach var="result" items="${results}">
            <tr><td>${result}</td></tr>
            </c:forEach>
        </table>
        </c:if>
    </body>
</html>
0

ok, dzieki. juz to zaraz przeanalizuje i przetestuje u mnie. ale powiedz mi jedno. jsp-strona, serwlet-programik wykonywany po stronie serwera, ktorego dzialanie tez widzimy na stronie www. czy na stronie jsp moge zaladowac serwlet?

pzdr,
misty

0
misty napisał(a)

czy na stronie jsp moge zaladowac serwlet?

Niezupelnie rozumiem, co masz na mysli. Strona JSP to tak naprawde tez serwlet, tylko w formie "przejsciowej". Ponizej dwa kody zrodlowe:

page.java

// import javax.servlet.http...
public class Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        String name = "My Page";
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html><head>");
            out.println("<title>Servlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>" + name + "</h1>");
            out.println("</body></html>");
        } finally { 
            out.close();
        }
    }
}

page.jsp

<% String name = "My Page"; %>
<html><head>
<title>Servlet</title>
</head>
<body>
<h1>${name}</h1>
</body></html>

Zanim strona page.jsp zostanie wyswietlona, Web Server (np. kontener serwletow, typu Tomcat lub kontener aplikacji, typu JBoss lub GlassFish) przetworzy ja na serwlet. W idealnym przypadku, kod wynikowy bedzie wygladal jak page.java. To, m.in., dlatego pierwsze uruchomienie strony JSP trwa dluzej niz nastepne. Oba kody dadza identyczny rezultat. Roznica jest taka, ze nie trzeba byc programista, zeby napisac kod *.jsp i z takiego zalozenia wychodzili projektanci Java ServerPages.
Dzieki dyrektywom <%@ %>, skryptletom <% %>, rozszerzeniom <%= > i bibliotekom tagow tag library, mozesz w bardzo swobodny sposob dynamizowac zachowanie swojej strony. I tego powinnas sie trzymac.
Dawno temu niektore serwery wspieraly tag <SERVLET>, ktory umozliwial zagniezdzenie innego serwletu w stronie JSP, ale to juz prehistoria.

Tak naprawde od razu powinienem odeslac do dowolnego kursu JSP.

0

Dawno temu niektore serwery wspieraly tag <SERVLET>, ktory umozliwial zagniezdzenie innego serwletu w stronie JSP, ale to juz prehistoria.

no wlasnie o to pytalam. bo dolaczyc strone jsp w drugiej stronie mozna bez problemu. i sie zastanawialam czy servlet mozna rowniez.
sluchaj, ale jest jedna rzecz ktorej nie rozumiem. jaka jest tak na prawde roznica miedzy jednym a drugim? bo i tu i tu moge korzystac z html'a, mam dostep do zmiennych sesyjnych, moge uzywac kodu javy. i obu wynik zobacze na stronie www. oba sa wykonywane po str serwera. piszesz ze str jsp to tez serwlet, ale w formie przejsciowej. z ktorego rozwiazania wiec powinnam korzystac w jakim przypadku?

pzdr,
misty

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