博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用ControllerClassNameHandlerMapping实现SpringMVC的CoC配置
阅读量:5321 次
发布时间:2019-06-14

本文共 2918 字,大约阅读时间需要 9 分钟。

使用CoC,惯例优先原则(convention over configuration)的方式来配置SpringMVC可以帮我们声明Controller的时候省下很多功夫。只要我们的Controller是以XXXController的方式命名的话就可以使用到CoC带来的好处。例如,对于普通的Controller(非MultiActionController),CoC帮我们做以下的映射:HomeController映射到/home*请求URLDisplayShoppingCartController映射到/displayshoppingcart*请求URL
例如,http://106.120.***.**:8080/MallManager/forms/mallorgan/goToPage?goToPage=mallorganconfig
提交到MallorganController.java类的goToPage方法,传的参数是goToPage,值是mallorganconfig

@Controller

public class MemberController {

@RequestMapping

public ModelAndView goToPage(@RequestParam String goToPage,
@RequestParam(defaultValue = "0") String memberid, String oprFlag)
throws Exception {

if (goToPage.equals("memberList")) {}

}

}

 
注意:应该映射成使用全部小写的请求URL对与MultiActionController,映射规则如下:例如,我有一个UserInfoController,里面有一个方法valid,那么就会映射成/userinfo/valid.do(.do对应你设置的dispatcher-servlet的url-pattern)。使用CoC带来的好处就是我们不需要再忍受必须先定义它们,然后还要维护冗长的SimpleUrlHandlerMapping的枯燥。规则就这么多,以下是配置。1.dispatcher-servlet.xml配置:
2.编写我们的Controller:package test.controller;import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.mvc.multiaction.MultiActionController;@Controllerpublic class MYController extends MultiActionController { @RequestMapping public void test(HttpServletRequest request, HttpServletResponse response){ PrintWriter out = null; try { out = response.getWriter(); out.println("ok"); }catch(Exception e) { out.println("not ok"); }finally { out.close(); } } }这里我们可以看到,我们只需要在class前面声明@Controller,方法前面声明@RequestMapping就可以了,其他什么都不需要自己配置,最后使用地址/my/test.do就可以调用了。另外,如果你想对这些使用ControllerClassNameHandlerMapping匹配的Controller使用拦截器的话,只需要为ControllerClassNameHandlerMapping bean的interceptors list注入拦截器就可以了:
如果我配置拦截器 但是不想让他拦截所有的请求 应该怎么配置?那你就用不到ControllerClassNameHandlerMapping了,换SimpleUrlHandlerMapping,手动配置。配置例子如下:
myController1
myController2
Inter1只拦截/MyController1.do,Inter2只拦截/MyController2.do

 

转载于:https://www.cnblogs.com/lixin890808/p/3376515.html

你可能感兴趣的文章
JS对象随机数 random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数。 注意:返回一个大于或等于 0但小于1的符号为正的数值...
查看>>
python学习:缩进
查看>>
二叉树
查看>>
conda命令不能用的问题
查看>>
14.React Native实战之Navigator组件初探
查看>>
Java中 map.values转换为list或者string[]
查看>>
Idea导入项目详解
查看>>
Java保存简单偏好的类
查看>>
HDU-3887 Counting Offspring 树状数组+模拟栈
查看>>
441-安排硬币
查看>>
BZOJ3065 带插入区间K小值
查看>>
- > 并查集模板
查看>>
自学前端学习路线图
查看>>
[背包问题][二进制优化] Jzoj P4224 食物
查看>>
8086中的七种寻址方式
查看>>
jQuery学习笔记 - AJAX
查看>>
MySql | 常用操作总结
查看>>
物联网操作系统的概念和特点
查看>>
Hexo站点之域名配置【2】
查看>>
itsdangerous模块
查看>>