假设您在不使用 spring mvc 的普通 servlet 中有类似的东西:
if(username == "X" && password =="Y"){
response.sendRedirect("./user/welcomePage.jsp");
}else{
response.sendRedirect("./login.jsp?wrongPass=true");
}
如果用户名&&密码错误,重定向到login.jsp页面后,在login.jsp页面某处以红色通知用户用户名或密码错误:
<p style="color:red";
<%= (request.getParameter("wrongPass")==null)? "visibility:hidden":"" %>;">
Your username/password is wrong !</p>
我的问题是,有没有办法传递这样的论点:
response.sendRedirect("./login.jsp?wrongPass=true");
在 Spring MVC 控制器内部?
因为如果我们有这样的控制器:
@Controller
@RequestMapping(value ="/")
public class Welcome{
public String welcome(@RequestParam("j_username") String username,
@RequestParam("j_password") String password){
.
.
.
return "login";
作为日志,我们需要返回一个字符串来形成一个页面,因为我们定义了 InternalResourceViewResolver:
<bean >class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
如果我们在控制器中传递参数,例如:在使用 InternalResourceViewResolver 后返回“login?wrongPass=true”,这将创建如下内容:
login?wrongPass=true.jsp Which is totally wrong ...
现在,你有什么解决方案来解决这个问题(不)将字符串添加到我们的控制器中的模型并在 JSP 中获取参数?我希望浏览器 url 变成这样:
http://localhost:8080/myProject/login.jsp?wrongPass=true