spring mvc 请求路径问题

取出部署的应用程序名,这样不管如何部署,所用路径都是正确的。

<c:set var="ctx" value="${pageContext.request.contextPath}/"/>
<script type="text/javascript" src="${ctx}/static/jquery/1.8.3/jquery-1.8.3.min.js"></script>

该页面默认跳转到main/sms/task/index Controller

<script type="text/javascript">
        location.href = '${ctx}' + '/main/sms/task/index';
    </script>

@RequestMapping配置该Controller的浏览器访问路径。

ModelAndView:
控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型数据信息。

@Controller
@RequestMapping("model")
public class ModelController {

    @RequestMapping("register")
    public ModelAndView register(User user){

        ModelAndView mv = new ModelAndView("home");//jsp视图
        mv.addObject("user", user);//数据

        return mv;
    }
}

Map 及 Model:
Spring MVC 在内部使用了一个org.springframework.ui.Model 接口存储模型数据。

Spring MVC 在调用方法前会创建一个–隐含的模型对象作为模型数据的存储容器。如果方法的入参为 Map 或 Model 类型,Spring MVC 会隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据。

@Controller
@RequestMapping("model")
public class ModelController {

    @RequestMapping("register")
    public String register(User user, Map<String, Object> map){

        map.put("user", user);//数据

        return "home";//视图
    }
}

@Controller
@RequestMapping("model")
public class ModelController {

    @RequestMapping("register")
    public String register(User user, Model model){

        model.addAttribute("user", user);//数据

        return "home";//视图
    }
}

然后会将Modle或者map封装进request:

for (Map.Entry<String, Object> entry : model.entrySet()) {
            String modelName = entry.getKey();
            Object modelValue = entry.getValue();
            if (modelValue != null) {
                request.setAttribute(modelName, modelValue);
                if (logger.isDebugEnabled()) {
                    logger.debug("Added model object '" + modelName + "' of type [" + modelValue.getClass().getName() +
                            "] to request in view with name '" + getBeanName() + "'");
                }
            }
            else {
                request.removeAttribute(modelName);
                if (logger.isDebugEnabled()) {
                    logger.debug("Removed model object '" + modelName +
                            "' from request in view with name '" + getBeanName() + "'");
                }
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值