我的控制器方法中有几个SYSOUT,它们出现在控制台日志中......验证我所有的@RequestMapping都按预期运行 . 环境bean的@Autowiring也在工作(SYSOUT也正确显示) .
但是,方法的返回(我使用返回String类型的方法)仅导致404s . 找不到* .jsps . 项目正在使用Maven; IDE是eclipse kepler,FWIW .
我的ViewResolver是标准的 . 看不到断开连接 .
My web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>BluPrint</display-name> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <context-param> <param-name>groupId</param-name> <param-value>${project.groupId}</param-value> </context-param> <context-param> <param-name>artifactId</param-name> <param-value>${project.artifactId}</param-value> </context-param> </web-app>
My 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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:task="http://www.springframework.org/schema/task" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xjp="http://www.corpabc.com/schema/xjp" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd http://www.corpabc.com/schema/xjp http://www.corpabc.com/schema/xjp/beans.xsd"> <context:component-scan base-package="com.corpabc.bluprint" /> <mvc:annotation-driven /> <mvc:resources mapping="/resources/**" location="/resources/" /> <import resource="classpath:corpabc/xjp/configuration/properties.xml" /> <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> <bean id="dataSourceDB2" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="jdbc/BluPrint" /> <property name="resourceRef" value="true" /> </bean> <xjp:environment artifactId="${artifactId}" groupId="${groupId}" /> </beans>
My Controller:
package com.corpabc.bluprint.controllers;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import corpabc.xjp.configuration.env.Environment;
/**
*
* Handles requests for the application.
*/
@Controller
@RequestMapping("/*")
public class BluPrintController {
@Autowired
private Environment xjpEnvironment;
@RequestMapping("/init")
protected String catchInit(Map<String, Object> model) {
System.out.println("Got into init method. XJP Environment: "+xjpEnvironment);
model.put("xjp", this.xjpEnvironment);
return "envtest";
}
@RequestMapping("/*")
protected String catchAllOthers(Map<String, Object> model) {
System.out.println("Got into catch-all method: ");
return "defaultPage";
}
}
我的 envtest.jsp
在 /WEB-INF/jsp/
下...但输入网址 ~localhost:8080/bluprint/init
...我得到了404 .
当我输入 ~localhost:8080/bluprint/
时,我得到的是 defaultPage.jsp
. 不知道它是否应该是404,特别是,但这就是我得到的,无论如何 .
1 回答
我怀疑你的问题出在你的servlet映射中 . / 将通过调度程序servlet强制执行所有操作,包括jsps . 试着失去 . 我将在servlet规范和更新中找到相关部分....
从servlet规范:
因此,如果指定/ 覆盖 .jsp映射,那么jsp请求将被路由回调度程序servlet而不是命中jsp .