如何知道@RequestMapping引发的时刻?

时间:2011-06-10 15:05:26

标签: java spring-mvc

我有一个Spring MVC Controller类(bean):

@Controller
@RequestMapping("/index.jsp")
public class EjbCaller {

    @Autowired
    private InfoBean infoBean;

    public EjbCaller() {
        System.out.println("creating !!!!!!!!!!!!!!!!!!!!!!!!!!");
    }

    @ModelAttribute("textFromService")
    public String call() {
       System.out.println("!!!!!!!!!!!!!!!!!!!1 gogogogog");
       return infoBean.getRefSampleService().doService();
    }    
}

当我转到index.jsp时,如何知道@RequestMapping(“/ index.jsp”)会好起来?因为我不知道我是否正在为@RequestMapping注释添加正确的值,或者@ModelAttribute可能出错了,因为它也不会触发..

在我的index.jsp中,我有这样的代码:

<p>
    <span>from SampleService: ${textFromService} </span>
</p>

关于我的使用/设置:

我在web.xml中有DispatcherServlet,我有点,它不起作用。我猜ModelAndView这是使用MVC的老方法,@ ModelAttribute这是我理解的新方法。这就是我使用@ModelAtrribute的原因。

我从EJBCaller的构造函数输出jbossConsole,但是当call() - 方法调用时,我不知道这个方法是否运行。

2 个答案:

答案 0 :(得分:1)

控制器只是MV​​C等式的一部分,你应该有:

带有@RequestMapping注释的控制器,注意它们处理哪些URL,它们(基本上)返回视图。在Spring MVC中,这些是使用ViewResolvers完成的,最简单的是:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

那么你可以做类似

的事情
@RequestMapping(value="/test/{myParam}", method=RequestMethod.GET)
public ModelAndView myMethod(@PathVariable("myParam") String param) { 
     ModelAndView mv = new ModelAndView();
     mv.setViewName("index"); // now put index.jsp in /WEB-INF/views
     // try passing the input back to the view so you can play around
     // with the view/parameter handling
     mv.addObject("variableName", param); 
}

在你的Spring配置文件中,有很多选项,我经常这样做:

<mvc:annotation-driven />
<bean name="someController" class="..."/>

这将被拿起。

不要忘记web.xml中的org.springframework.web.servlet.DispatcherServlet

答案 1 :(得分:0)

我刚刚开始使用Spring框架,我使用了经过充分测试的技巧:

public void anyMethod() {
    throw new Error("You're here");
}
重要的是要知道,J2EE应用程序中没有控制台输出,因为这些应用程序在服务器上的某个容器中运行。 (这甚至是Tomcat中的servlet的情况。)你应该使用一些日志系统代替STDOUT或抛出一个错误(当然 - 不是发布版本与日志系统不同。)

为什么Error?就像你现在一样,有两种抛弃物。扩展RunTimeException的错误和异常,您无需捕获。因此,您可以轻松地将这些抛弃物发送到堆叠向上,然后通过容器捕获并记录它们。

如果您看到包含错误500的页面,并且您在堆栈跟踪消息中找到了您在这里,则您已成功设置了请求映射。它很简单,很快,很有风格。