aop怎么获取springmvc controller中的requestmapping
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了aop怎么获取springmvc controller中的requestmapping相关的知识,希望对你有一定的参考价值。
参考技术A @RequestMapping(value = "/login", method = RequestMethod.GET)public ModelAndView myMethod(HttpServletRequest request,
HttpServletResponse response,
//@RequestParam("username")String username, @RequestParam("password")String password
String username,String password,//如果和前台的一样一样简写成这样
ModelMap modelMap) throws Exception
username = new String(username.getBytes("iso8859-1"),"UTF-8");//编码问题 (服务器一帮都是iso的)
System.out.println(username+":"+password);
modelMap.put("loginUser", username);
modelMap.put("msg", "I'm in session");
return new ModelAndView("/view/hello", modelMap);
这里是一个方法,springMVC中参数可以直接现在方法的参数列表中,如果是对象属性的话也可以直接使用对象例如(User user,...)
刚才的方法对应的前台:
<form action="login">
username:
<input name="username" />
<br>
password:
<input name="password" type="password" />
<br>
<input type="submit" value="登入" />
</form>
追问
我的form表单中有10多个字段 而且和数据库都是一一对应的,而且以后说不定还会增加,不想一个字段一个字段的传,想直接将整个form表单的所有字段全传过去 该怎么写啊
回答
这些数据都是一个类里面的吧。就只要吧原来的string username,string password ...
改成哪个类就行了,会自动封装进去的例如:方法的参数User user,HttpRequest requrst,..
使用的时候只要user.getUsername();
类似下面的:
@RequestMapping("/addUser")
public String addUser(User user,HttpServletRequest request)
userManager.addUser(user);
return "redirect:/user/getAllUser";
本回答被提问者采纳 参考技术B
@Aspect
public class UrlAuthFilter
@Pointcut("execution(* xx.xx.xx.controller.*(..))") //切入点:所有controller下的所有方法
public void urlAuth() ;
@Around("@annotation(org.springframework.web.bind.annotation.RequestMapping)")//拦截所有带有RequestMapping注解的方法
public Object verifyAuth(ProceedingJoinPoint thisJoinPoint)
System.out.println ("切面执行了。。。。");
RequestMapping rm = ((MethodSignature)thisJoinPoint.getSignature()).getMethod().getAnnotation(RequestMapping.class);
String [] values = rm.value();
return null;
数组values就是你想要的RequestMapping中的url值。
SpringMVC中配aop拦截不生效,咋回事
参考技术A 最近由于项目原因,在Spring+SpringMVC+Mybatis的环境中,增加对controller或是service的日志监控,在网上搜了半天,按照SpringAop的配置出不了结果,在按照网上的各种配置改……,各种头疼中,无意中看到摸个高手写的一段文字突然,感觉很有意思,就这样莫名其妙的解决了。回头看,我去,别人都写好了,我们配置都不会配置,悲哀…,这就是我对各种框架一知半解,甚至不知道的结果。首先对入口文件,web.xml分析:
还有一点,我们可以查到,加载这连个配置文件的累分别是:spring(applicationContext),SpringMVC(webApplicationContext)(希望没记错,记错了自己对应修改)
第一步,要明确,我们是在SpringMVC上aop监测,那么所有的报扫描注入都在SpringMVC的配置文件中完成,不要再spring的配置文件中完成,不然在开启代理后,发现还是没有起到任何作用。(当然,aopalliance-1.0.jar,aspectjweaver-1.8.6.jar这两个jar包不可缺少)
第二步,在SpringMVC的配置文件中开启它的代理模式:<aop:aspectj-autoproxy expose-proxy="true"></aop:aspectj-autoproxy>
第三步,进行aop监测相关方法的类的编写
最后就是一个小技巧,就是先测pointcut表达式的具体到某一个具体函数,成功后,在用.*来代替,在测,知道成功完成为止!!!!!
希望对大家有帮住,也希望有大牛深入剖析其中的原理。有看到的同学请给我转个链接,谢谢。 参考技术B spring整合事物使用aop的,你可以参考一下
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor advice-ref="txAdvice"
pointcut="execution(* com.service.*.*(..))" />
</aop:config> 参考技术C 首先我的aop切面类文件路径有问题,后来移到了logic下的util包中; <aop:aspectj-autoproxy proxy-target-class="true"/> 放在spring-mvc.xml中即可。 ...
以上是关于aop怎么获取springmvc controller中的requestmapping的主要内容,如果未能解决你的问题,请参考以下文章
springmvc里面自定义注解实现aop,controller层里面注解一直不生效,但是注解放在service层又可以??