一. springMVC原理
springMVC的一個核心就是通過一個特殊的Servlet來攔截前端的請求,即DispatcherServlet。然後DispatcherServlet去詢問handlerMapping由哪個Controller來處理該請求。接着,將請求發送給controller來處理,controller處理完成後會返回視圖名稱以及模型數據(可選)。接着,去詢問ViewResolver該邏輯視圖名對應的實際視圖。接着將模型數據發送給實際視圖,實際視圖根據模型數據產生最終的頁面。最後將頁面返回給用戶。
二.SpringMVC搭建
1.環境準備
1.1數據庫環境:Mysql 5.5
1.2java環境:jdk1.7 開發工具Myeclipse
1.3Tomcat : v8.0
1.4 springMVC版本:spring4.2.4(需要spring4.2.4所有包,一定包括spring-webmvc包,因爲springmvc使用的就是這個包)
1.4下載所需要的架包,下載地址:http://www.springsource.org/download
2.新建一個項目
2.1
這樣項目就新建成功了
2.2將架包拷貝到項目
3.配置前端控制器
3.1編寫 web.xml
打開WebRoot/WEB-INF目錄的時候,發現裏面只有一個lib目錄,這是存放各種jar包的地方。我們知道一個web項目必須要有一個web.xml文件纔行。
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
如下圖:
4.配置處理器適配器
接下來可以開始配置了
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
<!-- 註解處理器適配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
<!-- 配置註解掃描器 -->
<context:component-scan base-package="com.qyf.test.controller"/>
5.開發(編寫)Handler(controller)
6.視圖(jsp)的編寫
7.配置處理器映射器
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"></bean>
<!-- 註解處理器映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
8.配置視圖解析器
9.項目部署調試
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<!-- 這是項目的名稱 -->
<display-name>projectspringMVC</display-name>
<!-- 配置springMVC前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置加載的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
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.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 配置處理器適配器 -->
<!-- 非註解處理器適配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
<!-- 註解處理器適配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
<!-- 配置註解掃描器 -->
<context:component-scan base-package="com.qyf.test.controller"/>
<!-- 配置處理器映射器 -->
<!-- 非註解處理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"></bean>
<!-- 註解處理器映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!-- 配置視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>
import java.util.ArrayList;
import java.util.List;
//import com.qyf.test.pojo.Activity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//開發註解的handler類,使用@Controler來標識它是一個控制器
@Controller
@RequestMapping("/tests")
public class mycontrollerZhujie {
// 查詢功能// @RequestMapping實現 對queryItems方法和url進行映射,一個方法對應一個url
@RequestMapping("/test")
public ModelAndView test() throws Exception {
// 調用Service查找數據庫,查詢商品列表,這裏使用靜態數據模擬
//List<Activity> itemsList = new ArrayList<Activity>();
// 向List中填充靜態數據
//Activity items_1 = new Activity();
//items_1.setTitle("okokok");
//itemsList.add(items_1);
// 返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
//modelAndView.addObject("itemsList", itemsList);
// 指定視圖
modelAndView.setViewName("/WEB-INF/jsp/test.jsp");
return modelAndView;
}
}
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'test.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
</body>
</html>