Spring MVC入門講解

   1、Springmvc是什麼?前端

 Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即便用了MVC架構模式的思想,java

web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助咱們簡化開發,Spring Web MVC也是要簡化咱們平常Web開發的。web

 

          

    2、Spring MVC 架構圖:spring

        

1DispacherServlet前端控制器設計模式

 

負責用戶請求和響應,是一箇中央控制器(調度),調用HandlerMapping查找Handler,調用HandlerAdapter處理器適配器執行Handler,調用ViewResolver視圖解析器去解析視圖,有了DispacherServlet有利於框架擴展,減小了各各組件之間耦合性。spring-mvc

 

 

2HandlerMapping處理器映射器架構

 

負責查找Handler(經常使用action,經過xml配置方式或註解方式將Handler類和request請求Handler連接地址進行對應配置mvc

 

 

3HandlerAdapter處理器適配器app

 

Springmvc提供了不少種適配器,註解適配器支持註解開發、原始servlet適配器(HanderRequestAdapter)支持原始servlet的執行框架

 

負責執行Handler,適配器是按照必定的規則去執行Handler,調用Handler返回的結果是ModelAndViewModelAndViewModelview封裝起來(模型數據和視圖)

 

 

4ViewResolver視圖解析器

 

負責進行視圖解析,返回View,框架執行不少類型的ViewjstlViewpdfView。。。)

3、案列

咱們來撰寫第一個入門小案列:

咱們首先要準備jar包,然而jar包的地址我已經給大家準備好了:http://pan.baidu.com/s/1eRAaG2A

接下來咱們把項目搭建起來:

而後咱們編寫web.xml文件,在這個文件的<web-app>節點下添加以下代碼:

  <servlet>
      <servlet-name>spring</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
      <servlet-name>spring</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

這幾行代碼中,servlet節點的servlet-name是你springMVC配置文件的名字,而配置文件這樣命名:servletName-servlet.xml

<url-pattern>/</url-pattern>表明分發全部請求!
而後咱們在去配置SpringMVC的配置文件具體代碼以下:

<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    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/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="org.springframework.samples.petclinic.web"/>
	<!-- 這行代碼表明的是用哪一個URL地址,訪問哪一個類! name就是URL class就是你輸入這個URL地址後要訪問的類  -->
	<bean name="/first" class="cn.happy.controller.Login" /> -->
	<!-- 視圖解析器:負責進行視圖解析,返回View -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!--
		 前綴(prefix)和後綴(suffix),和咱們返回的View組合,進而找到一個屋裏視圖! 
		組合後的形式:http://localhost:8080/項目名/WEB-INF/jsp/View名.jsp
		-->
		<property name="prefix" value="/WEB-INF/jsp/"  />
		<property name="suffix" value=".jsp"  />
	</bean>
</beans>

 咱們寫完SpringMVC的配置文件以後,就該去編寫類了:

package cn.happy.controller;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class Login extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		//咱們來打印一句話,而後返回一個視圖名
		System.out.println("Hello,Spring MVC!");
		return new ModelAndView("success");
	}
}

而後咱們返回去編寫WEB-INF->jsp->success.jsp頁面

        

成功頁面:

 上面是咱們的第一種方式,第二種方式是是用註解的方式來實現,咱們接下來改一下咱們的配置文件,在文件裏
添加兩行代碼:
<context:component-scan base-package="cn.happy.controller" />
<mvc:annotation-driven/>
第一行代碼的意思是類在哪一個包下,第二行代碼是掃描我這個包下的全部類,接下來咱們編寫咱們Hellocontroller類:
package cn.happy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;


//這個註解是讓咱們的類能夠實現調度請求
@Controller
public class HelloController {
	
	//這個註解是咱們訪問時候的URL地址
	@RequestMapping(value="/hello")
	public String hello(String name){
		//方法中的name參數是能夠被SpringMVC自動裝配的,
		System.out.println("經過非註解模式");
		return "success";
	}
}

 

到這裏咱們的SpringMVC入門小案例已經寫完了,各位大大看完記得點贊哦!
相關文章
相關標籤/搜索