SpringMVC为什么不通过视图解析器生成目标页面呢?

blacklife150614 2016-01-13 09:42:42
做了一个登录验证的功能,登录成功能
jsp页面代码如下:
<form action="springmvc/login" method="post">
<table>
<tr>
<td>Username</td>
<td><input type="text" name="username" style="width:160px;" id="username" value="${user.username }"/></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" style="width:160px;" id="password"/></td>
</tr>
<tr>
<td><input type="submit" value="Login"/></td>
<td><input type="reset" value="Reset"/></td>
</tr>
<tr>
<td colspan="2"><a href="springmvc/regist">请注册用户</a></td>
</tr>
</table>
<font style="font-size: 12px;color: red;">${logInfo }</font>
</form>

controller代码如下:
@Controller
@RequestMapping("/springmvc")
@SessionAttributes("logUser")
public class LoginHandler {
private static final String SUCCESS = "success";
@Autowired
private UserService userService;
@RequestMapping(value="/login" ,method=RequestMethod.POST)
public String login(User user, Map<String, Object> map){
User logUser = userService.login(user);
if(logUser == null){
map.put("logInfo", "您输入的用户名不正确");
map.put("user",user);
return "login";
}else{
if(!logUser.getPassword().equals(user.getPassword().trim())){
map.put("logInfo", "您输入的密码不正确");
map.put("user", user);
return "login";
}else{
map.put("logUser", logUser);
return SUCCESS;
}
}
}
}

配置文件中视图解析器相关代码如下:
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>

在类上也使用的requestMapping注解,登录的时候用户名和密码正确的话跳转到成功页面没有问题,但是如果错误的话,url中显示的地址为:http://localhost/Project-SSM/springmvc/login,能返回登录界面,如果再次输入错误的话,地址栏中显示的url为:http://localhost/Project-SSM/springmvc/springmvc/login,这样就会提示404错误啦!
视图解析器中配置的前缀为:/WEB-INF/views/,后缀为.jsp,为啥第二次及以后再输入错误的话,不返回到登录界面,而是返回404的页面,地址栏的url地址每次都会增加 springmvc。这是怎么回事啊?求解
ps:所有的jsp页面都在/WEB-INF/views目录下。
...全文
335 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
豫让_______ 2016-01-14
  • 打赏
  • 举报
回复
<form action="springmvc/login" method="post"> 这里action路径写成 action="/springmvc/login"试试呢。
_南天北落 2016-01-14
  • 打赏
  • 举报
回复
引用 3 楼 u011120983 的回复:
视屏上讲过。一定要写成绝对路径,不然就会出现你这样的问题,因为你第二次错误的路径和你第一次错误的路径是不一样的,用相对路径就会出现错误
要用绝对路径。或者自己封装一个。
我要爆炸啦 2016-01-14
  • 打赏
  • 举报
回复
视屏上讲过。一定要写成绝对路径,不然就会出现你这样的问题,因为你第二次错误的路径和你第一次错误的路径是不一样的,用相对路径就会出现错误
blacklife150614 2016-01-14
  • 打赏
  • 举报
回复
引用 1 楼 a291263379 的回复:
<form action="springmvc/login" method="post"> 这里action路径写成 action="/springmvc/login"试试呢。
这样也是不行的,我试了一下,将jsp页面里面的路径都写成绝对路径就可以啦。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧