Controller层路由特点

Controller上的注解@RequestMapping (value = "/admin/index" ) ,中的"/admin/index"统一不写.do、.htm后缀。

Controller中的return " redirect:/sys/menu.do ";   重定向时一定要写.do、.htm后缀。

Controller中的return "modules/sys/menuTreeselect"; 转发视图层时,前面不以/开头,最后不写.jsp后缀。

入口路由

URL 如何映射Controller

作用:当用户使用浏览器在地址栏输入网站的URL后,通过URL映射进入相应的Controller控制器。

通过在Controller的类上和方法上添加@RequestMapping注解,来实现路由的控制。

@RequestMapping (value = "${adminPath}/gen/genTable" )   (${adminPath})

@RequestMapping (value = { "list" , "" })

@RequestMapping (value = "form" )

如何进入首页

当浏览器访问网站的首页时,地址可能是:http://www.abc.com/   这样的 URL, 这个请求默认会被index.jsp处理,因web.xml中配置的welcome-file-list中有index.jsp。

因为FDP的spring mvc只拦截*.do、*.htm后缀,所以不可以拦截住这个请求,spring mvc无机会处理这个请求。所以要在 indxe.jsp 要转发到index.do 控制器。

通过index.jsp 进入首页的Controller。

作用:当用户使用浏览器,在地址栏输入网站的域名后,进入网站的首页。

当浏览器访问网站的首页时,地址可能是:http://www.abc.com/,这个请求会被index.jsp处理(因web.xml中配置的welcome-file-list中有index.jsp)
由FDP的spring mvc只拦截*.do、*.htm后缀,所以不可以拦截住这个请求,spring mvc无机会处理这个请求。
所以要重定向到index.do
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sicheng.common.config.Global" %>
<%
//作用:进入首页的Controller
//当浏览器访问网站的首页时,地址可能是:http://www.abc.com/,这个请求会被index.jsp处理(因web.xml中配置的welcome-file-list中有index.jsp)
//由FDP的spring mvc只拦截*.do、*.htm后缀,所以不可以拦截住这个请求,spring mvc无机会处理这个请求。
//所以要转发到index.do
String ctx = request.getContextPath();
String adminPath=Global.getAdminPath();
String path="/cms/index.htm";
//System.out.println(path);
request.getRequestDispatcher(path).forward(request, response);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>正在转入首页</title>
</head>
<body>
<h3>这是首页</h3>
<a href="views/admin/index.jsp">管理后台首页</a><br>
<a href="views/seller/index.jsp">商家后台首页</a><br>
<a href="<%=ctx %>/cms/index.htm">原cms页面</a><br>
<a href="<%=ctx %>/admin/login.do">管理后台</a><br>
</body>
</html>

出口路由

出口路由:转发到某个view视图

作用:转发到jsp页面

return "product/index";

return "admin/gen/genTableForm" ;

出口路由:转发到另一个controller

作用:在一个controller中,转发到另一个controller,我试了真的可行。

return "forward:/product/index.htm";

可以转发到某个controller ,会再走spring mvc自己的Interceptor,但不会走servlet的层的Filter。

出口路由:重定向到 另一个controller

作用:在一个controller中处理完业务后,重定向到其它controller。

return "redirect:" +Global.getAdminPath()+ "/member/memberBase.do?repage" ;

注意:上面使用repage参数,关于repage特性,请阅读repage相关文档。

重定向的妙用:

  1. 可有限度的防止表单重复提交。当用户使用post方式提交了一个表单到服务器,Controllert处理完,重定向到“列表页”,可防止用户在“列表页”按F5产生表单重复提交。
  2. 配合 RedirectAttributes工具类一起使用,可携带“一次性”参数,如“操作成功提示”,只提示一次,在浏览器上按F5刷页面不再重复提示。