2007-11-15
使用Spring MVC,出现了点击一次链接,调用同一个方法两次
我在使用Spring的MVC时,出现的这种情况,例如我点击浏览文章这个链接,调用了浏览文章这个方法两次,具体的程序如下,
Spring配置:
xml 代码
- <!-- 抽象Controller定义 -->
- <bean id="baseController" abstract="true"
- class="com.potato.core.BaseMultiActionController">
- <property name="methodNameResolver">
- <bean class="com.potato.core.URLPathMethodNameResolver" />
- </property>
- </bean>
- <!-- 采用className URL Mapping -->
- <bean
- class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
- <!-- 表现层 Resolver -->
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver ">
- <property name="viewClass"
- value="org.springframework.web.servlet.view.JstlView" />
- <property name="prefix" value="/" />
- <property name="suffix" value=".jsp" />
- </bean>
methodNameResolver是我自己实现的一个
具体的实现如下:
java 代码
- public class URLPathMethodNameResolver implements MethodNameResolver {
- /**
- * 得到解析的路径,返回操作的方法名称
- */
- @Override
- public String getHandlerMethodName(HttpServletRequest request)
- throws NoSuchRequestHandlingMethodException {
- //取得servlet Path
- String pathName = request.getServletPath();
- //去掉路径中最后一个/之前的内容
- pathName = pathName.substring(pathName.lastIndexOf("/") + 1);
- //去掉路径中.之后的内容
- pathName = pathName.substring(0,pathName.indexOf("."));
- //返回方法的名称
- return pathName;
- }
- }
Spring Controller:
java 代码
- /**
- * 查看文章
- * @param req
- * @param resp
- * @return
- */
- @SuppressWarnings("unchecked")
- public ModelAndView viewArticle(HttpServletRequest req, HttpServletResponse resp){
- //取得文章编号
- String articleId = req.getParameter("articleId");
- //取得当前页
- int curPage = PageHelper.getCurPage(req);
- //取得文章对象和评论
- Map map = manager.findArticleAndCommentById(articleId, curPage, 10);
- //取得当前登陆用户
- User user = (User)req.getSession().getAttribute("user");
- //根据用户取得改用户的博客
- Blog blog = manager.findBlogByUser(user.getUserId());
- List cates = manager.findAllBlogCateByBlog(blog.getBlogId());
- Map result = new HashMap();
- result.put("article", map.get("article"));
- PaginationSupport page = (PaginationSupport)map.get("page");
- result.put("comments", page.getItems());
- result.put("page", PageHelper.getNumPage(page, req));
- result.put("cates", cates);
- //更新文章浏览数
- manager.updateArticleView((BlogArticle)map.get("article"));
- logger.debug("更新文章的浏览数!");
- return new ModelAndView(VIEW_ARTICLE,result);
- }
VIEW_ARTICLE这个值是JSP页面的路径
页面代码:
xml 代码
- <a href="../article/viewArticle.jspa?articleId=${article.articleId }"><span
- class="postdesc"> ${article.articleTitle } span>a>
点击这个方法就会进到上面的那个方法中去。
这个URL路径的article是控制器ArticleController去掉controller的之后的单词小写,viewArticle是这个控制器中的一个方法。
当点击这个链接的时候回调用上面那个方法两次,不知道为什么,请大家谁知道的给予指点,谢谢
评论
tigershuang
2007-11-15
codeutil 写道
你的页面内容里出现了例如 src="" 这样的属性,就会导致浏览器再发一次请求.
比如 <img src="" />
抓一下http请求就会发现了
比如 <img src="" />
抓一下http请求就会发现了
这个问题我在用struts的时候也碰到过,原因也没找到。
能不能具体讲讲,页面中使用<img src="" /> 这样的代码很正常啊,怎么会出问题呢?
codeutil
2007-11-15
你的页面内容里出现了例如 src="" 这样的属性,就会导致浏览器再发一次请求.
比如 <img src="" />
抓一下http请求就会发现了
比如 <img src="" />
抓一下http请求就会发现了
hf200012
2007-11-15
我在其他地方试了一下没有问题,就是在博客中存在这个问题,可能是页面上的问题,程序是没有问题的
hf200012
2007-11-15
没有。我在别人那测试也是一样啊
daquan198163
2007-11-15
你的鼠标出了连击的bug
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 13823 次

- 详细资料
搜索本博客
我的相册
ttttt
共 7 张
共 7 张
链接
最新评论
-
Java实现按照要求的尺寸对 ...
只能缩小不能放大啊!
-- by likehibernate -
tomcat 6 el表达式的问题
tomcat6 中对5.0中这样的判断 ${not empty command ...
-- by hf200012 -
tomcat 6 el表达式的问题
这个是Tomcat6 的bug:https://issues.apache.or ...
-- by codeutil -
Java实现按照要求的尺寸对 ...
透明的png图片缩放后的图片就不透明了! 怎么解决啊?
-- by form_rr -
[以解决]请教iBatis批量 ...
问题以解决,是因为#oknos#这个地方的#换成$就可以,因为Ibatis认为这 ...
-- by hf200012






评论排行榜