如果想要复刻知乎怎么做呢?
第一步当然是使用知乎。
第二步应该仔细查看url然后建立我们的url映射关系。
点击个人主页
我们发现url变成了这样
https://www.zhihu.com/people/xxx/activities
activity在这里表示动态,其他的页面包括文章,回答,提问等等。
这些url的格式都一样,除了url的末尾名词会改变。
所以我们可以很简单的匹配这些名词和用户id。
package test.SpringMVC; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/people") public class Activities { @RequestMapping("/{id}/activity") public String getAcitivty(@PathVariable("id") Integer id){ System.out.println("[Activity user = ] "+id); return null; } @RequestMapping("/{id}/answers") public String getAnswers(@PathVariable("id") Integer id){ System.out.println("[回答user = ] "+id); return null; } @RequestMapping("/{id}/asks") public String getAsks(@PathVariable("id") Integer id){ System.out.println("[提问 user = ] "+id); return null; } @RequestMapping("/{id}/posts") public String getPosts(@PathVariable("id") Integer id){ System.out.println("[文章 user = ] "+id); return null; } @RequestMapping("/{id}/columns") public String getColumns(@PathVariable("id") Integer id){ System.out.println("[专栏 user = ] "+id); return null; } }
代码就像这样,非常简单。匹配到userid然后返回我们的页面。但是这个时候我们还没有任何的内容(视图view),所以暂时返回null就好。
现在添加几个jsp页面,在里面加入简单的提示信息。
然后我们修改return的值(jsp页面)。
现在我们测试这些页面:
http://localhost:8080/Blog2/people/1/asks
http://localhost:8080/Blog2/people/1/anwsers
http://localhost:8080/Blog2/people/1/posts
http://localhost:8080/Blog2/people/1/asks
http://localhost:8080/Blog2/people/1/columns
都没有任何问题。
package test.SpringMVC; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/people") public class Activities { @RequestMapping("/{id}/activity") public String getAcitivty(@PathVariable("id") Integer id){ System.out.println("[Activity user = ] "+id); return "Activity"; } @RequestMapping("/{id}/answers") public String getAnswers(@PathVariable("id") Integer id){ System.out.println("[回答user = ] "+id); return "Answer"; } @RequestMapping("/{id}/asks") public String getAsks(@PathVariable("id") Integer id){ System.out.println("[提问 user = ] "+id); return "Ask"; } @RequestMapping("/{id}/posts") public String getPosts(@PathVariable("id") Integer id){ System.out.println("[文章 user = ] "+id); return "Post"; } @RequestMapping("/{id}/columns") public String getColumns(@PathVariable("id") Integer id){ System.out.println("[专栏 user = ] "+id); return "Column"; } }