SpringMVC学习笔记——HelloWorld

一、预备工作

  1. 创建Maven webapp工程。
  2. 使用Maven配置了需要使用的Jar包,Spring基于4.0.0版本。
    pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>uestc.shen</groupId>
    <artifactId>springMVC</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springMVC Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <properties>
        <slf4j.version>1.7.6</slf4j.version>
        <spring.version>4.0.0.RELEASE</spring.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <version>${spring.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

</project>

二、配置DispathcherServlet

在/WEB-INF/web.xml中作如下代码调整:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置DispatcherServlet的一个初始化参数,配置SpringMVC配置文件的位置和名称 -->
        <!-- 实际上也可以不通过ContextConfigLocation 来配置SpringMVC的配置文件,而使用默认的.
                                        默认的配置文件为: /WEB-INF/<servlet-name>-servlet.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>

    <!-- 所有请求均被springDispathcerServlet响应 -->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

(1)其中Maven为我们创建的事基于web-app2.3版本,我们手动更改成2.4或更高版本,此处基于2.5版本,http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
(2)配置一个Servlet,名字自己起,class为org.springframework.web.servlet.DispatcherServlet,DispathcherServlet负责接收请求,查找对应的Controller,接收返回值,显示视图,给客户反应,主要负责整体流程的控制。
(3)配置Servlet拦截的URL。

三、编写DispatcherServlet的配置

在web.xml中的指定位置,或默认位置,添加一个新的xml文件,作为DIspatcherServlet的配置文件,其中包括beans、context、mvc三种XSD命名空间。
内容如下:

<?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.shen.springmvc"></context:component-scan>

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

(1)配置Spring的自动扫描功能,<context:component-scan base-package="com.shen.springmvc"></context:component-scan>,扫描指定包下的所有类文件,解析成bean。
(2)配置一个指定的bean,InternalResourceViewResolver是一种视图解析器,把handler方法返回值(String类型)解析成实际的物理视图(JSP、JSTL、HTML)。

四、编写处理请求的处理器

(1)创建符合命名规则的包名,如com.shen.springmvc.handlers
(2)创建一个类,负责处理请求的一个Controller,示例如下:

@Controller
public class HelloWorld {

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

说明:
(1)使用@Controller注解,标识该类是一个bean,其次我们知道他是一个Controller,使用@Controller而不是@Component。
(2)hello方法负责响应什么URL呢?使用@RequestMapping注解,value为响应的URL,因为可能响应多个URL,则是数组的形式,@RequestMapping(value = { "/helloworld1", "/helloworld2" }),若只有一个,则可以直接@RequestMapping("/helloworld")
(3)在注释中写道,返回值为String类型,被视图解析器解析成前缀+retVal+后缀,做转发操作。

五、编写视图

在/WEB-INF/下创建视图,其中包括视图解析器需要的视图。
/springMVC/src/main/webapp/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>Insert title here</title>
</head>
<body>
    <a href="helloworld">Hello World</a>
</body>
</html>

/springMVC/src/main/webapp/WEB-INF/views/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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h4>Page success !</h4>
</body>
</html>

六、测试代码

采用Tomcat服务器的形式运行,不多说。

猜你喜欢

转载自blog.csdn.net/u012525096/article/details/81275959