2013-02-02 59 views
0

我想在春天使用AOP登录运行时数据。我能够记录静态消息。但我的问题是我必须记录用户给出的输入值(Eg.Name),如果用户在表单中输入'siva'作为用户名,我的日志消息应该是“Siva已登录”。如何将变量从视图传递到控制器的方法在弹簧

我有一个用于获取用户名的文本框的jsp表单,其中有用于用户名,控制器类和方面类的setter和getter的bean类。

我的控制器类是:

@RequestMapping("/login.htm") 

public ModelAndView success(String name){ 

} 

我看点类是:

@After("execution(* com.controller.MyController.success(String))&&args(name)") 

public void After(){ 

    System.out.println("after method"); 
} 

我不知道怎么弄的控制器方法的用户名。我完全失明。我搜索并尝试了许多可能性,但没有任何结果。任何帮助表示赞赏....在此先感谢...

回答

0

要获得您的控制器方法中的用户名参数,您只需要使用@RequestParam注释“名称”参数。例如: -

@RequestMapping("/login.htm") 

public ModelAndView success(@RequestParam("name") String name){ 

} 

而在你的后建议得到名字,只是改变了方法的签名后,接受“名称”的字符串:

@After("execution(* com.controller.MyController.success(String))&&args(name)") 

public void after(String name){ 
    logger.info("User "+name+" has logged in!"); 
} 

希望它解决了问题。

+0

非常感谢你......它真的解决了我的问题...... –

+0

@PavithraR你可以请upvote答案并将其标记为已解决。谢谢。 –

0
//your Aspect class 
@Aspect 
@Component 
public class MyAspect { 

    @Pointcut("execution(* com.controller.MyController.success(..)) && args(username)") 
    public void controllerExecution(String username){}; 

    @After("controllerExecution(username)") 
    public void afterControllerExecution(final String username){ 
     System.out.println("username is : " + username); 
    } 
} 

//the method in your controller 
@RequestMapping(value="/success") 
public String success(String username){ 
    return "home"; 
} 

请求的URL会是这样的:www.XXX.com/success?username=Johnny @Piyush乔希,在这种情况下,你不一定必须使用@RequestParam获得AOP的作品。

+0

谢谢......我解决了问题... –

相关问题