Portál AbcLinuxu, 12. května 2025 12:33

Dotaz: JAVA - propojeni servletu s .JSP

tomes.io avatar 21.4.2013 21:39 tomes.io | skóre: 12 | blog: tomesh
JAVA - propojeni servletu s .JSP
Přečteno: 447×
Odpovědět | Admin
Ahoj,

potrebuju propojit java servlet s JSP souborem. jedna se o formular ,ktery vytvari novou entitu a ja potrebuju dostat data z formulare co uzivatel vlozi do servletu.

v servletu mam metodu addContact a provadim ji v doGet i v doPost

Domnivam se, ze problem bude zrejme v nastaveni cesty v jsp souboru. zkousel jsem treba

<form action="/jmenoServletu/urlPatternServletu" method="post"> ale pri vykonavani metody addContact se nenacetla data z formulare proste se mi to nepropoji... proste potrebuju propojit jsp formular se sevletem a nevim presne co mam napsat do action="????"

Servlet nejprve vypise seznam entit v db a pak se zobrazi formular pro vytvoreni noveho kontaktu.

Budu rad za kazde nakopnuti

Servlet:

@WebServlet(name = "AddressBookServlet", urlPatterns = {"/do"})

public class AddressBookServlet extends HttpServlet {

    private GroupManagerImpl groupManager = new GroupManagerImpl();
    private ContactManagerImpl contactManager = new ContactManagerImpl();
   
    @Resource(name = "jdbc/AddressBookManagerWeb")
    private void setDataSource(DataSource dataSource) {
        groupManager.setDataSource(dataSource);
        contactManager.setDataSource(dataSource);
        
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        List<Group> groups = groupManager.getAllGroups();
        request.setAttribute("groups", groups);
        List<Contact> contact = contactManager.getAllContacts();
        request.setAttribute("contacts", contact);
        request.getRequestDispatcher("/list.jsp").forward(request, response);
        
    }
    
    protected void addContact(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        
        

                String name = request.getParameter("name");
                String surname = request.getParameter("surname");
                String phoneNumber = request.getParameter("phonenumber");
                String email = request.getParameter("email");

                //zpracování dat - vytvoření záznamu v databázi
                try {
                    Contact contact = new Contact();
                    contact.setName(name);
                    contact.setSurname(surname);
                    contact.setPhoneNumber(phoneNumber);
                    contact.setEmail(email);
                    
                    contactManager.createContact(contact);
                    
                } catch (Exception e) {
                    response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
                    
                }
            
        
    }
       

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

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

  
    @Override
    public String getServletInfo() {
        return "Short description";
    }
}
Inicializace formulare v jsp souboru. Nejsem s to sem dat celu obsah kvuli tagum, formular mi porad hazi same chyby typu:
Značky PRE a TH jsou překříženy!
atd... proste nasleduje klasicky formular pro zadavani parametru
        


<form action="/servlet/do" method="post">
<table>
        <tr>
            Name:
            <td><input type="text" name="name" value="<c:out value='${param.name}'/>"/>TD tag
     
</form>

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 22.4.2013 10:31 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: JAVA - propojeni servletu s .JSP
Odpovědět | | Sbalit | Link | Blokovat | Admin
No, musíte tam dát URL, kam jste ten servlet namapoval. Takže kontext (prefix celé aplikace) + vlastní URL servletu (vidím tam "/do").
tomes.io avatar 22.4.2013 21:30 tomes.io | skóre: 12 | blog: tomesh
Rozbalit Rozbalit vše Re: JAVA - propojeni servletu s .JSP
Diky, to pomohlo.

Rad bych se jeste zeptal, jak vicekrat pouzit tentyz parametr z JSP. Jednou ho totiz do servletu dostanu podruhe ne.

JSP:
 <c:forEach items="${contacts}" var="contact" varStatus="loopStatus">
             <tr class="${loopStatus.index % 2 == 0 ? 'odd' : 'even'}">
                 <td> <c:out value="${contact.name}"/</td>
                 <td><c:out value="${contact.surname}"/</td>
                 <td><c:out value="${contact.phoneNumber}"/></td>
                 <td><c:out value="${contact.email}"/></td>       
                
                 <td>
                     <form action="<c:url value="/DeleteContact"/>" method="post">
                        <input type="hidden" id="id" value="${contact.id}" name="id"/>
                        <p><input type="Submit" value="Delete contact" name="submit"/></p>
                    </form>
                        
                    <form action=" <c:url value="/UpdateContact"/>" method="post">
                         <input type="hidden" value="${contact.id}" name="id"/>
                         <p> <a href=" <c:url value="/UpdateContact"/>">Update Contact</a></p>
                    </form>        
                 </td>
             </tr>
                            
        </c:forEach>
Ja potrebuju do servletu dostat parametr
id
Ta nacte ID prislusne entity, takze kdyz chci smazat Contact, tak se mi t odari, v prislusne metode servletu mam:
Long id = Long.valueOf(request.getParameter("id"));
Jenze pro
/Update Contact
se mi id nepodari dostat. Vraci null. Ten UpdateContact presmerovava na formulat, ktery nacita nova data, ktera budou updatovat atributy entity Contact. V servletove metode pro Update pouzovam tutez metodu pro ziskani ID jako v metode pro delete:
Long id = Long.valueOf(request.getParameter("id"));
Jde mi o to, abych mel u kazde entity tlacitko na DELETE nebo UPDATE. Ale pro update se mi z nejakeho duvodu nedari ziskat to ID. Nevedel by nekdo proc?
tomes.io avatar 23.4.2013 08:21 tomes.io | skóre: 12 | blog: tomesh
Rozbalit Rozbalit vše Re: JAVA - propojeni servletu s .JSP
Tak jsem zjistil, ze problem je v
href
tagu:
http://stackoverflow.com/questions/11913609/hidden-input-in-jsp-produces-null-when-passing-it-to-the-servlet
A melo by se pouzit submit (tak, jak to mam pro DELETE). Jenze jak to v JSP napsat tak, aby se po kliknuti na SUBMIT do servletu nacetl hidden parametr a zobrazila se stranka s formularem, kam uzivatel vyplni udaje k updatu? Potreboval bych to ze SUBMIT presmerovat na muj .jsp soubor kde je formular pro update.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.