我是spring mvc的初学者,并尝试创建非常基本的Web应用程序流程。我有 result.jsp ,点击提交时应该呈现 submit.jsp 。我可以看到控制器被调用但我的视图 submit.jsp 没有被渲染。它给我HTTP 404
状态错误,tomcat中没有日志。有人可以帮我弄清楚这里出了什么问题。
我还观察到在运行应用程序时,我被引导到了
testspring/
我看到了我的result.jsp。我宁愿期待它成为
运行应用时testspring/result.jsp
。请原谅我的无知。
的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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>testspring</display-name>
<servlet>
<servlet-name>frontcontrol</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>frontcontrol</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
frontcontrol-servlet.xml中
<context:component-scan base-package ="com.shell.spring.testspringapp">
</context:component-scan>
<bean id ="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
控制器类 - Frontcontrol
@Controller
public class Firstcontrol {
@RequestMapping(value="/")
public ModelAndView invokeme(Model m) {
ModelAndView mav=new ModelAndView();
mav.setViewName("result");
System.out.println("In invoke me method");
return mav;
}
@RequestMapping(value="/submit" ,method=RequestMethod.GET)
public String submit(Model m) {
System.out.println("In submitmethod");
return "submit";
}
}
答案 0 :(得分:0)
正如评论中所提到的 - 你应该更新你的web.xml,以便将*映射到你的servlet:
<servlet-mapping>
<servlet-name>frontcontrol</servlet-name>
<url-pattern>*</url-pattern>
</servlet-mapping>
如果要限制可用的映射,可以稍后调整,但现在可以这样做。
在那之后,我们需要看到result.jsp
(我的问题是你的问题是,当你点击你的webapp的根目录时,这个页面呈现正常,所以这个控制器调用&amp; view是正确的)。但是,你可以检查一些有根据的猜测:
submit
&#34;或者是#34; /submit
&#34; - 后者将削减您的应用程序上下文。例如,如果您的应用的根目录是http://localhost:8080/testspring
,那么使用网址/submit
将引导您http://localhost:8080/submit
- 所以不要点击您的春季应用程序,只会立即404; GET
请求 - 如果您的按钮为POSTing
,则此方法不会被点击。< / LI>
回答你的最后一点 - 是的,它会呈现为testspring/
而不是testspring/result.jsp
- 这是因为你使用的是mvc框架,而不只是点击系统上的文件 - 例如请求已经命中了由控制器处理的根URL(/
),控制器又呈现视图 - 视图可以是一个jsp或由多个文件组成(使用tile等)或其他 - 你是不是&#34;击中&#34;直接使用jsp,而不是控制器在提供路径时使用jsp&#34; /&#34;