I am developing an application with Spring MVC
and I have an http 400 request error.
The first time I call controller login for a request get
redirects me to the jsp login and then the form jsp
calls me back to the controller login with request post
and redirects me to another jsp call home.
So far so good, the problem is that I have exactly another controller equal to this one but that a user registers and when the form is forwarded with the post method I get error 400. I show the code and please tell me if something is missing or because it can be.
Login Controller
@RequestMapping(value="login",method=RequestMethod.GET)
public String login(ModelMap model){
UsuarioVO u=new UsuarioVO();
model.put("usuario", u);
return "login";
}
@RequestMapping(value="login",method=RequestMethod.POST)
public String loginPost(HttpServletRequest req,HttpServletResponse res, @ModelAttribute("usuario")UsuarioVO us,ModelMap model){
UsuarioVO u=null;
if(us.getNombreUsuario()==null){
model.put("error", "Error en la autentificación.Intentelo de nuevo");
return "login";
}else{
u=this.usuarioService.obtenerUsuario(us.getNombreUsuario(), us.getContrasenia());
}
if(u.getIdUsuario()==null){
model.put("error", "Error en la autentificación.Intentelo de nuevo");
return "login";
}else{
model.put("usuario", u);
model.put("historial", u.getHistorial().getListaContenidos());
HttpSession session=req.getSession();
session.setAttribute("usuario", u.getNombreUsuario());
session.setAttribute("contra", u.getContrasenia());
try {
req.getRequestDispatcher("inicio").forward(req, res);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "inicio";
}
}
JSP login
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Lista de Peliculas</title>
</head>
<body>
<h2>Iniciar Sesion</h2>
<c:if test="${error!=null }"><h2>${error }</h2></c:if>
<table>
<form:form modelAttribute="usuario" method="post">
<tr><td>Nombre Usuario: <form:input path="nombreUsuario"/><td></tr>
<tr><td>Contrasenia: <form:input path="contrasenia"/><td></tr>
<tr><td><button type="submit">Iniciar Sesion</button><td></tr>
</form:form>
<tr><td><spring:url value="registrarUsuario" var="registrar"/>
<a href="${fn:escapeXml(registrar) }"><button>Registrar Usuario</button> </a>
<td></tr>
</table>
</body>
</html>
Controller register user
@RequestMapping(value="registrarUsuario" ,method=RequestMethod.GET)
public String registrarse(ModelMap model){
UsuarioVO u=new UsuarioVO();
model.put("usuario", u);
return "usuarios/registrarUsuario";
}
@RequestMapping(value="registrarUsuario",method=RequestMethod.POST)
public String registrarsePost(HttpServletRequest req,HttpServletResponse res, @ModelAttribute("usuario")UsuarioVO us,ModelMap model){
UsuarioVO u=us;
if(u.getNombre()==null || u.getApellido()==null || u.getContrasenia()==null || u.getNombreUsuario()==null){
model.put("error", "Error en el registro, debe rellenar todos los campos");
return "usuarios/regitrarUsuario";
}else{
this.usuarioService.insertarUsuario(u);
model.put("usuario", u);
model.put("historial", u.getHistorial().getListaContenidos());
HttpSession session=req.getSession();
session.setAttribute("usuario", u.getNombreUsuario());
session.setAttribute("contra", u.getContrasenia());
try {
req.getRequestDispatcher("inicio").forward(req, res);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "inicio";
}
}
jsp registerUser
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Registrar Usuario</title>
</head>
<body>
<div>
<h2>Registrar usuario</h2>
<c:if test="${error!=null }"><h3>${error }</h3></c:if>
<table>
<form:form modelAttribute="usuario" method="post">
<tr><td>Nombre usuario<form:input path="nombreUsuario"/><td></tr>
<tr><td>Contrasenia<form:input path="contrasenia"/><td></tr>
<tr><td>Nombre <form:input path="nombre"/><td></tr>
<tr><td>Apellidos <form:input path="apellido"/><td></tr>
<tr><td>Fecha Nacimiento <form:input path="fechaNac"/><td></tr>
<tr><td><button type="submit">Registrarse</button><td></tr>
</form:form>
</table>
</div>
</body>
</html>