在我的applicationContext.xml中,我把这个
<bean id="something" class="com.to.theController"/>
com.to.theController
中的
我有像
这样的方法@Controller
public theController{
@RequestMapping(value="/api/add", method= RequestMethod.GET)
public String apiAddHandler(Model model){
model.addAttribute("api", new Api());
return "apiForm";
}
}
当jetty启动时,我可以看到定义bean [something,...
但是当我转到http://localhost:8080/api/add
时,我收到404错误。我错过了什么?我已经调试了apiAddHandler方法,当我调用URL
答案 0 :(得分:1)
您的<servlet-mapping>
中是否有web.xml
个元素来映射看似/api/add
到DispatcherServlet
的网址?
如果没有,那么无论Spring MVC如何将URL映射到控制器都没关系,如果请求从未首先进入Spring MVC。
答案 1 :(得分:1)
你需要做一些设置。
在您的web.xml中添加了DispatcherServlet的映射。 像
这样的东西<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*/api/add</url-pattern>
</servlet-mapping>
您必须在弹簧配置中添加注释处理程序
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<context:component-scan base-package="learn.web.controller" />
其中learn.web.controller是包含带注释组件的包
答案 2 :(得分:1)
确保Spring找到您的注释。您应该在日志中看到“INFO DefaultAnnotationHandlerMapping:343 - 映射的URL路径[/ api / add]”到处理程序[com.example.ExampleController@6f3588ca]上。
另外,如前所述,您需要确保在web.xml中拥有正确的url映射。
我用
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
如果使用注释,则将所有URL映射到调度程序servlet。
如果您想在调度程序servlet之外提供一些内容,请添加以下内容
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>