Servlet / Button

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
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


Code:
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();
        }
    }
 
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.
 
Also das ist dann der entscheidende Code, oder?


Code:
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
 
Ersetze
Code:
out.println("<form>");
durch
Code:
out.println("<form method='POST' action='"+ request.getContextPath()+"/dasWillIchMachen'>");
 
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,
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben