我在spring mvc框架上做了一个基本的应用程序。
当我在web.xml上写下面的url模式时:
<servlet-mapping>
<servlet-name>springxml</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
并运行应用程序(使用../SpringMVCXML/welcome.jsp),它显示HTTP状态404错误。
当我更改.jsp以外的url模式时,应用程序运行正常。
为什么应用程序没有在 .jsp url模式上运行?
我曾使用以下java类作为控制器。
@Controller
@RequestMapping(value="/welcome",method=RequestMethod.GET)
public class ControllerHello {
@RequestMapping(method=RequestMethod.GET)
public String printHello(ModelMap map) {
map.addAttribute("message", "Hello Spring MVC Framework");
return "hello";
}
}
另外,我的springxml-servlet.xml有以下代码:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
答案 0 :(得分:1)
假设你还有springxml servlet也提供除* .jsp之外的其他视图(你的web.xml中可能有其他的servlet映射),情况如下:
您为路径/ welcome注册了一个控制器,而不是/welcome.jsp。因此,/ welcome.jsp未映射到Spring mvc控制器。 / welcome HelloController将为您提供String输出hello。
/welcome.jsp将给出错误404,因为它在WEB-INF中并且没有针对该URL的Spring MVC控制器。
org.springframework.web.servlet.view.InternalResourceViewResolver用于将您的jsp文件放在/ WEB-INF中。查看http://www.mkyong.com/spring-mvc/spring-mvc-internalresourceviewresolver-example/,了解InternalResourceResolver的功能。基本上,它使Spring MVC能够使用不在您的公共资源中的jsp作为视图。 它不是将这些jsps注册为有效URL的机制。
网址在请求图中确定。
答案 1 :(得分:0)
您可能没有任何弹簧控制器映射到此URL /welcome.jsp 你正在使用什么版本的弹簧?如果您使用的是2.5或更高版本的弹簧,请尝试以下代码
@RequestMapping(value = "welcome.jsp")
public String welcomeJSP(){
return "welcome";
}