Chamar metodo do javaBean

boa tarde ,como eu faço para chamar um metodo do javaBean no submit de meu formulario JSP ?

acho que isso eh impossivel

O que normalmente é feito é passar um parâmetro para o Servlet que vai receber o GET/POST e aí no doGet / doPost é incluída a lógica que determina o que deve ser feito (no seu caso, chamar o método do JavaBean).

devido ao numero de possiveis requisições simuntaneas eu nao tou pretendendo usar servlets

sera que não dava pra fazer isso sobrescrevendo o jspInit , ou o _jspService , ou passando o pageContext como argumento para o construtor do bean ?

Não entendi a relação “número de requisições” vs. servlets… Eles são tão multithread quanto os JSPs…

Acho que não dá pra sobrescrever esses métodos porque eles são gerados automaticamente pelo servlet conteiner, quando ele faz a tradução do arquivo JSP para o servlet correspondente. Não é uma questão de simplesmente herdar os métodos, eles são literalmente incluídos automaticamente nos arquivos class gerados.
E mesmo que desse para sobrescrevê-los, não ia mudar o fato de que uma requisição GET/POST é recebida em um método doGet/doPost. Isso faz parte do servlet conteiner, não é um redirecionamento que eles fazem na hora. Mas, acho que o Tomcat é open source, então se quiser mudar… hehehe

da pra sobrescrever o jspInit , jspDestroy , etc… em seu jsp ,nao sei se seria a melhor saida

sobre o multithread , estou com o java servlet : programação 2º edição aqui aberto , e ele diz que o servidor cria uma unica instancia ,e essa instancia lida com toda a solicitação feita ao servlet , isso esta certo ?

Se você não implementar a interface SingleThreadModel, sim, está certo.
E exatamente o mesmo acontece com os JSPs, porque afinal, eles também são servlets!

[quote=“Bani”]Se você não implementar a interface SingleThreadModel, sim, está certo.
E exatamente o mesmo acontece com os JSPs, porque afinal, eles também são servlets![/quote]
Segundo a doc de SingleThreadModel:

[quote]
If a servlet implements this interface, you are guaranteed that no two threads will execute concurrently in the servlet’s service method. The servlet container can make this guarantee by synchronizing access to a single instance of the servlet, or by maintaining a pool of servlet instances and dispatching each new request to a free servlet.[/quote]

Então:
:arrow: Quando será necessario implementar SingleThreadModel?
:arrow: Das duas abordagens acima, qual o tomcat usa?

Até.

Com o SingleThreadModel, algumas variáveis em determinados escopos que não eram thread-safe (por exemplo, variáveis de classe) viram thread-safe.

Não sei qual das duas abordagens o Tomcat usa, mas sugiro que vocês façam uma pesquisa aqui no forum sobre “SingleThreadModel” que tem bastante assunto.

Porém, parece que na especificação nova de Servlets essa interface foi depreciada (ou seja, não use).

SingleThreadModel não é recurso do Tomcat. E sim faz parte da Especificação Servlets 2.0 (1997)…

Entretanto, seu uso degrada a performance… Por isso é melhor usar Servlets normais (MultThreads)…

E se voce quiser armazenar dados que deve ser ThreadSafe use o HttpSession ou HttpServletResquest…

E se voce quiser armazenar dados que deve não precisam ser ThreadSafe use o ServletContext…

Acho que voce deve usar o MVC (Servlets, JSP e JavaBeans)…

[]s’

Acredito que houve uma pequena confusão na última mensagem. Session não é thread safe. Pelo menos é o que está escrito no meu livro da prova SCWCD.
request -> thread safe
session e context -> não thread safe

Afinal, ninguem respondeu de vez a pergunta da Bani: que que tem a ver numero de requests com usar ou nao um Servlet ou JSP? :smiley:

[quote=“ozielneto”]
Acho que voce deve usar o MVC (Servlets, JSP e JavaBeans)…

[]s’[/quote]

oi cara
você teria algum exemplo ?

De fato. Segundo a especificação 2.4 de servlet, capítulo SRV.7, seção 7.1., vários servlets podem ter acesso a uma única instância de um HttpSession ao mesmo, cabendo ao programador, explicitamente, fazer o sincronismo ao acesso ao HttpSession.

login.jsp

<%@ page session="true" %>
<HTML><TITLE> Login Page </TITLE>
<BODY>
<BR>
<CENTER>
<FORM NAME="LOGIN" ACTION="/distributed/LoginServlet" METHOD="POST">
Login    : <INPUT TYPE="TEXT" NAME="login" VALUE=""><BR>
Password : <INPUT TYPE="PASSWORD" NAME="password" VALUE=""><BR>
<INPUT TYPE="SUBMIT" NAME="B1" VALUE="SEND">
<INPUT TYPE="RESET" NAME="B2" VALUE="CLEAR">
</FORM>
</CENTER>
<BR>
<A HREF="javascript:close()"> Close </A>
</BODY>
</HTML>

LoginServlet.java

package servlets;

import rmi.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.rmi.*;
import java.io.*;

public class LoginServlet extends HttpServlet {
 
 private Database db;

 public void init(ServletConfig conf) {
  try  {
   db = (Database) Naming.lookup("rmi://127.0.0.1:1099/Database");
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  HttpSession session = request.getSession(true);

  //getServletContext().getRequestDispatcher("/login.jsp").forward(request,response);
        response.sendRedirect("/distributed/login.jsp");
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response) 
   throws ServletException, IOException {

  HttpSession session = request.getSession(false);

  String login = request.getParameter("login");
  String password = request.getParameter("password");

  if ( login == null || password == null) {
   request.setAttribute("javax.servlet.jsp.jspException", "Missing data!");
   getServletContext().getRequestDispatcher("/erro.jsp").forward(request,response);   
  } else {
   try  {
    User usr = db.login(login, password);
    session.setAttribute("message", "Welcome Mr.(s) " + usr.getName() );
                response.sendRedirect("/distributed/welcome.jsp");
      getServletContext().getRequestDispatcher("/welcome.jsp").forward(request,response);   

   } catch (PasswordException p) {
  request.setAttribute("javax.servlet.jsp.jspException", "Missing data!");
   getServletContext().getRequestDispatcher("/erro.jsp").forward(request,response);   
    
   }
  }
  

 }
}

[]'s

Bom estudo.

[quote=“Leandro Rangel Santos”]

oi cara
você teria algum exemplo ?[/quote]

Da uma procurada no forum… mais de uma centena de mensagens que falam sobre MVC.

Dica: em “pesquisar”, procure por “mvc” e, no campo “busca por autor”, digite “Rafael Steil”… :stuck_out_tongue: … ( antes que me julguem: esses tempos eu postei uns topicos reunindo os topicos que falam sobre mvc, entao eh melhro do que procurar simplesmente por “mvc” :slight_smile: )

Rafael