spring MVC框架(入門篇)-1
Spring Web MVC 簡稱(Spring MVC),是一個Spring提供給web應用的一個框架設計
1.MVC是什麽?
MVC框架是一種理念,被廣泛應用到各類語言和開發中。
M-MODEL(模型層)
V-VIEW(視圖層)
C-COntroller(控制層-或者叫控制器)
2.MVC有什麽作用?
MVC可以解耦各個模塊
3.Spring MVC 的各個模塊扮演什麽樣的角色?
Servlet扮演控制器(Controller)
Java Bean 是一個專門操作數據庫組件的模型層(MODEL)
JSP主要是展示給用戶看的,扮演一個視圖的角色(VIEW)
4.Spring MVC的核心是什麽?
Spring MVC的核心在於其流程,這是使用Spring MVC框架的基礎,Spring MVC是一種基於Servlet的技術,
它提供了核心控制器(DispatcherServlet)和相關的組件
並制定了松散的結構,以適合各種場景的需求。
DispatcherServlet:叫做核心控制器,
Spring C 層框架的核心是 DispatcherServlet,它的作用是將請求分發給不同的後端處理器,也即 使用了一種被稱為Front Controller 的模式
Spring 的C 層框架使用了後端控制器來、映射處理器和視圖解析器來共同完成C 層框架的主要工作。
spring 的C 層框架還真正地把
了一種被稱為Front Controller 的模式
Dispatcher:調度者,調度員,調度程序
servlet的作用:攔截HTTP頁面發送過來的請求
5.控制層(control)的作用是什麽?
- 封裝web 請求為一個數據對象、
- 調用業務邏輯層來處理數據對象、
- 返回處理數據結果及相應的視圖給用戶
下面是一個簡單的實例
1.創建一個web project 不是java project(spring MVC是在web項目應用的,不是java項目)
註意:創建的時候將web.xml選中
2.添加spring mvc的支持
3.配置web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 6 id="WebApp_ID" version="3.0"> 7 <display-name>my_web_spring</display-name> 8 <!-- 項目歡迎頁,首頁 --> 9 <welcome-file-list> 10 <welcome-file>index.jsp</welcome-file> 11 </welcome-file-list> 12 <!-- 配置ContextLoaderListener 用來初始化Spring IOC容器 --> 13 <listener> 14 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 15 </listener> 16 <!-- 配置Spring Ioc配置文件路徑 --> 17 <context-param> 18 <param-name>contextConfigLocation</param-name> 19 <param-value>classpath:applicationContext.xml</param-value> 20 </context-param> 21 22 23 <!-- 註意:Spring MVC框架會根據Servlet-name的配置,找到/WEB-INF/spmvc-servlet.xml作為配置文件載入web工程中 --> 24 <servlet> 25 <servlet-name>spmvc</servlet-name> 26 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 27 <!-- 下面的代碼表示Dispatcher在服務器啟動的時候就初始化 --> 28 <load-on-startup>1</load-on-startup> 29 </servlet> 30 <!-- servlet的攔截配置 --> 31 <servlet-mapping> 32 <servlet-name>spmvc</servlet-name> 33 <!-- 攔截以 後綴為“do”為結尾的請求 --> 34 <url-pattern>*.do</url-pattern> 35 </servlet-mapping> 36 </web-app>
在上面我們配置了DispatcherServlet
DispatcherServlet 說白了其實就是一個Servlet ,它是對請求進行轉發的核心Servlet 。
在這裏即所有.do 的請求將首先被DispatcherServlet 處理,
而DispatcherServlet 它要作的工作就是對請求進行分發(也就是說把請求轉發給具體的Controller )。
可以簡單地認為,它就是一個總控處理器,但事實上它除了具備總控處理理器對請求進行分發的能力外,還與spring 的IOC 容器完全集成在一起,從而可以
更好地使用spring 的其它功能。在這裏還需留意 < servlet-name > spmvc </ servlet-name > ,下面
4.建立 spmvc-servlet.xml 文件,它的命名規則: servlet-name-servlet.xml 。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 3 <beans> 4 <!--在spring中一切資源都被視為bean --> 5 <bean id="simpleUrlHandlerMapping" 6 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 7 <property name="mappings"> 8 <props> 9 <prop key="/my.do">MyControl</prop> 10 </props> 11 </property> 12 </bean> 13 <!-- 說明: my.do 的請求將給名為 MyControl 的 bean 進行處理。 --> 14 <bean id="MyControl" class="com.pojo.MyController"></bean> 15 16 17 </beans>
5.編寫com.test.MyController.java文件
package com.pojo; 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 MyController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub ModelAndView mv = new ModelAndView("index.jsp"); mv.addObject("message", "餵餵餵,是我"); return mv; } }
6.編寫index.jsp文件
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP ‘index.jsp‘ starting page</title> 13 <meta http-equiv="pragma" content="no-cache"> 14 <meta http-equiv="cache-control" content="no-cache"> 15 <meta http-equiv="expires" content="0"> 16 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 17 <meta http-equiv="description" content="This is my page"> 18 <!-- 19 <link rel="stylesheet" type="text/css" href="styles.css"> 20 --> 21 </head> 22 23 <body> 24 This is my JSP page. <br> 25 ${message} 26 </body> 27 </html>
7.啟動服務器
因為在web.xml中設置了歡迎頁,所以訪問項目時直接訪問的是index.jsp
在地址欄中輸入my.do
8.備註
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 6 id="WebApp_ID" version="3.0"> 7 <display-name>my_web_spring</display-name> 8 <!-- 項目歡迎頁,首頁 --> 9 <welcome-file-list> 10 <welcome-file>index.jsp</welcome-file> 11 </welcome-file-list> 12 <!-- 配置ContextLoaderListener 用來初始化Spring IOC容器 --> 13 <listener> 14 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 15 </listener> 16 <!-- 配置Spring Ioc配置文件路徑 --> 17 <context-param> 18 <param-name>contextConfigLocation</param-name> 19 <param-value>classpath:applicationContext.xml</param-value> 20 </context-param> 21 22 23 <!-- 註意:Spring MVC框架會根據Servlet-name的配置,找到/WEB-INF/spmvc-servlet.xml作為配置文件載入web工程中 --> 24 <servlet> 25 <servlet-name>spmvc</servlet-name> 26 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 27 <!-- 下面的代碼表示Dispatcher在服務器啟動的時候就初始化 --> 28 <load-on-startup>1</load-on-startup> 29 </servlet> 30 <!-- servlet的攔截配置 --> 31 <servlet-mapping> 32 <servlet-name>spmvc</servlet-name> 33 <!-- 攔截以 後綴為“do”為結尾的請求 --> 34 <url-pattern>*.do</url-pattern> 35 </servlet-mapping> 36 </web-app>
如果亂碼,需要設置字符編碼
spring MVC框架(入門篇)-1