您的位置:首页 > 编程语言 > Java开发

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框架更多的学习将在后续的博客中介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring-MVC web-xml