# Servlet / Button



## MQue (26. Feb 2009)

hallo,

ich habe ein Servlet, mir ist aber nicht ganz klar, was passiert, wenn der Button Speichern gedrückt wird. Wird da eine Methode aufgerufen oder was passiert da?
Schönen Abend noch,
Michael



```
public class PostMessage extends HttpServlet {

    @Resource(mappedName="jms/NewMessageFactory")
    private  ConnectionFactory connectionFactory;

    @Resource(mappedName="jms/NewMessage")
    private Queue queue;
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String title=request.getParameter("title");
        String body=request.getParameter("body");
        if ((title!=null) && (body!=null)) {
        try {
            Connection connection = connectionFactory.createConnection();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer messageProducer = null;
            messageProducer = session.createProducer(queue);

            ObjectMessage message = session.createObjectMessage();
            // here we create NewsEntity, that will be sent in JMS message
            NewsEntity e = new NewsEntity();
            e.setTitle(title);
            e.setBody(body);

            message.setObject(e);
            messageProducer.send(message);
            messageProducer.close();
            connection.close();
            response.sendRedirect("ListNews");
            }
        catch (JMSException ex) {
            ex.printStackTrace();
            }
}

        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet PostMessage</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet PostMessage at " + request.getContextPath () + "</h1>");
            out.println("<form>");
            out.println("Title: <input type='text' name='title'><br/>");
            out.println("Message: <textarea name='body'></textarea><br/>");
            out.println("<input type='submit' value='Speichern'><br/>");
            out.println("</form>");

            out.println("</body>");
            out.println("</html>");
        } finally { 
            out.close();
        }
    }
```


----------



## mvitz (26. Feb 2009)

Die eingetragenen Werte (body & title) werden zu einer Message zusammengebaut und in eine MessageQueue (Schlange) zur asynchronen Verarbeitung übergeben. Diese Queue kann jetzt von etwas anderem abgearbeitet werden indem sich das andere die Messages irgendwann aus der Queue holt.

Stichpunkte wären hierfür halt JMS (Java Message S... [System?]) und evtl. noch MessageDrivenBean (auch MDB abgekürzt).

Gibt bestimmt noch was was ich vergessen habe oder was nicht 100% korrekt ist, bin in dem Thema kein Spezialist.


----------



## MQue (27. Feb 2009)

Also das ist dann der entscheidende Code, oder?



```
NewsEntity e = new NewsEntity();
            e.setTitle(title);
            e.setBody(body);
```

Was muss ich dann bei meinem Code oben machen, damit der Button irgendwas macht bzw. dass eine Methode aufgerufen wird, wenn ich den out.println("<input type='submit' value='Speichern'><br/>");- Button drücke?

Vielen Dank für die Erklärung,
lg


----------



## HLX (27. Feb 2009)

Ersetze

```
out.println("<form>");
```
durch

```
out.println("<form method='POST' action='"+ request.getContextPath()+"/dasWillIchMachen'>");
```


----------



## MQue (27. Feb 2009)

Hallo,

Danke für die Antwort, 
Ist das eigentlich eine übliche Vorgehensweise, macht man das immer so (ist das professionell oder bzgl. meiner Klasse oben eine Notlösung?),
gibt es eigentlich in diese Richtung eine Tutorial o.ä.

Vielen Dank,


----------



## mvitz (27. Feb 2009)

Üblicherweise würde man deine System.out.println in eine JSP Seite überführen und diese vom Servlet auf diese weiterleiten.

Siehe: http://www.jsptutorial.org/


----------

