Spring表达式语言

当使用${}语法时,我们实际上使用的是Spring表达式语言(Spring Expression Language),关于EL,有多个不同变种,SpEL是其中威力强大的一种.
SpEL的用处并不仅限于视图之中,可以将他用在Spring框架的各种地方,例如,在通常@value注解往bean中注入属性时,也可以使用SpEL.
从请求参数中获取数据
我们已经能够在视图中展现来自服务器端的数据吗,但是,如果想获取用户输入该怎么办?根据HTTP协议,有很多方式可以实现这一点,其中最简单的就是传递查询参数到URL之中

package masterSpringMvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController
{
    @RequestMapping("/")
    
    public String hello(@RequestParam("name") String userName, Model model)
    {
        model.addAttribute("message", "name:"+userName);
        return "hello";
    }
    
}
默认情况下,请求参数是强制要求存在的,这意味着,如果不传递该参数,那么将会看到一个错误页面
查阅下@RequestParam的代码,可以看到除了value属性之外,他还有其他两个可用的属性:required和defaultValue
因此我们可以修改代码为其设置一个默认值或者设置为非必填项

package masterSpringMvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController
{
    @RequestMapping("/")
    
    public String hello(@RequestParam(defaultValue="none",value="name") String userName, Model model)
    {
        model.addAttribute("message", "name:"+userName);
        return "hello";
    }
    
}