SpringMVC:HelloWorld

做了很久的java项目,写了不少的业务逻辑,但是java框架的基础却了解的少之又少,连最基本的SpringMvc都不会,所以决定从头开始重新学习SpringMvc。废话不多说了,各个社区里有很多SpringMvc的教程,写的都很好,并且我也是按照其中的步骤学习,但依然还是想将学习实践的过程纪录下来以作参考,毕竟能分享出来的东西才能够被消化吸收。言归正传,对于SpringMvc的介绍就不多说了,网上很多,还是从第一个程序开始说起。

工具:

Eclipse:3.6.2H
Tomcat:6.0
jdk:1.7
SpringMvc:4.0.4 Release

我们工程的总体结构如下图,下面就开始一步一步实践:
工程结构

1.新建项目:

New > Other > Web > Dynamic Web Project
填写项目名称”SpringMvcTest”后,Next到完成即可。

2.导入SpringMvc所需要的jar包:

spring-aop-4.0.4.RELEASE.jar
spring-beans-4.0.4.RELEASE.jar
spring-context-4.0.4.RELEASE.jar
spring-core-4.0.4.RELEASE.jar
spring-expression-4.0.4.RELEASE.jar
spring-web-4.0.4.RELEASE.jar
spring-webmvc-4.0.4.RELEASE.jar
commons-logging-1.1.1.jar
拷贝以上jar包到 WEB-INF/lib 文件夹内。

3.WEB-INF目录下创建配置文件 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">

    <!-- 配置DispatchcerServlet -->
    <servlet>
        <!-- 配置DispatcherServlet -->
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置Spring mvc下的配置文件的位置和名称,说明会新建一个springmvc.xml的配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!-- <load-on-startup>1</load-on-startup> -->
    </servlet>

    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 增加对静态资源的支持 --> 
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>    
</web-app>

注:1. 也可以不新建springmvc.xml, 那么默认的配置文件格式为/WEB-INF/[servlet-name]-servlet.xml,对应这里的就是springDispatcherServlet-servlet.xml
2. servlet-mapping表示拦截的模式,“/”,表示对于所有的请求的拦截,包括静态资源如html, js, jpg等。如果不添加下面对静态资源的配置,那么对于静态资源的访问就会报404的错误。
3. 静态资源单独写了servlet-mapping的配置。

4.在src目录下增加配置文件springmvc.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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

        <!-- 配置自动扫描的包 -->
        <context:component-scan base-package="com.springmvc"></context:component-scan>

        <!-- don't handle the static resource -->
        <mvc:default-servlet-handler />

        <!-- if you use annotation you must configure following setting -->
        <mvc:annotation-driven />

        <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name = "prefix" value="/jsp/"></property>
            <property name = "suffix" value = ".jsp"></property>
        </bean>
</beans>

注:1.自动扫描的包表示spring监听的范围,这里是在com.springmvc下。
2.视图解析器,用于把在控制器中的结构解析为实际的物理视图。
3.mvc:default-servlet-handler 会把”/**” url,注册到SimpleUrlHandlerMapping的urlMap中, 把对静态资源的访问由HandlerMapping转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回。
4.mvc:annotation-driven 相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter, 即解决了@Controller注解的使用前配置。

5.增加控制器代码

在src/com/springmvc 目录下增加控制器HelloWorld.java, 代码如下:

package com.springmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorld {
    /**
     * 1. 使用RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析
     * 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发操作
     * "/WEB-INF/views/success.jsp"
     * @return
     */
    @RequestMapping("/helloworld")
    public String hello(){
        System.out.println("hello world");
        return "success";
    }
}

注:1.@Controller是注解,表示是一个控制器,其中有方法hello。
2.@RequestMapping(“”) 用于匹配请求的路径
3.return 返回的“success”,是视图的名称。springmvc.xml中配置的视图解析器即是将return解析到success.jsp上作为响应输出。那么按照如上的配置,我们后面需要在WebContent目录下新建文件夹jsp,其中需要包含success.jsp文件。

6.给HelloWorld增加入口

在WebContent/jsp/目录下新增index.jsp文件:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<a href="helloworld">Hello World</a>
</body>
</html>

注:当项目启动后,输入http://localhost:8080/SpringMvcTest/ 即可看到index.jsp当中的内容。

7.增加视图页面 success.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hello World Success</title>
</head>
<body>
<h1>Hello World Success</h1>
</body>
</html>

OK, HelloWorld我们基本上已经实现了,下面就来说说发布。

8.启动项目

这里我的eclipse当中集成了tomcat的插件,我们直接通过配置小猫来启动:
工程SpringMvcTest上右键 > Properties > Tomcat 选项卡。
a. 勾选 “Is a Tomcat Project”
b. “Context name” 填写 “/SpringMvcTest”
c. “Web application root” 填写 “WebContent”
d. “DevLoader Classpath” 选项卡中,勾选 “Activate DevLoader”, 并且选中”/SpringMvcTest/build/classes”后, 点击Apply, OK。
工程属性Tomcat设置
e. 点击eclipse中的 “Start Tomcat” 按钮,启动Tomcat。
当启动完成以后,我们访问 http://localhost:8080/SpringMvcTest/ 可以看到 hello world的链接,点击进入后显示Success视图。
运行结果

至此,我们的Hello World就已经完成了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注