spring MVC框架配置(详细版)
2016-07-29 15:33
411 查看
第一步:导入所需要的包
从官网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> </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.xml。
spring-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.html和
index.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框架更多的学习将在后续的博客中介绍。
相关文章推荐
- Tomcat web.xml元素详解
- TinyQuery 简单易用的JPQL Query Builder
- 升级Spring MVC 4.1.3.Final遇到接口返回406 (Not Acceptable)的问题
- Spring Framework 将日志输出到slf4j的方法
- spring-mvc源码阅读(一)servlet
- spring-mvc源码阅读(三)RequestMappingHandlerMapping
- Spring MVC 拦截器
- Spring MVC @ResponseBody 中文乱码 解决方案
- web工程启动顺序
- springmvc返回json乱码
- SpringMvc -上传文件
- Spring Mvc工作原理
- web.xml中使用webAppRootKey
- spring mvc 验证码功能
- 在Controller中进行页面跳转的方式
- spring-mvc最小化配置,最简单入门。
- java.lang.IllegalStateException: Cannot map handler
- 关于web.xml里相关配置参数的作用及使用
- 搭建json格式的webservice服务器
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的