@Controller
@RequestMapping("/app")
public class MainController {
@RequestMapping(value = "/loginAction", method = RequestMethod.POST)
private String loginAction(@Valid @ModelAttribute("user") User user , BindingResult bindingResult){
if(bindingResult.hasErrors()){
return "login";
}
Date current_date = new Date();
SimpleDateFormat SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
user.setCreateTime(SimpleDateFormat.format(current_date.getTime()));
user.setStatus("enable");
int statue = userService.login(user);
if(statue > 0){
return "redirect:forMain";
}else {
return "login";
}
}
@RequestMapping(value = "/forMain", method = RequestMethod.GET)
private String froMain(){
return "index";
}
}
为了防止表单重复提交,我这边在用户注册以后重定向到主界面,如果返回路径写为:return "redirect:/forMain";
假设我们的项目部署在本地localhost:8080
;此时mvc会视为绝对路径,将跳转到http://localhost:8080/forMain
,此时发现404了,实质上我们应该使用相对路径,因为我们的login请求和forMain请求在同一个controller下,所以改为``return "redirect:forMain";此时会跳转到
http://localhost:8080/app/forMain`.
还有一种就是在Jsp中的请求,此时我可能在hello.jsp中要链接到另外一个路径下,如下所示:
<a href="${pageContext.request.contextPath}/user/imgInfo">进入用户图片上传界面</a>
我们这里有另外一个UserController:
@Controller
@RequestMapping("/user")
public class UserController {
// 处理上传的
@RequestMapping("/imgInfo")
public String upload2() {
return "user/fileupload";
}
}
由于我们的hello.jsp请求路径为http://localhost:8080/app/hello
,若我们写为<a href="${pageContext.request.contextPath}user/imgInfo">进入用户图片上传界面</a>
,则跳转路径为http://localhost:8080/app/user/imgInfo
.所以这里要使用绝对路径。
网友评论