SpringMVC Hello World 实例

环境的准备

安装JDK

安装tomcat

安装eclipse for j2ee

下载spring-framework

下载依赖包

配置开发环境

  • 启动eclipse
  • 配置tomcate。windows-->preferences-->server-->runtime environments。add tomcat,安装地址为tomcat8的解压目录,jre选择jre7

开发Hello World

新建web工程

  • 新建 Dynamic Web Project

新建web工程

target runtime 选择 Apache Tomcat v8.0windows

Dynamic web module version 选择 3.1。注意 tomcat7,不支持高版本浏览器

Configuration 选择 Tomcat v8.0tomcat

  • 添加 source folder

添加源码目录

  • 配置 web module

配置生产web.xml

勾选 Generate web.xml deployment descriptororacle

添加工程内容

  • 添加依赖包

将spring-framework的包拷贝到WebContent/WEB_INF/lib下。app

将commons-logging的包拷贝到WebContent/WEB_INF/lib下。

将log4j的包拷贝到WebContent/WEB_INF/lib下。

  • 修改web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>SpringMVC</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>

	<servlet>
		<servlet-name>SpringMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>
  • 添加servlet 在WebContent/WEB_INF下添加 SpringMVC-servlet.xml文件,内容以下:
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
   http://www.springframework.org/schema/beans     
   http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-4.1.xsd">

	<context:component-scan base-package="com.tutorialspoint" />

	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

</beans>
  • 添加jsp文件 在WebContent/WEB_INF/jsp下添加 hello.jsp,内容以下:
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
	<title>Hello World</title>
</head>
<body>
   <h2>${message}</h2>
</body>
</html>
  • 添加controller 在src下添加class文件:HelloController.java,内容以下:
package org.springtest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.ui.ModelMap;

@Controller
public class HelloController{
 
   @RequestMapping(value = "/hello", method = RequestMethod.GET)
   public String printHello(ModelMap model) {
      model.addAttribute("message", "Hello Spring MVC Framework World!");

      return "hello";
   }
}

运行工程

  • 新建tomcat server 在servers视图中新建一个server

新建一个server

新建server 直接点击finish

新建的server

  • 配置tomcat server

选择server,而后右键,能够看到有 open start stop restart等操做

输入图片说明

  • 运行spring工程

右键web porject, Run As --> Run on Server.

在eclipse的浏览器,或者本机的浏览器地址栏输入:http://localhost:808/SpringMVC/hello 就能够看到输出的内容

调试

当修改了java的内容后,等上几秒钟就会从新编译,而且推送到tomcat目录下,刷新页面就能够看到变化。

常见问题

访问tomcat 404

是由于在servers视图中建立了server,可是没有配置使用tocat的安装目录致使。

访问tomcat 404

解决方法:在servers视图删除server,并新建,新建后 勾选 “server location” 下的 “use tomcat installation”,并保存

若是“server locations”下为灰色,则删除server后重建,或者多删除几回。

spring工程没法启动

表现为tomcat没法启动

tomcat 没法启动

启动spring工程报错,异常信息以下:

严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMVC]]
	at java.util.concurrent.FutureTask.report(Unknown Source)
	at java.util.concurrent.FutureTask.get(Unknown Source)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMVC]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
	... 6 more
Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Unknown Source)
	at java.lang.Class.getDeclaredFields(Unknown Source)
	at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
	at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:256)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:132)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
	at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:334)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:774)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5066)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 6 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
	... 20 more

观察日志能够看出,是因为缺乏了 common-logging 和 log4j的包

访问spring工程报404

访问地址: http://localhost:8080/SpringMVC/hello 报404 是因为在servers视图,没有勾选 “server options” 下的 “publish module contexts to separate XML files”,并保存。

server options设置

解决办法:勾选“publish module contexts to separate XML files”

相关文章
相关标签/搜索