spring MVC框架配置(详细版)

第一步:导入所需要的包

从官网http://repo.spring.io/libs-release-local/org/springframework/spring/4.3.0.RELEASE/ 下载 spring-framework-4.3.0.RELEASE-dist.zip 压缩包。

这里写图片描述

解压之后,找到libs文件夹下的.jar包:

这里写图片描述

将libs文件夹下的.jar包复制到项目的“WebContent”–>“WEB-INF”–>“lib”目录下。

这里写图片描述

注意这里面有一个 commons-logging-1.1.1.jar 包是在上述下载的libs目录下所没有的,需要另外导入。我已经将上述需要的.jar包打包好,各位读者有需要也可以前往下载(http://download.csdn.net/detail/u014607184/9589548)。

第二步:配置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>

  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml

    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>&nbsp;
    </init-param>
    -->
       <load-on-startup>1</load-on-startup><!-- 自动启动 -->
  </servlet>
  <!-- 设置服务器映射,表示哪些请求会送到该服务器去处理 -->
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern><!-- 表示哪些URL会送到该服务器去处理 -->
  </servlet-mapping>

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

</web-app>

注册一个<servlet>,DispatcherServlet为总的控制中心,所有请求首先会送到这里,<servlet-mapping>设置哪些会送到总的控制中心去处理。上述的<url-pattern>/</url-pattern>设置了所有通过文档的请求都会交由总的控制中心去处理。

第三步:配置spring-servlet.xml文件

每个请求到了总控制中心后根据需求,将会分配到相对应的控制器controller去处理,那么请求是如何映射在对应的controller的。DispatcherServlet初始化时,会自动去查询配置文件完成对象实例化,查询位置默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如上述文件中我们设置的spring-servlet.xmlspring-servlet.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.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">                    

    <!-- 设置映射方式 -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.html">testController</prop> <!-- 通过url来绑定controller -->
            </props>
        </property>
    </bean>

    <bean id="testController" class="test.springMVC.testController"></bean>

    <!-- scan the package and the sub package -->
    <context:component-scan base-package="test.SpringMVC" />

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

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

    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

当请求到达DispatcherServlet时,会根据Handler Mapping组件来决定每一个请求会分配表到哪一个controller去处理,上述程序中Handler Mapping设置是下面这部分:

这里写图片描述

上述代码中通过URL来进行映射,可以设置<prop>属性,该属性相当于键值对,key为请求的URL,里面的值为对应的控制器id,如图所示。也就是说,当请求的URL为index.html时,会根据Handler Mapping的设置,将该请求分配到id为testController控制器去处理。

当请求分配到了对应的controller处理完成后,controller会返回一个逻辑视图名称,对于这个逻辑视图名,需要用到视图解析器来解析,如下设置了利用URL来解析,设置了前缀和后缀属性,这样就可以根据controller返回的逻辑视图名拼接成一个完整的URL。

这里写图片描述

例如controller返回的逻辑视图名是“index”,那么加上前缀和后缀就,完整的URL视图为“/WEB-INF/jsp/index.jsp”。同样的返回视图名,如果我们设置的后缀属性为.html,那么访问的就是“/WEB-INF/jsp/index.html”文件。我们在“/WEB-INF/jsp/”目录下新建两个文档index.htmlindex.jsp:

这里写图片描述

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>html test</title>
</head>
<body>
<h1>这是html页面</h1>
</body>
</html>

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<body>
this is jsp page
</body>
</html>

这里通过URL寻找view的时候,有些读者可能会报错:Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,这是因为还缺少两个跟jstl相关的jar包。这时可以去网站 http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 下载jakarta-taglibs-standard-1.1.2.zip这个包,解压缩后将standard和jstl两个包放入lib下即可,这个在我打包上传的spring MVC所需jar包下载(http://download.csdn.net/detail/u014607184/9589548)。

第四步:配置控制器controller

创建controller主要的方式是直接实现Controller 接口或AbstractController抽象类。这里我们直接实现Controller 接口,在项目的src目录先创建一个test.springMVC包,在该包创建testController.java。testController.java文档如下:

package test.springMVC;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class testController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, 
            HttpServletResponse response) throws Exception {
        System.out.println("controller is working");
        return new ModelAndView("index");
    }

}

上述代码通过继承Controller接口,创建了一个testController控制器,该控制器只有一个handleRequest方法,返回一个ModelAndView,返回的ModelAndView只是一个视图逻辑名称,该逻辑名需要通过ViewResolver和view来解析。

第五步:测试

最后就是将项目添加到服务器上,选择服务器,右击后选择add and remove 选项,然后将项目移动服务器中。

这里写图片描述

启动服务器,在外部浏览器中通过http://localhost:8080/springMVC/index.html访问,可以得到index.jsp显示页面

这里写图片描述

另外在Eclipse控制台能看到我们写在testController控制器中打印出来的字符串,说明该请求触发了testController控制器

这里写图片描述

如果我们将spring-servlet.xml文件中关于视图解析部分改成如下

这里写图片描述

重启服务器后,在外部浏览器通过相同的地址(http://localhost:8080/springMVC/index.html)去访问,返回的就是index.html文档显示的结果

这里写图片描述

至此,spring MVC框架的基本配置已经完成,并且经过测试可用。关于spring MVC框架更多的学习将在后续的博客中介绍。

发布了55 篇原创文章 · 获赞 311 · 访问量 52万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章