HTTP请求不会通过控制器

时间:2012-05-04 01:06:22

标签: java spring spring-mvc controller

我创建了一个简单的Maven项目,它只有一个简单的控制器类,只显示服务器时间,但它永远不会通过控制器,很乐意提供任何帮助。

我的控制器类:

@Controller
@RequestMapping(value = "/")
public class Test
{
private static final Logger logger = LoggerFactory.getLogger(StudentsController.class);


@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
    logger.info("Welcome home! the client locale is "+ locale.toString());

    Date date = new Date();
    DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

    String formattedDate = dateFormat.format(date);

    model.addAttribute("serverTime", formattedDate );
    System.out.println(formattedDate);

    return "index";
}

} 

的web.xml

  <?xml version="1.0" encoding="UTF-8"?>
  <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 <servlet>
 <servlet-name>test</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
 <servlet-name>test</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
 </web-a

弹簧servlet.xml中

     <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          
       xmlns:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

      <!-- not strictly necessary for this example, but still useful, see       
       http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference 
       /html/mvc.html#mvc-ann-controller for more information -->
       <context:component-scan base-package="test" />
       <mvc:default-servlet-handler/>


       <!-- the mvc resources tag does the magic -->
      <mvc:resources mapping="/resources/**" location="/resources/" />

        <!-- also add the following beans to get rid of some exceptions -->
       <bean        
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
       <bean
         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        </bean>

     <!-- JSTL resolver -->
      <bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="viewClass"
     value="org.springframework.web.servlet.view.JstlView" />
       <property name="prefix" value="/WEB-INF/jsp/" />
       <property name="suffix" value=".jsp" />
      </bean>

的index.jsp

  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  <html>
<head>
    <title>Spring RESTful Example</title>
</head>
<body>
    <p>Your WebApplication is up and running....</p>

    <div>
    Server Time is:

<div>
${serverTime} 

</div>  
    </div>
</body>
  </html>

当我在Tomcat服务器上运行时,输出为:

Your WebApplication is up and running....
 Server Time is:
 ${serverTime}

请帮忙吗?

2 个答案:

答案 0 :(得分:1)

问题似乎与Tomcat有关 - 你能看到tomcat.home \ conf文件夹中是否有一个web.xml文件,其中的条目如下:

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    ....


<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.jspx</url-pattern>
</servlet-mapping>

这是解释jsp的那个。

只是为了调试,我要尝试的另一件事是将这些条目显式地放在你的应用程序web.xml文件中。

更新:@ user1067665根据你的评论尝试了一点之后,它肯定听起来不像是一个Tomcat问题,它更像是一个应用程序配置问题。我认为解决这个问题的方法是用<mvc:annotation-driven/>替换你对AnnotationHandlerAdapter和DefaultAnnotationHandlerMapping的定义,请你试试看看是否有用

答案 1 :(得分:1)

您还要双重映射您的请求...路径将是/ index / index

从方法级别注释中删除“value”参数,可以保留“method”参数。