在我Tomcat的Spring的Java项目,我想有以下URL让Spring DispacherServlet解析正确的URLmap
/索引 - 显示登录页面
/登录 - 登录页
/汽车/ - 列表中提供的汽车
/汽车/(编号) - 显示特定汽车
/汽车/ {ID} /动作 - 在这个特别的车做动作
/人/ - 列出可用的人
/人/(编号) - 显示一个特定的人
/人/(编号)/动作 - 在这个特别的人
Ive得到了我的dispacher-的servlet地图像这样的web.xml中做动作。
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/login</url-pattern>
<url-pattern>/logout</url-pattern>
<url-pattern>/index</url-pattern>
<url-pattern>/cars/*</url-pattern>
<url-pattern>/people/*</url-pattern>
</servlet-mapping>
而且我调度-servlet.xml中图所示:
<bean id="urlMap"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<props>
<prop key="/login">loginController</prop>
<prop key="/logout">logoutController</prop>
<prop key="/index">welcomeController</prop>
<prop key="/cars">listCarsController</prop>
<prop key="/cars/">listCarsController</prop>
<prop key="/cars/*">showCarController</prop>
<prop key="/cars/*/action">actionCarController</prop>
<prop key="/people">listPeopleController</prop>
<prop key="/people/">listPeopleController</prop>
<prop key="/people/*">showPersonController</prop>
<prop key="/people/*/action">actionPersonController</prop>
</props>
</property>
</bean>
这是工作不正常,因为当我访问例如/人/ 1 /动作,Dispacher的servlet的servlet说[1 /动作]的寻找处理者,当然这不是搜索,而是与人/前面的人分离到汽车身份证。
就像'*'将是唯一输入的URL。
顺便说一句,我想保持我的URL的扩展较少,我知道要将调度器映射到web.xml文件中的* .htm,将会照顾到这个问题。
但它必须是映射派发或使调度程序搜索完整的URL定义的一种方式。
准备好尝试alwaysUseFullPath。我已经尝试使用UrlRewriteFilter来创建无扩展名的URL.spring,但它看起来很糟糕,除了使用/ people /因为没有文件来添加扩展名,所以在末尾用.spring填充我的URL地图... – JorgeO 2010-07-16 00:20:48
我试过UrlRewriteFilter它使用这个帖子http://blog.ericdaugherty.com/2010/03/web-file-extensions-are-bad.html – JorgeO 2010-07-16 00:23:08
工作!我不知道为什么不是默认行为。或者更好地记录。谢谢 – JorgeO 2010-07-16 00:48:14