Páginas JSF simultáneas sobreescriben los valores entre si
Publicado por Oscar L (1 intervención) el 08/10/2020 21:20:19
Buenas tardes, tengo una página JSF desde la cual quiero enviar datos para un login en un servlet; el problema es que cuando se abren dos paginas al mismo tiempo y en las dos se introducen datos para enviar al servlet los datos introducidos en la primera se sobreescriben en la segunda y son los que son enviados al servlet. Agradezco su tiempo y ayuda.
Utilizo un managed bean con ambito ViewScoped, esta es una parte donde obtengo los datos del formulario y los guardo en un arraylist:
Esta es la JSF con el formulario y el botón que llama al servlet:
y aquí el código del servlet donde llamo al método que obtiene los datos del formulario:
Utilizo un managed bean con ambito ViewScoped, esta es una parte donde obtengo los datos del formulario y los guardo en un arraylist:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class nuevoTest implements Serializable {
String usuario;
String contrasenia;
ArrayList<Order> dlList = new ArrayList<Order>();
public void datosLogin(){
usuario = usua.getValue().toString();
contrasenia = contrasena.getValue().toString();
System.out.println("us "+usuario);
System.out.println("con "+contrasenia);
Order uc = new Order(usuario,contrasenia);
dlList.add(uc);
}
public static class Order {
String usuario;
String contrasena;
public Order(String usuario,String contrasena){
this.usuario = usuario;
this.contrasena = contrasena;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getUsuario() {
return usuario;
}
public void setContrasena(String contrasena) {
this.contrasena = contrasena;
}
public String getContrasena() {
return contrasena;
}
}
Esta es la JSF con el formulario y el botón que llama al servlet:
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html>
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:document title="logon.jsf" id="d1">
<af:form id="f1">
<af:inputText label="Usuario" id="it1" autoSubmit="true" binding="#{viewScope.nt.usua}"/>
<af:inputText label="Contraseña" id="it2" autoSubmit="true" binding="#{viewScope.nt.contrasena}"/>
<af:button text="button 1" id="b1" destination="/servlet1" />
</af:form>
</af:document>
<!--oracle-jdev-comment:preferred-managed-bean-name:nt-->
</f:view>
y aquí el código del servlet donde llamo al método que obtiene los datos del formulario:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "Servlet1", urlPatterns = { "/servlet1" })
public class Servlet1 extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
String user;
String pass;
nuevoTest nt = new nuevoTest();
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
nt.datosLogin();
for(int i=0;i<nt.dlList.size();i++){
user = nt.dlList.get(i).getUsuario();
pass = nt.dlList.get(i).getContrasena();
System.out.println("usuario nm "+i+" "+user);
}
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Servlet1</title></head>");
out.println("<body>");
out.println("<p>Nombre usuario</p>");
out.println(user);
out.println("</body></html>");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Servlet1</title></head>");
out.println("<body>");
out.println("<p>The servlet has received a POST. This is the reply.</p>");
out.println("</body></html>");
out.close();
}
}
Valora esta pregunta


0