SpringMVC原理及SpringMVC搭建詳解

一. 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文件纔行

右鍵WEB-INF——>new——>file,新建一個web.xml文件。
 <servlet-name>springmvc</servlet-name>

 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

如下圖:


4.配置處理器適配器

新建一個resource文件,與src文件同級,在resource文件中新建一個xml配置文件,這裏我起名爲spring-mvc.xml,然後在這個配置文件裏面配置處理器適配器和映射器等。
新建resource文件方法如下:
File-->new-->other





接下來可以開始配置了

配置處理器適配器:
<!-- 非註解處理器適配器 -->
<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)

5.1註解方式的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.配置視圖解析器

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
整個配置文件如下圖:

9.項目部署調試

運行效果如下圖:

10.代碼文件

***web.xml***
<?xml version="1.0" encoding="UTF-8"?>
<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>
**********************************************************
***spring-mvc.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: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>
****************************************************************************
***mycontrollerZhujie.java****
package com.qyf.test.controller;
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;
}
}
*********************************************************************
***test.jsp***
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章