Controller 在html绑定
工作快两年了,一直在看人家的博客,自己也没有分享过,现在打算开始写点分享一下,写得不好或者不对,可以多多提宝贵意见。
工作中由于公司的框架已经对很多东西已经封装好了,平时也没用什么springmvc,Struts2这样的一些java框架,自己平时学习了一下一些东西,第一次打算讲一下spring mvc 中的路由绑定。
平时有可能写了一个Controller 以及访问的路径,前端html这边可能进行启用,那么如果在前端写死了一个路径,以后想改这个路径恐怕是非常的麻烦,现在spring 支持了SEL表达式,进行了控制器的路由绑定
package com.carl.mongodb.spring.control;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.ui.Model;
/**
* @author Carl
* @date 2016/3/18
*/
@Controller
@RequestMapping("/example")
public class ExampleController {
@Autowired
private MongoTemplate anotherMongoTemplate;
public MongoTemplate getAnotherMongoTemplate() {
return anotherMongoTemplate;
}
public void setAnotherMongoTemplate(MongoTemplate anotherMongoTemplate) {
this.anotherMongoTemplate = anotherMongoTemplate;
}
@RequestMapping("/user/{id}")
public String showUser(@PathVariable String id, Model model) {
User u = anotherMongoTemplate.findOne(Query.query(new Criteria().and("_id").is(id)), User.class, "user");
model.addAttribute("name", "我是thymeleafe");
model.addAttribute("user", u);
return "user/info";
}
}
如果我们在前端可能会写
<a href="/example/user/aaa111">我的用户</a>
如过日后需求变更
@RequestMapping(“/user/{id}”)
改为
@RequestMapping(“/person/{id}”)
那么我们前端需要跟着改,代码维护成本过高
现在可以不用进行该前端,即可
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<!DOCTYPE HTML>
<html>
<head>
<title>Spring MVC url test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<a href="${s:mvcUrl('EC#showUser').arg(0,"aaa111").build()}">用户</a>
</body>
</html>
<a href="${s:mvcUrl('EC#showUser').arg(0,"aaa111").build()}">用户</a>
针对于这段代码,s:mvcUrl 是基固定的EC为Controller的驼峰标志的大写showUser 为函数名字,当然后面的就是绑定参数了,根据实际情况而定