SpringMVC

SpringMVC快速入門

1.Spring MVC的介紹

Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即便用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助咱們簡化開發,Spring Web MVC也是要簡化咱們平常Web開發的 Servlet進行Web開發css

 Servlet的弊端: 一、Servlet的編碼問題 請求-響應(內置編碼過濾器)前端

               二、沒法自動封裝參數。(3種參數傳遞,類型的自動轉換+封裝)web

               三、doXXX方法,oper=(根據自身須要任意聲明函數)spring

               四、切換WEB工程的版本,Servlet配置複雜。編程

                  支持XML和註解 2.5 以上。設計模式

 

2. MVC設計模型

               

  

 

 

 

   

     MVC 是一種著名的設計模式,特別是在 Web 應用程序領域。模式全都是關於將包含業務數據的模塊與顯示模塊的視圖解耦的。這是怎樣發生的?視圖(例如,JSP 頁面)怎樣可以與其模型(例如,包含數據的 JavaBean)解耦?記得這句格言麼?一個層次的重定向幾乎能夠解決計算機業中的全部問題。確實,在模型和視圖之間引入重定向層能夠解決問題。此重定向層是控制器。控制器將接收請求,執行更新模型的操做,而後通知視圖關於模型更改的消息。依賴於模型的狀態而且依賴於請求的控制器能夠決定要顯示哪一個視圖spring-mvc

 

3. Spring MVC的優點

一、清晰的角色劃分:前端控制器(DispatcherServlet)、請求處處理器映射(HandlerMapping)、處理器適配器(HandlerAdapter)、視圖解析器(ViewResolver)、處理器或頁面控制器(Controller)、驗證器( Validator)、表單對象(Form Object 提供給表單展現和提交到的對象就叫表單對象)。架構

2、因爲命令對象就是一個POJO,無需繼承框架特定API,可使用命令對象直接做爲業務對象;mvc

3、和Spring 其餘框架無縫集成,是其它Web框架所不具有的;app

4、可適配,經過HandlerAdapter能夠支持任意的類做爲處理器

5、可定製性,HandlerMapping、ViewResolver等可以很是簡單的定製;

6、功能強大的數據驗證格式化、綁定機制;

7、利用Spring提供的Mock對象可以很是簡單的進行Web層單元測試

8、本地化、主題的解析的支持,使咱們更容易進行國際化和主題的切換。

9RESTful風格的支持、簡單的文件上傳、約定優於配置的契約式編程支持、基於註解的零配置支持等等。

   

4. MVC三元組的概念

MVC (Model-View-Controller):

  • Model:組件等價於 實體 + 業務邏輯層 + 持久層
  • View(視圖):負責進行模型的展現,通常就是咱們見到的用戶界面,客戶想看到的東西。
  • Controller(控制器):接收用戶請求,委託給模型進行處理(狀態改變),處理完畢後把返回的模型數據返回給視圖

 

5. SpringMVC第一個小例子

5.1配置xml實現

5.1.1建立Controller層類

public class XmlController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mv=new ModelAndView();
        mv.addObject("name","張三");
        mv.setViewName("/index");
        return mv;
    }
}

 

 

5.1.2編寫web.xml文件

<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--讀取spring-mvc.xml文件-->
    <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>/</url-pattern>
</servlet-mapping>

 

 

 

 

5.1.3編寫spring-mvc.xml文件

<bean id="/xmlController" class="com.springmvc.controller.XmlController"></bean>

 

5.1.4編寫index.jsp頁面

<body>
<H1>Hell SpringMVC</H1>
</body>

 

 

 

5.1.5頁面

 

 

 

 

 

5.2註解方式實現

5.2.1編寫Controller層類

@Controller
//標識該類爲一個控制器
public class HelloWorldController{

@Autowired
    InvoicingService invoicingService;
    //RequestMapping設置處理器方法與用戶請求的URL直接的映射關係 @WebServlet
    @RequestMapping("/hello")
    public String toIndex(){
        return "index";  
    }    

}

 

 

5.2.2編寫web.xml文件

<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--讀取spring-mvc.xml文件-->
    <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>/</url-pattern>
</servlet-mapping>

<!--spring和MyBatis整合的核心配置-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:application-*.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

 

 

 

 

 

5.2.3編寫spring-mvc.xml文件

<!--推薦使用註解方式-->
    <!--配置視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="jsp/"></property>
        <!--return "index"======>/jsp/index.jsp-->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!--開啓MVC的註解配置-->
    <mvc:annotation-driven/>

    <!--包掃描器:掃描 MVC中的註解-->
    <context:component-scan base-package="com.springmvc"/>
    <bean id="/xmlController" class="com.springmvc.controller.XmlController"></bean>
</beans>

 

 

 

5.2.4編寫index.jsp頁面

<body>
${name}
<H1>Hell SpringMVC</H1>
</body>

 

 

 

5.2.5頁面

 

 

 

 

 

 

SpringMVC高級配置

1. SpringMV執行流程

 

 

 

 

 

 

2. SpringMVC靜態資源攔截

 

 

 

 

 

 

2.1方式一:spring-mvc.xml

<!--利用DefaultServlet放行資源-->
<mvc:default-servlet-handler/>

 

 

2.2方式二:spring-mvc.xml

<!--從spring3.0.4版本提供資源放行方式-->
<mvc:resources mapping="/**" location="/img"/>

 

 

2.3方式三:web.xml

<!--基於DefaultServlet:默認訪問前會執行DefaultServlet-->
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>

 

 

2.4頁面顯示

相關文章
相關標籤/搜索