使用Spring MVC,出现了点击一次链接,调用同一个方法两次

我在使用Spring的MVC时,出现的这种情况,例如我点击浏览文章这个链接,调用了浏览文章这个方法两次,具体的程序如下,

Spring配置:

xml 代码
  1. <!-- 抽象Controller定义 -->  
  2. <bean id="baseController" abstract="true"  
  3.     class="com.potato.core.BaseMultiActionController">  
  4.     <property name="methodNameResolver">  
  5.         <bean class="com.potato.core.URLPathMethodNameResolver" />  
  6.     </property>  
  7. </bean>  
  8.   
  9. <!-- 采用className URL Mapping -->  
  10. <bean  
  11.     class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />  
  12.   
  13.   
  14. <!-- 表现层 Resolver -->  
  15. <bean id="viewResolver"  
  16.     class="org.springframework.web.servlet.view.InternalResourceViewResolver ">  
  17.     <property name="viewClass"  
  18.         value="org.springframework.web.servlet.view.JstlView" />  
  19.     <property name="prefix" value="/" />  
  20.     <property name="suffix" value=".jsp" />  
  21. </bean>  

methodNameResolver是我自己实现的一个

具体的实现如下:

java 代码
  1. public class URLPathMethodNameResolver implements MethodNameResolver {   
  2.     /**  
  3.      * 得到解析的路径,返回操作的方法名称  
  4.      */  
  5.     @Override  
  6.     public String getHandlerMethodName(HttpServletRequest request)   
  7.             throws NoSuchRequestHandlingMethodException {   
  8.         //取得servlet Path   
  9.         String pathName = request.getServletPath();   
  10.         //去掉路径中最后一个/之前的内容   
  11.         pathName = pathName.substring(pathName.lastIndexOf("/") + 1);   
  12.         //去掉路径中.之后的内容   
  13.         pathName = pathName.substring(0,pathName.indexOf("."));   
  14.         //返回方法的名称   
  15.         return pathName;   
  16.     }   
  17.   
  18. }  

 

 

Spring Controller:

java 代码

  1. /**  
  2.  * 查看文章  
  3.  * @param req  
  4.  * @param resp  
  5.  * @return  
  6.  */  
  7. @SuppressWarnings("unchecked")   
  8. public ModelAndView viewArticle(HttpServletRequest req, HttpServletResponse resp){   
  9.     //取得文章编号   
  10.     String articleId = req.getParameter("articleId");   
  11.     //取得当前页   
  12.     int curPage = PageHelper.getCurPage(req);   
  13.     //取得文章对象和评论   
  14.     Map map = manager.findArticleAndCommentById(articleId, curPage, 10);   
  15.     //取得当前登陆用户   
  16.     User user = (User)req.getSession().getAttribute("user");   
  17.     //根据用户取得改用户的博客   
  18.     Blog blog = manager.findBlogByUser(user.getUserId());   
  19.     List cates = manager.findAllBlogCateByBlog(blog.getBlogId());   
  20.     Map result = new HashMap();   
  21.     result.put("article", map.get("article"));   
  22.     PaginationSupport page = (PaginationSupport)map.get("page");   
  23.     result.put("comments", page.getItems());   
  24.     result.put("page", PageHelper.getNumPage(page, req));   
  25.     result.put("cates", cates);   
  26.     //更新文章浏览数   
  27.     manager.updateArticleView((BlogArticle)map.get("article"));   
  28.     logger.debug("更新文章的浏览数!");   
  29.     return new ModelAndView(VIEW_ARTICLE,result);   
  30. }  

VIEW_ARTICLE这个值是JSP页面的路径

页面代码:

xml 代码
  1. <a href="../article/viewArticle.jspa?articleId=${article.articleId }"><span     
  2.                                         class="postdesc"> ${article.articleTitle } span>a>  

点击这个方法就会进到上面的那个方法中去。

这个URL路径的article是控制器ArticleController去掉controller的之后的单词小写,viewArticle是这个控制器中的一个方法。

 

 

当点击这个链接的时候回调用上面那个方法两次,不知道为什么,请大家谁知道的给予指点,谢谢

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值