0

我用一个简单的控制器类创建了一个简单的 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

spring-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>

索引.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}

请问有什么帮助吗?

4

2 回答 2

1

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

去掉方法级别注解中的“value”参数,就可以留下“method”参数。

于 2012-05-04T10:12:50.850 回答
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 问题,它更像是一个应用程序配置问题。我认为解决它的方法是将您对 AnnotationHandlerAdapter 和 DefaultAnnotationHandlerMapping 的定义替换为<mvc:annotation-driven/>,您可以试试这个,看看是否可行

于 2012-05-04T09:21:55.890 回答