问个和tomcat 大小写有关的问题

mush_me 2009-02-17 10:37:24
服务器是apache+tomcat
项目是webwork+spring做的
需求是要求地址大小写都可以访问。
现在的地址是/news/newsDetail.do?newsId=50
要求/news/newsdetail.do?newsid=50也能访问
我做了个filter,将链接地址都转成了小写。
可是这样的话,webwork就找不到小写的action
(以前的格式是/news/newsDetail.do) 那么namespace是/news,action的name是newsDetail
转成小写后的地址是/news/newsdetail.do,那么namespace是/news,action的name是newsdetail
所以找不到对应的action
There is no Action mapped for namespace / and action name searchdata.
请问该怎么做?

一个很傻的办法是,将webwork里的action的id都写成小写
...全文
412 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
mush_me 2009-03-04
  • 打赏
  • 举报
回复
问题没有完全得到解决,仍然结账了。
现在我的解决方案是,只把主要的几个地址做了大小写转换,而不是所有的路径。
实现方法是:
1.给需要做大小写不敏感的action都写一个小写的别名(newsDetail和newsdetail指向同一个Action,利用webwork的别名)
2.对于象newsId这样的参数,在model里写一个setNewsid()方法,将newsid的值传给newsId

以上策略只能针对已知的action和已知的参数,基本可以解决一些问题。
jimeshengxian 2009-02-27
  • 打赏
  • 举报
回复
不懂
mush_me 2009-02-27
  • 打赏
  • 举报
回复
name到路径转成小写,找到大小的action。
肯定是可以的,虽然现在我还没找到那个需要重写的方法。

可是参数呢,参数也有大小写的,这个就比较复杂了。
zhengyu119079436 2009-02-27
  • 打赏
  • 举报
回复
顶下吧!
smartapp 2009-02-27
  • 打赏
  • 举报
回复
有没有想过这样做带来的方便比带来的麻烦更多?
yuhaian 2009-02-27
  • 打赏
  • 举报
回复
不好做。
入口要【大小写都可以访问】
出口是【大小写不同的】webwork
到你们的服务器的 LOG 内找出各种路径。(newsDetail,newsId,...)
在你的 filter 内,做比较,有的话就转成上面合适的 ACTION/ID。
mqinghuang 2009-02-24
  • 打赏
  • 举报
回复
帮顶,期待答案
mush_me 2009-02-24
  • 打赏
  • 举报
回复
答案在哪里呢?
答案在哪里?
答案在知道答案的那个人脑子里,可是我看不到。
zhoushaolan 2009-02-24
  • 打赏
  • 举报
回复
虽然我也没做个,但也还期待好的答案。
能不能,利用action的插件机制,为扩充点,在action-config.xml提交name路径到ActionProcess的时候
把name属性转成小写呢。。。
david026 2009-02-20
  • 打赏
  • 举报
回复
mark
Yuhao818 2009-02-20
  • 打赏
  • 举报
回复
mark
sqiong 2009-02-19
  • 打赏
  • 举报
回复
我也想知道怎么解决的
mirzlm 2009-02-19
  • 打赏
  • 举报
回复
帮顶,期待答案
lemon5366 2009-02-19
  • 打赏
  • 举报
回复
重写DefaultActionMapper
假设action的id为testWeb
如果用户输入的是testWeb,原有的映射关系可以找到相应的action
如果用户输入的是testweb,则将id都转换成小写的在进行匹配
总而言之,在DefaultActionMapper类里做两次匹配查找,一次是和id比较,另外一次是把id转换成小写的再进行比较。
mush_me 2009-02-19
  • 打赏
  • 举报
回复
怎么没人回答了呢?
Jacky_Zhu_1983 2009-02-17
  • 打赏
  • 举报
回复
顶。学习...
mush_me 2009-02-17
  • 打赏
  • 举报
回复
有朋友建议我自己重写DefaultActionMapper,自己看了看DefaultActionMapper的代码,并没有找到对应action name部分的代码。
而且另外一个问题出来了。
即使将webwork里的action的id都写成小写,webwork找到了对应的action,(当然只是个假设,应为不只是更改一个action配置,是个已运营项目,旧的action有几百个了,每个action都加一个小写的映射,没有从根本上解决问题),参数传递又会出问题。
newsDetail.do?newsId=50 的链接,webwork会自动将50设置到newsId上,
而newsdetail.do?newsid=50,webwork没法自动设置了,因为java是区分大小写的(newsId和newsid是不同的)

希望各位有类似经验的,给指点下。
mush_me 2009-02-17
  • 打赏
  • 举报
回复
把映射的配置文件写两个,给现在的每个action加一个小写的映射
这样action找不到的问题是解决了。
可是参数的传递还是有问题。
参数是按照bean的标准写的,所以webwork才能将其数值准确的填充到bean中。
参数也用了小写后,数据就填充不进去了。

楼上的方法,处理一个action还行,关键是现在的action很多,根本处理不过来。
set和get都是eclipse根据标准的bean自动生成的。
每个set和get都自己写小写的话,根本不现实。
xinyung 2009-02-17
  • 打赏
  • 举报
回复
action不改类的话就小写映射,参数的话,用getParameterNames()枚举出来转化小写再set进去,取值的时候用全部用小写
BrainStorm_Chang 2009-02-17
  • 打赏
  • 举报
回复
mark @@

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧