例如,不是使用http://mysite.com/articles/articleId这样的URL,而是使用http://mysite.com/articles/my-article-subject这样的URL。
如果您正在使用新的Spring-MVC注释,您可以使用@RequestMapping和@PathVariable注释:
@RequestMapping("/articles/{subject}")
public ModelAndView findArticleBySubject(@PathVariable("subject") String subject)
{
// strip out the '-' character from the subject
// then the usual logic returning a ModelAndView or similar
}
我认为仍然有必要去除连字符 -。
http://mysite.com/articles/my-article-subject比http://mysite.com/articles/articleId更强大的URL,特别是如果标题和头部标签也匹配“my-article-subject”,并且页面内容中有“my”,“article”和“subject”。
例如,如果您想要URL
http:///blog/11/12/2009/my-hello-world-post/
然后配置servlet映射
<servlet>
<servlet-class>com.blog.Blog</servlet-class>
<servlet-name>blog</servlet-name>
<servlet-class>com.blog.Blog</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>blog</servlet-name>
<url-pattern>/blog/*</url-pattern>
</servlet-mapping>
并在servlet代码中
String url = request.getPathInfo();
StringTokenizer tokens = new StringTokenizer(url,"/");
while(tokens.hasMoreTokens()){
out.println("
"+tokens.nextToken());
}
使用这些参数从数据库获取数据并向用户显示
标准的Java Web框架还没有准备好处理这种类型的URL。
据我所知,SpringMVC不支持这种类型的URL。
有两个框架我确定支持这种类型的URL:Mentawai和VRaptor。
如果你只是想进行SEO优化,你可以这样设计你的URL:
http://mysite.com/articles/my-article-subject/articleId
或者
http://mysite.com/articles/articleId/my-article-subject
在评估URL时,只需忽略my-article-subject部分。
亚马逊在其URL中也采用了类似的方法:
这里的文本"Dark-Crystal-Jean-Pierre-Amiel"是完全不相关的,因为文章是由id B00000JPH6标识的。
编辑:实际上我刚刚注意到,在此处使用了正好相同的技术来生成SEO友好的URL...
我在我们的应用程序中使用了基于JSF的Pretty Faces http://ocpsoft.org/prettyfaces/,这是一个非常简洁的解决方案。不确定它是否适用于Spring MVC,请查看我们的URL。
http://www.skill-guru.com/cat/certification-mock-test
http://www.skill-guru.com/test/81/core-spring-3.0-certification-mock
http://www.skill-guru.com/tutor/Pro+ESL
之前我们的URL不够友好,附加了jsession Id。现在有了pretty filter的帮助,所有URL都变得整洁清晰。 这与WordPress URL非常一致。
生成包含id和描述的url,例如这个url:https://dev59.com/8UfRa4cB1Zd3GeqP8FSx
。在servlet中解析url,然后使用id从数据库中获取数据。同样的技术也适用于此stackoverflow页面。看一下url,它是https://dev59.com/8UfRa4cB1Zd3GeqP8FSx
,但只考虑了questionId,而忽略了描述。尝试https://dev59.com/8UfRa4cB1Zd3GeqP8FSx
或https://dev59.com/8UfRa4cB1Zd3GeqP8FSx/abcdxyz
,你将得到相同的页面。这是生成seo urls的非常好的技术。