我一直在阅读很多像这样的问题,但我没有摆脱困境,我开始认为这个问题是tomcat玩的。 首先,这是我的web.xml,我的* -servlet.xml和我的控制器。
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Spring REST Server</display-name>
<description>Spring REST Server</description>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:env/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/applicationContext.xml
classpath:config/kimboo-servlet.xml
</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>Kimboo</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring MVC Dispatcher Servlet -->
<servlet>
<servlet-name>kimboo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/applicationContext.xml
classpath:config/kimboo-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>kimboo</servlet-name>
<url-pattern>/home/</url-pattern>
</servlet-mapping>
</web-app>
这是我的kimboo-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="ar.com.kimboo.server.ui.controller" />
<mvc:annotation-driven />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/AppClient/pages/" />
<property name="suffix" value=".html" />
</bean>
这是我的控制器
@Controller
@RequestMapping(value = "/home")
public class HomeController {
@RequestMapping(value = "/")
public String home() {
return "login";
}
@RequestMapping(value = "/main")
public String main() {
return "main";
}
@RequestMapping(value = "/about")
public String main() {
return "about";
}
}
这是一个非常简单的例子,我不知道为什么不工作。我已经提到了很多这样的问题,在这里和其他网站,我不知道我错过了什么。
顺便说一下,在控制器中我尝试了所有的轮次以匹配网址;将“/ home /”或“home /”放在类级别,并将“login”或“main”放在方法级别。
唯一可行的是当我点击localhost:8080 / myServer / home /。我尝试在web.xml的url-pattern中使用“/ home / ”而不是“/ home /”。我也试过用“/”和“/ ”,但是是一样的。
这种方法的唯一方法是在web.xml的url-pattern中使用
<url-pattern>/home/</url-pattern>
<url-pattern>/home/main/</url-pattern>
<url-pattern>/home/login/</url-pattern>
然后我可以点击所有网址。我不知道该怎么办,也许这是一个tomcat 7问题?
答案 0 :(得分:1)
您没有为控制器和注释处理程序配置映射。在kimboo-servlet.xml中添加以下bean配置,并添加相应的jar.It可能有效。
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/home/**=homeController
</value>
</property>
</bean>
答案 1 :(得分:0)
而不是这是一个TomCat问题,我怀疑这是你如何注释控制器的问题。请更换您的控制器注释,如下所示
@Controller
public class HomeController {
@RequestMapping(value = "/home")
public String home() {
return "login";
}
@RequestMapping(value = "/home/main")
public String main() {
return "main";
}
@RequestMapping(value = "home/about")
public String main() {
return "about";
}
}
这只是猜测。对不起,如果我弄错了。我记得在REST服务中看到过这个问题。也许它是一样的。现在没时间自己测试一下。
答案 2 :(得分:0)
看看这个问题:Basic Spring MVC config: PageNotFound using InternalResourceViewResolver。原因是您的映射太宽并且会干扰JspServlet
映射。