前言
自己之前写了好几个web程序,都遵从这样的方式:地址栏输入的url,后台一定存在对应的servlet。
然而某天看着自己博客地址,链接由域名和自己用户名(如上图所示),就忍不住开始想了,csdn那么多用户,总不可能有那么多servlet吧。
一定是进行了某种映射,于是去查了些资料,知道了如何去实现这样的效果。
使用url映射的好处
先说说好处,知道好处才有力气用。
1、缩短url,隐藏实际路径提高安全性 。
2、易于用户记忆和键入。
3、易于被搜索引擎收录。
4、保证用户的书签保存以及友情链接长期有效。(因为外现的url并不存在,实际更新维护时不会对虚拟url产生影响)
第一:易扩展,如上面说的用户名作为url的一部分,既方便用户记忆,代码结构也更直观
第二:便于搜索引擎对链接
使用
步入主题,我们来看看SpringMVC怎样进行URL映射
普通映射
@RequestMapping(value = "abcde")
public String shi()
{
return "";
}
多个url映射
@RequestMapping(value = {"abcde", "fgh"})
public String shi()
{
return "";
}
获取路径变量的url映射
@RequestMapping(value = "/{name}")
@ResponseBody
public Map shi(@PathVariable String name)
{
HashMap s = new HashMap();
s.put("aaa", name);
return yi(name);
}
基于通配风格的url映射
通配符
? 表示匹配一个字符,不能为空
比如@RequestMapping(value = “/a?”)
匹配:
localhost:8080/aa
localhost:8080/ab 等等
- 表示匹配任意个字符但不能跨/
比如@RequestMapping(value = “/a*”)
匹配:
localhost:8080/aa
localhost:8080/abc
localhost:8080/acde
localhost:8080/acde/ 等等
不能匹配
localhost::8080/acde/s
** 表示匹配任意个字符并且无/的限制
比如@RequestMapping(value = “/a/**”)
匹配:
localhost:8080/aa
localhost:8080/abc
localhost:8080/acde/saf
localhost:8080/acde/saf/asf 等等