2018-08-30

问题:按照课本使用Eclipse部署SpringMVCTest这个web应用(部署方法见解决方法后面)。但是输入URL测试应用时报404错误。


解决方法:在下述的方法中,继续在web.xml中添加<context-param>和<listener>两个标签。最终的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" 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">

  <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>
      org.springframework.web.servlet.DispatcherServlet
  </servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/springmvc-config.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
  </servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/springmvc-config.xml</param-value>
</context-param>

#注意:这里通过init-param和context-param来指定Dispatcher加载时候需要的配置文件所在的路径。
其中,init-param和context-param所指定的路径应该要保持一致,不然就会报错。
可以看到,这里我在两个标签中所指定的“contextConfigLocation”都是"/WEB-INF/springmvc-config.xml"

 <listener>
   <listener-class>
     org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>
</web-app>

部署步骤总结
1、创建Dynamic web project,然后导入需要的包,放到\Webcontent\WEB-INF\lib路径下。
2、在web.xml文件中配置前端控制器DispatcherServlet
通过<init-param>和<context-param>来指定springMVC的配置文件的位置(可以命名为springmvc-config.xml)。
3、配置springmvc-config.xml
该文件声明了业务控制器类(通过扫描指定包),并映射到URL请求。例如下面就是将位于org.fkit.controller包下的HelloController包映射到"/hello"请求。

  <bean name = "/hello" class = "org.fkit.controller.HelloController">

4、接着就要实现这个业务控制器类(如上例的HelloController),该类继承自Controller接口,必须实现handleRequest方法,最后返回一个ModelAndView对象。
ModelAndView对象可以添加模型并传送到其指明具体的视图页面。

  ModelAndView mv = new ModelAndView();
  mv.addObject("message","Hello World!") /添加模型
  mv.setViewName("/WEB-INF/content/welcome.jsp")/指定返回某个视图页面

5、在WEB-INF/content创建视图页面welcome.jsp。

  <body>
        ${requestScope.message}      /将第4步中传递的message变量显示在页面中
  </body>

部署方法

 安装Spring 4.2.0版本,并在Eclipse(4.8 photon)中配置,新建Dynamic web 项目(项目名为SpringMVCTest),选择创建2.5版本的module。然后将所需的Spring框架下的class文件的JAR包和common-logging-1.2.jar包放到
SpringMVCTest\WebContent\WEB-INF\lib
路径下。(由于对Eclipse还不熟悉,这里是直接在windows文件管理器中操作,而不是在Eclipse中进行导入)

 操作完成后,刷新(F5)Eclipse就可以看到src下多了个Web App Libraries,下面存放的就是我们刚刚导入的jar包。

配置前端控制器DispatcherServlet,这里并没有servlet信息。

      <?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" 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>SpringMVCTest</display-name>
      <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>

手动在</welcome-file-list>和</web-app>之间加入下面的内容。
在SpringMVCTest/WebContent/WEB-INF目录下新建springmvc-config.xml文件。

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/springmvc-config.xml</param-value>
</init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

同时还要在WEB-INF下新建一个springmvc-config.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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd     
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.2.xsd">

<bean name = "/hello"   class="org.fkit.controller.HelloController"/>
<bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

 并且作者指出,在spring4.0之后,如果不配置处理映射器、处理器适配器和视图解析器,也会使用默认的完成Spring的内部MVC工作。
 按照课本使用Eclipse部署SpringMVCTest这个web应用。但是输入URL测试应用时报404错误。(解决方法在文章前面)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容