1. 程式人生 > >SSM三大框架環境搭建之SpringMVC

SSM三大框架環境搭建之SpringMVC

第一步:基於瀏覽器傳送請求給伺服器之後,伺服器啟動訪問的web.xml配置前端控制器(DispatcherServlet)

<!-- 配置Spring MVC 前端控制器 -->
<!-- 註冊前端控制器 -->
<servlet>
	<servlet-name>frontController</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name><!-- 這個名字不能隨意寫 -->
		<param-value>classpath:spring-configs.xml</param-value>
	</init-param>
	<!--配置servlet在伺服器啟動時載入(數字越小優先順序越高) 配置如下選項以後,tomcat啟動時就會初始化這個servlet, 這個servlet在初始化時會讀取contextConfigLocation 
		引數對應的配置檔案. -->
	<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置前端控制器對映 -->
<servlet-mapping>
	<servlet-name>frontController</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

第二步:前端控制器根據請求的url在HandlerMapping中找對應的Controller

在此之前要新增pom.xml檔案的jar包依賴
<dependencies>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-context</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.mybatis</groupId>
      		<artifactId>mybatis-spring</artifactId>
      		<version>1.3.1</version>
      	</dependency>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-webmvc</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-core</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-jdbc</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.mybatis</groupId>
      		<artifactId>mybatis</artifactId>
      		<version>3.2.8</version>
      	</dependency>
      	<dependency>
      		<groupId>mysql</groupId>
      		<artifactId>mysql-connector-java</artifactId>
      		<version>5.1.40</version>
      	</dependency>
      	<dependency>
      		<groupId>org.apache.tomcat</groupId>
      		<artifactId>annotations-api</artifactId>
      		<version>6.0.29</version>
      	</dependency>
      	<dependency>
      		<groupId>junit</groupId>
      		<artifactId>junit</artifactId>
      		<version>4.12</version>
      	</dependency>
      	<dependency>
      		<groupId>com.alibaba</groupId>
      		<artifactId>druid</artifactId>
      		<version>1.0.29</version>
      	</dependency>
      </dependencies>

第三步:在SpringMVC-config.xml中新增開啟mvc註解

<mvc-annotation-driven/>

第四步:寫Controller後端控制器

package com.jt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
	
	@RequestMapping("testMVC")
	@ResponseBody
	public String testMVC(){
		return "pageMVC";
	}
}

在前端控制器直和後端控制器之間還有一個SpringMVC的核心構建是攔截器
寫MVC的攔截器有兩種方式
第一種:寫一個類繼承HandlerInterceptorAdapter,並重寫其方法三個方法,這三個方法的執行順序是不同的,pre方法在前端控制器執行之後後端控制器執行之前執行,post方法在後端控制器執行之後執行,after方法在前端控制器和檢視解析器之間執行
pre方法中需要一個返回值是boolean型別,該返回值若是true就是放行,若是false就是攔截住,所以在這裡還可以設定判斷要攔截的條件

package com.jt.intercepter;

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

import org.apache.ibatis.type.IntegerTypeHandler;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class TimeIntercepter extends HandlerInterceptorAdapter{

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("TimeIntercepter.preHandle()");
		return true;
	}
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("TimeIntercepter.postHandle()");
	}
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("TimeIntercepter.afterCompletion()");
	}	
}

第二種:寫一個類實現HandlerInterceptor介面,並實現其方法

然後在SpringMVC-configs.xml配置該攔截器
這裡可以設定的屬性還有許多,例如不攔截的url,就不一一測試

<!-- 配置攔截器物件 -->
<mvc:interceptors>
	<mvc:interceptor>
		<!-- 要攔截的路徑 -->
		<mvc:mapping path="/**" />
		<!-- 攔截器物件 -->
		<bean class="com.jt.intercepter.TimeIntercepter" />
	</mvc:interceptor>
</mvc:interceptors>

第四步:配置檢視解析器
當前端處理器找到請求的url對應的後端控制器,則得到其返回值,根據返回值從檢視解析器裡去加上字首和字尾在我們的web應用中找到對應的web資源、

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<property name="Prefix" vlaue="/WEB-INF/pages/"></property>
			<property name="Suffix" value=".jsp"></property>
		</bean>

第五步:加上包掃描,將指定的controller交給spring管理

<context:component-scan base-package="com.jt" />

第六步:在專案上右鍵選中屬性為專案新增targetRuntimes執行時環境,再將專案釋出到伺服器中,最後測試一下url
測試url:http://localhost/jt-programer/testMVC.do
測試結果:
在這裡插入圖片描述