0

我是 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>

前端控制-​​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";
    }
}
4

1 回答 1

0

正如评论中提到的 - 你应该更新你的 web.xml 以便将 * 映射到你的 servlet:

<servlet-mapping>
    <servlet-name>frontcontrol</servlet-name>
    <url-pattern>*</url-pattern>
</servlet-mapping>

如果您想限制可用的映射,您可以稍后进行调整,但现在可以。

之后,我们需要查看result.jsp(我对您的问题的理解是,当您点击 web 应用程序的根目录时,此页面呈现正常,因此此控制器调用和视图正常)。但是,您可以检查一些有根据的猜测:

  • 您按下的按钮上的网址是什么?是相对的吗?例如,它是“ submit”还是“ /submit”——后者将切断您的应用程序上下文。例如,如果您的应用程序的根目录是http://localhost:8080/testspring使用该 url/submit将引导您到http://localhost:8080/submit- 所以不要点击您的 spring 应用程序,只会立即 404
  • 提交按钮是什么元素?它是按钮还是href?如果是按钮,您使用的是什么方法?这需要匹配控制器上的方法 - 在控制器上,您只匹配对GETurl 提交的请求 - 如果您的按钮是,POSTing则不会点击此方法。

要回答您的最后一点-是的,它将呈现为testspring/而不是testspring/result.jsp-这是因为您使用的是 mvc 框架,而不仅仅是访问系统上的文件-例如,请求已访问/由控制器处理的根 url ()这反过来呈现一个视图 - 视图可以是一个 jsp 或由多个文件(使用图块等)或其他东西组成 - 您不是直接“点击”jsp,而是控制器在提供服务时正在使用 jsp路径 ”/”

于 2013-05-22T15:39:59.127 回答