當前位置:首頁 » 操作系統 » springmvc項目源碼

springmvc項目源碼

發布時間: 2022-12-23 06:45:31

❶ 誰給個SpringMvc的源碼jar包,,,,百度雲。。或下載鏈接。。。。

spring4.2

https://yunpan.cn/cv5g9r6BeU7xx 訪問密碼 dc66

看錯了.下面是源碼包,不過是4.3.2的
https://yunpan.cn/cv5sZKVqMdXYx 訪問密碼 45e9

❷ 求大神解釋解釋MVC與SpringMVC是什麼,

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計模式,用業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裡面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。

而SpringMVC是一個MVC框架。Spring MVC是基於Spring功能之上添加的Web框架,想用Spring MVC必須先依賴Spring。Spring可以說是一個管理bean的容器,也可以說是包括很多開源項目的總稱,spring mvc是其中一個開源項目。

MVC框架除了Spring MVC之外還有其他的框架,如structs2、Zend Framework、.NET MVC等。

(2)springmvc項目源碼擴展閱讀:

MVC框架性能

SpringMVC會稍微比Struts2快。SpringMVC是基於方法的設計,而Sturts2是基於類,每次發一次請求都會實例一個action,每個action都會被注入屬性,而SpringMVC基於方法,粒度更細,但要小心把握像在servlet控制數據一樣。

SpringMVC是方法級別的攔截,攔截到方法後根據參數上的註解,把request數據注入進去,在SpringMVC中,一個方法對應一個request上下文。

而Struts2框架是類級別的攔截,每次來了請求就創建一個Action,然後調用setter getter方法把request中的數據注入;Struts2實際上是通過setter getter方法與request打交道的。

❸ spring mvc 註解配置求解。

我空間有對SpringMVC的詳細講解,我本人也參與了基於SpringMVC的大型項目。你可以把你QQ留下,我希望能幫助到你。我一般不加陌生人的,但現在也考慮找一群喜歡技術,熱愛java的朋友。

❹ Spring系列(一)Spring MVC bean 解析、注冊、實例化流程源碼剖析

最近在使用Spring MVC過程中遇到了一些問題,網上搜索不少帖子後雖然找到了答案和解決方法,但這些答案大部分都只是給了結論,並沒有說明具體原因,感覺總是有點不太滿意。

更重要的是這些所謂的結論大多是抄來抄去,基本源自一家,真實性也有待考證。

那作為程序員怎麼能知其所以然呢?

此處請大家內心默讀三遍。

用過Spring 的人都知道其核心就是IOC和AOP,因此要想了解Spring機制就得先從這兩點入手,本文主要通過對IOC部分的機制進行介紹。

在開始閱讀之前,先准備好以下實驗材料。

IDEA 是一個優秀的開發工具,如果還在用Eclipse的建議切換到此工具進行。

IDEA有很多的快捷鍵,在分析過程中建議大家多用Ctrl+Alt+B快捷鍵,可以快速定位到實現函數。

Spring bean的載入主要分為以下6步:

查看源碼第一步是找到程序入口,再以入口為突破口,一步步進行源碼跟蹤。

Java Web應用中的入口就是web.xml。

在web.xml找到ContextLoaderListener ,此Listener負責初始化Spring IOC。

contextConfigLocation參數設置了bean定義文件地址。

下面是ContextLoaderListener的官方定義:

翻譯過來ContextLoaderListener作用就是負責啟動和關閉Spring root WebApplicationContext。

具體WebApplicationContext是什麼?開始看源碼。

從源碼看出此Listener主要有兩個函數,一個負責初始化WebApplicationContext,一個負責銷毀。

繼續看initWebApplicationContext函數。

在上面的代碼中主要有兩個功能:

進入CreateWebAPPlicationContext函數

進入determineContextClass函數。

進入函數。

WebApplication Context有很多實現類。 但從上面determineContextClass得知此處wac實際上是XmlWebApplicationContext類,因此進入XmlWebApplication類查看其繼承的refresh()方法。

沿方法調用棧一層層看下去。

獲取beanFactory。

beanFactory初始化。

載入bean。

讀取XML配置文件。

XmlBeanDefinitionReader讀取XML文件中的bean定義。

繼續查看loadBeanDefinitons函數調用棧,進入到XmlBeanDefinitioReader類的loadBeanDefinitions方法。

最終將XML文件解析成Document文檔對象。

上一步完成了XML文件的解析工作,接下來將XML中定義的bean注冊到webApplicationContext,繼續跟蹤函數。

用BeanDefinitionDocumentReader對象來注冊bean。

解析XML文檔。

循環解析XML文檔中的每個元素。

下面是默認命名空間的解析邏輯。

不明白Spring的命名空間的可以網上查一下,其實類似於package,用來區分變數來源,防止變數重名。

這里我們就不一一跟蹤,以解析bean元素為例繼續展開。

解析bean元素,最後把每個bean解析為一個包含bean所有信息的BeanDefinitionHolder對象。

接下來將解析到的bean注冊到webApplicationContext中。接下繼續跟蹤registerBeanDefinition函數。

跟蹤registerBeanDefinition函數,此函數將bean信息保存到到webApplicationContext的beanDefinitionMap變數中,該變數為map類型,保存Spring 容器中所有的bean定義。

Spring 實例化bean的時機有兩個。

一個是容器啟動時候,另一個是真正調用的時候。

相信用過Spring的同學們都知道以上概念,但是為什麼呢?

繼續從源碼角度進行分析,回到之前XmlWebApplication的refresh()方法。

可以看到獲得beanFactory後調用了 ()方法,繼續跟蹤此方法。

預先實例化單例類邏輯。

獲取bean。

doGetBean中處理的邏輯很多,為了減少干擾,下面只顯示了創建bean的函數調用棧。

創建bean。

判斷哪種動態代理方式實例化bean。

不管哪種方式最終都是通過反射的形式完成了bean的實例化。

我們繼續回到doGetBean函數,分析獲取bean的邏輯。

上面方法中首先調用getSingleton(beanName)方法來獲取單例bean,如果獲取到則直接返回該bean。方法調用棧如下:

getSingleton方法先從singletonObjects屬性中獲取bean 對象,如果不為空則返回該對象,否則返回null。

那 singletonObjects保存的是什麼?什麼時候保存的呢?

回到doGetBean()函數繼續分析。如果singletonObjects沒有該bean的對象,進入到創建bean的邏輯。處理邏輯如下:

下面是判斷容器中有沒有注冊bean的邏輯,此處beanDefinitionMap相信大家都不陌生,在注冊bean的流程里已經說過所有的bean信息都會保存到該變數中。

如果該容器中已經注冊過bean,繼續往下走。先獲取該bean的依賴bean,如果鑹子依賴bean,則先遞歸獲取相應的依賴bean。

依賴bean創建完成後,接下來就是創建自身bean實例了。

獲取bean實例的處理邏輯有三種,即Singleton、Prototype、其它(request、session、global session),下面一一說明。

如果bean是單例模式,執行此邏輯。

獲取單例bean,如果已經有該bean的對象直接返回。如果沒有則創建單例bean對象,並添加到容器的singletonObjects Map中,以後直接從singletonObjects直接獲取bean。

把新生成的單例bean加入到類型為MAP 的singletonObjects屬性中,這也就是前面singletonObjects()方法中獲取單例bean時從此Map中獲取的原因。

Prototype是每次獲取該bean時候都新建一個bean,因此邏輯比較簡單,直接創建一個bean後返回。

從相應scope獲取對象實例。

判斷scope,獲取實例函數邏輯。

在相應scope中設置實例函數邏輯。

以上就是Spring bean從無到有的整個邏輯。

從源碼角度分析 bean的實例化流程到此基本接近尾聲了。

回到開頭的問題,ContextLoaderListener中初始化的WebApplicationContext到底是什麼呢?

通過源碼的分析我們知道WebApplicationContext負責了bean的創建、保存、獲取。其實也就是我們平時所說的IOC容器,只不過名字表述不同而已。

本文主要是講解了XML配置文件中bean的解析、注冊、實例化。對於其它命名空間的解析還沒有講到,後續的文章中會一一介紹。

希望通過本文讓大家在以後使用Spring的過程中有「一切盡在掌控之中」的感覺,而不僅僅是稀里糊塗的使用。

❺ 從源碼理解總結web容器、spring容器、spring mvc容器三者關系

本篇,我打算從springMVC項目的web.xml的配置文件入手,通過部分源碼逐步去理解解釋三個容器的關系以及調用順序,因為是基於我個人的理解,可能有所不足。

一般web.xml文件里會有如下兩段配置信息:

我們先了解下web.xml,以下引用自 《web.xml文件是什麼?有什麼用?--詳解》 :

然後結合我們上面的web.xml中關於spring和spring mvc的配置信息來進入話題:

    首先,啟動web容器的時,會先生成對應項目的ServelContent對象,這個是每個項目的上下文,這個ServelContent可以管理所有的servlet,並將我們web.xml中設置的<context-param>內容作為鍵值對交給這個對象。

    然後載入<listener>標簽內容,這個時候就會產生org.springframework.web.context.ContextLoaderListener。

spring的這個 ContextLoaderListener 在接下來的過程中很重要,我們來看一下源碼

首先,可以看出它繼承了ContextLoader類,並實現了ServletContextListener介面。

這里再直接引用他人的結論   《Spring中ContextLoaderListener作用》

好了,人家說法中回到我們的起點了,我們基本都被人告知「ContextLoaderListener的作用是創建並初始化spring容器」

那我們就可以深入進去看看,到底哪裡做了這一步:

首先,我們知道了ServletContextListene是ServletContext的監聽者,監聽器的響應動作就是在伺服器啟動時contextInitialized會被調用,關閉的時候contextDestroyed被調用,這個好理解,那我們就來看一下ContextLoaderListener重寫的contextInitialized方法到底做了什麼。

我們再進入觀察initWebApplicationContext方法細看

我因為自己消化過一遍,直接給出關鍵位置的方法說明——

1、首先是278行:創建了WebApplicationContext,我們可以理解為spring容器的殼子有了

2、其次是288和289行:對ApplicationContext載入了配置文件,並設置servletContext為WebApplicationContext的parent,到這一步,可以理解為我們的spring容器也就差不多成型了

3、接下來是294行:把ApplicationContext對象以鍵值對的形式存到servletContext中,這一步很關鍵,就是因為servletContext中存在這個鍵值對,所以其他內部成員可以通過servletContext訪問到ApplicationContext,當然也能使用其管理的bean,而spring mvc則沒有這樣存在servletContext,所以我覺得正是這一步決定了子容器springmvc可以取用父容器內的bean,反著則不然。

接下來直到輪到我們的springmvc容器<servlet>標簽內容

會生成控制org.springframework.web.servlet.DispatcherServlet,這是一個前端控制器,主要的內容我之前也有一篇文章做過自我記錄

《Spring MVC的工作機制簡單理解》

我們可以看到設置的

<load-on-startup>1</load-on-startup>

這個標簽大概意思就是:

1、load-on-startup 元素標記容器是否應該在web應用程序啟動的時候就載入這個servlet,(實例化並調用其init()方法)。

2、它的值必須是一個整數,表示servlet被載入的先後順序。

3、如果該元素的值為負數或者沒有設置,則容器會當Servlet被請求時再載入。

4、如果值為正整數或者0時,表示容器在應用啟動時就載入並初始化這個servlet,值越小,servlet的優先順序越高,就越先被載入。值相同時,容器就會自己選擇順序來載入。

在DispatcherServlet的時候就根據springMVC容器容器的配置文件生成。

比如我這邊就是

那順序確定了,我們再看一下spring和spring mvc的父子關系哪裡確定:

我們可以從下面3個截圖看到dispatcherServlet的繼承關系,同時,init方法用的是dispatcherServlet父類的父類的方法。

重點在於initServletBean()方法,經過追蹤,我們找到該方法的最終實現又是在dispatcherServlet的父類FrameworkServlet中

其中涉及父子關系的實際是在219行的initWebApplicationContext()方法

initWebApplicationContext()方法主要用於創建或刷新WebApplicationContext實例,並對Servlet功能所使用的變數進行初始化。

從238行源碼就可以看到,它獲得ContextLoaderListener中初始化的rootContext,

在246行設置了父子關系的引用,也就是從這一點我們看到了spring和springMVC的父子關系!

並且,可以看到這只是一條單向的引用,spring中沒有引用直接指向springMVC,也就是子類能找到父類,然而父類都不知道這個子類,父子容器之間內部對象調用關系更明了。

再通過構造函數和Servlet的contextAttribute屬性查找ServletContext來進行webApplicationContext實例的初始化,最終。

這個方法內263行源碼onRefresh(wac)方法是FrameworkServlet提供的模板方法,在子類,也就是我們的DispatcherServlet的onRefresh()方法中進行了重寫。而在onRefresh()方法中調用了initStrategies()方法來完成初始化工作,初始化Spring MVC的9個組件。

1、Tomcat在啟動時給每個Web應用創建一個全局的上下文環境,這個上下文就是ServletContext,其為後面的Spring容器提供環境。

2、Tomcat在啟動過程中觸發容器初始化事件,Spring的ContextLoaderListener會監聽到這個事件,它的contextInitialized方法會被調用,在這個方法中,Spring會初始化全局的Spring根容器,這個就是Spring的IoC容器,IoC容器初始化完畢後,Spring將其存儲到ServletContext中,便於以後來獲取。

3、Tomcat在啟動過程中還會掃描Servlet,一個Web應用中的Servlet可以有多個,以SpringMVC中的DispatcherServlet為例,這個Servlet實際上是一個標準的前端控制器,用以轉發、匹配、處理每個Servlet請求。

4、Servlet會在容器啟動時載入或延遲載入(根據啟動級別設置數字)。延遲載入時,當第一個請求達到時,serlet容器發現對應Servlet還沒有被實例化,就調用Servlet的init方法。

在spring MVC里

        DispatcherServlet在初始化的時候會建立自己的容器,叫做SpringMVC 容器,用來持有Spring MVC相關的Bean。同時,Spring MVC還會通過ServletContext拿到Spring根容器,並將Spring根容器設為SpringMVC容器的父容器,請注意,Spring MVC容器可以訪問父容器中的Bean,但是父容器不能訪問子容器的Bean, 也就是說Spring根容器不能訪問SpringMVC容器里的Bean。

        說的通俗點就是,在Controller里可以訪問Service對象,但是在Service里不可以訪問Controller對象。

❻ 《看透SpringMVC源代碼分析與實踐》pdf下載在線閱讀全文,求百度網盤雲資源

《看透SpringMVC源代碼分析與實踐》(韓路彪)電子書網盤下載免費在線閱讀

鏈接: https://pan..com/s/1vSy3Wd53qe91ak602kSGqw

提取碼: i1qy

書名:看透SpringMVC源代碼分析與實踐

作者:韓路彪

出版社:機械工業出版社

副標題:源代碼分析與實踐

原作名:韓路彪

出版年:2016-1-1

頁數:309

內容簡介

國內資深Web開發專家根據Spring MVC全新技術撰寫,基於實際生產環境,從基礎知識、源代碼和實戰3個維度對Spring MVC的結構和實現進行詳細講解

全面介紹Spring MVC的架構、原理、核心概念和操作,通過案例完整呈現Tomcat的實現,系統總結Spring MVC九大組件的處理以及常用的技巧和實踐

在大型網站和復雜系統的開發中,Java具有天然的優勢,而在Java的Web框架中Spring MVC以其強大的功能以及簡單且靈活的用法受到越來越多開發者的青睞。本書不僅詳細地分析Spring MVC的結構及其實現細節,而且講解網站的不同架構及其演變的過程,以及網路底層協議的概念及其實現方法,幫助讀者開發更高效的網站。

作者簡介

韓路彪當代知名作家。

❼ 如何使用eclipse創建一個jdbc+spring+springmvc項目,本人菜鳥一枚,還望高手指教。

SpringMVC+MyBatis+Freemarker 簡單框架搭建(一)

一、開發環境:
Eclipse、Tomcat、SVN等請參見如下的帖子,很詳細了。
http://www.iteye.com/topic/982182

svn和maven插件的安裝:
1、先安裝gef插件
地址:http://download.eclipse.org/tools/gef/updates/interim/
2、安裝svn插件
地址:http://subclipse.tigris.org/update_1.6.x
3、maven插件
m2eclipse-core Update 地址: http://m2eclipse.sonatype.org/sites/m2e
m2eclipse-extras Update 地市: http://m2eclipse.sonatype.org/sites/m2e-extras
4、安裝可能出現的問題
直接在線安裝maven2 會出現依賴插件找不到的問題,無法安裝。必須先安裝gef 插件後才能安 裝m2eclipse-core 插件,然而安裝m2eclipse-extras 插件又依賴subclipse 插件。所以,三個插 件的正確的安裝順序是:gef插件 》subclipse插件 》m2eclipse插件

二、web.xml 和 applicationContext.xml 配置
1、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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!-- Spring MVC 配置 -->
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:contextConfigLocation-springService.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- 事件監聽器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- shiro 許可權控制的過濾器 -->

<!-- Spring 刷新Introspector防止內存泄露 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>

<!-- session超時定義,單位為分鍾 -->
<session-config>
<session-timeout>20</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- 設置servlet編碼開始 -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<!-- 設置servlet編碼結束 -->

<display-name>Archetype Created Web Application</display-name>
</web-app>

<context-param>節點和<listener>節點是web項目啟動時最先讀取的兩個節點,所以這兩個節點裡面所配置的內容是web項目啟動時最先載入的部分。
<context-param>節點中配置的applicationContext.xml裡面主要是資料庫的配置信息,以及事務等等
<listener>節點配置的是web請求的監聽器

2、applicationContext.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
">

<!-- 自動註解除Controller以外的Component -->
<context:component-scan base-package="com.weiluo.example">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!-- 此配置可以讓我們以${xxx}的形式來讀取property.properties裡面的信息 -->
<!-- <context:property-placeholder/> -->

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>

<!-- 配置數據源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url"
value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>

<!-- Connection Pooling Info -->
<property name="maxActive" value="${dbcp.maxActive}" />
<property name="maxIdle" value="${dbcp.maxIdle}" />
<property name="defaultAutoCommit" value="false" />
<!-- 連接Idle一個小時後超時 -->
<property name="timeBetweenEvictionRunsMillis" value="360000" />
<property name="minEvictableIdleTimeMillis" value="360000" />
</bean>

<!-- 配置SessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref = "dataSource"
p:configLocation = "classpath:sqlMapConfig.xml" />

<!-- 採用spring與mybatis整合的第二種方法 -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

<!-- 配置事務管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref = "dataSource" />

<!-- MapperScanner配置,自動搜索mapper裡面的對象,並注入 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
p:basePackage = "com.weiluo.example.entity" />

<!-- 啟動Spring註解事務 -->
<tx:annotation-driven/>

</beans>

3、web.xml中的<servlet>節點配置的是與請求處理相關的一些內容,主要是 url路由處理器,視圖解析器,等等,如下:

<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:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

<!-- url映射攔截器 -->
<bean class="org.springframework.web.servlet.mvc.annotation.">
<property name="order" value="1" />
</bean>
<!-- 配置數據格式轉換器 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="jsonHttpMessageConverter"
class="org.springframework.http.converter.json.">
</bean>

<!-- 開啟controller註解支持 -->
<!-- 註:如果base-package=cn.javass 則註解事務不起作用 TODO 讀源碼 -->
<context:component-scan base-package="com.weiluo.example.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 因為web-inf目錄下面的靜態資源文件是不能直接通過目錄過去的,所以需要特殊聲明-->
<mvc:resources location="/static/" mapping="/static/**" />

<!-- 視圖解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".html" />
<property name="exposeSpringMacroHelpers" value="true" />
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="requestContextAttribute" value="rc" />
<property name="contentType" value="text/html;charset=GB2312" />
<property name="order" value="0"/>
</bean>

❽ spring mvc源碼長按ctrl鍵為什麼不跳轉

在使用Eclipse進行java編程時,有時我們需要查看一些類的源代碼,這時ctrl+滑鼠左鍵是個很常用的操作,但有時我們發現這個操作實現不了,經常顯示找不到源
工具/原料

Eclipse
方法/步驟

1
打開eclipse,新建一個測試類testObject

2
選中Object類名,按住ctrl+滑鼠左鍵,這時會進入到找不到源的頁面文件,不要緊,點擊連接源代碼

3
在此對話框下,選擇」External location「。

4
找到路徑為安裝java JDK時的路徑,關鍵是在此路徑下,找到src.zip,就行了。

5
Look,現在就可以查看源文件對此類的說明了吧,是不是很簡單~

❾ 如何在eclipse中搭建springmvc

搭建一個maven項目,mvc架構,web端使用springmvc,主要記錄下搭建時遇到的問題
1.主pom.xml文件語句 名稱為hibeauty-moles
Java代碼
mvn archetype:generate -DgroupId=com.hibeauty -DartifactId=hibeauty-moles -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
進入目錄,分別建立webapp項目以及普通的maven項目。
首先,修改pom.xml文件,把packaging修改為pom,version改為1.0
進入到hibeauty-moles,運行以下命令,項目為名稱為hibeauty-web,這是一個webapp項目,之後要單獨處理一下。
Java代碼
mvn archetype:generate -DgroupId=com.hibeauty -DartifactId=hibeauty-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
web依賴的service的名稱為hibeauty-business,進入到hibeauty-moles,運行以下命令,這是一個普通maven項目
Java代碼
mvn archetype:generate -DgroupId=com.hibeauty -DartifactId=hibeauty-business -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
注意:此時的webapp項目運行mvn eclipse:eclipse並不能被eclipse認可為一個web項目,也就是說你的eclipse里的tomcat不能認出這個web項目,需要運行的是
Java代碼
mvn eclipse:eclipse -Dwtpversion=2.0
另外,如果需要下載對應jar包的源碼,需要運行
Java代碼
mvn eclipse:eclipse -DdownloadSource=true
2.在主pom對應的文件夾里運行 mvn clean install eclipse:eclipse 這樣就完成了pom文件中的jar包下載,並且生成了eclipse的對應載入文件,使eclipse能夠認出兩個bundle了
3.進入到eclipse裡面,在tomcat裡面導入webapp項目,然後再server裡面運行,如果報錯的內容是找不到類似於
Java代碼
org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException:
org.springframework.web.context.ContextLoaderListener

Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
這樣,但是如果你在java build path的lib裡面又能看到這些包,就需要把這些文件從java build
path裡面復制到Deployment Assembly裡面。具體方法properties->Deployment
Assemble->Add->java build path
即可解決。同理如果出現找不到依賴的project的錯誤,properties->Deployment
Assemble->Add->project引進來即可
最後,這次框架搭建,我分別用了intellij idea 以及eclipse ,
我的感覺是idea適合搭建框架,因為他對xml文件的支持很好,會自動去找引入的java文件是否存在並提示用戶,這方面eclipse就比較弱。另外
idea的maven支持很好,對於框架搭建的環境要求很低,很多環境配置他自動幫你做了,比如上面的1,2,3步驟,都是針對eclipse的做法。另
外idea還有個很牛的圖示類依賴關系的功能。
但是在代碼開發時,eclipse是一個不錯的選擇。
1 .他有方便的快捷鍵
2 .svn比idea強,尤其是在增加刪除文件的時候。
3 .讓我開發時堅定選擇eclipse的主要原因是eclipse的報錯機制很強,在左邊的package explorer可以很清楚的看到出現的錯誤,當然,前提是開啟了build automatically,並且比idea顯眼的多
4 .idea不會把當前文件跟左邊的目錄自動對應,即使打開了那個roll的開關也會經常出問題。

❿ 詳解Spring mvc工作原理及源碼分析

Model 模型層 (javaBean組件 = 領域模型(javaBean) + 業務層 + 持久層)

View 視圖層( html、jsp…)

Controller 控制層(委託模型層進行數據處理)

springmvc是一個web層mvc框架,類似struts2。

springmvc是spring的部分,其實就是spring在原有基礎上,又提供了web應用的mvc模塊。

實現機制:

struts2是基於過濾器實現的。

springmvc是基於servlet實現的。

運行速度:

因為過濾器底層是servlet,所以springmvc的運行速度會稍微比structs2快。

struts2是多例的

springmvc單例的

參數封裝:

struts2參數封裝是基於屬性進行封裝。

springmvc是基於方法封裝。顆粒度更細。

⑴ 用戶發送請求至DispatcherServlet。

⑵ DispatcherServlet收到請求調用HandlerMapping查詢具體的Handler。

⑶ HandlerMapping找到具體的處理器(具體配置的是哪個處理器的實現類),生成處理器對象及處理器攔截器(HandlerExcutorChain包含了Handler以及攔截器集合)返回給DispatcherServlet。

⑷ DispatcherServlet接收到HandlerMapping返回的HandlerExcutorChain後,調用HandlerAdapter請求執行具體的Handler(Controller)。

⑸ HandlerAdapter經過適配調用具體的Handler(Controller即後端控制器)。

⑹ Controller執行完成返回ModelAndView(其中包含邏輯視圖和數據)給HandlerAdaptor。

⑺ HandlerAdaptor再將ModelAndView返回給DispatcherServlet。

⑻ DispatcherServlet請求視圖解析器ViewReslover解析ModelAndView。

⑼ ViewReslover解析後返回具體View(物理視圖)到DispatcherServlet。

⑽ DispatcherServlet請求渲染視圖(即將模型數據填充至視圖中) 根據View進行渲染視圖。

⑾ 將渲染後的視圖返回給DispatcherServlet。

⑿ DispatcherServlet將響應結果返回給用戶。

(1)前端控制器DispatcherServlet(配置即可)

功能:中央處理器,接收請求,自己不做任何處理,而是將請求發送給其他組件進行處理。DispatcherServlet 是整個流程的控制中心。

(2)處理器映射器HandlerMapping(配置即可)

功能:根據DispatcherServlet發送的url請求路徑查找Handler

常見的處理器映射器:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping,

,(不建議使用)

(3)處理器適配器HandlerAdapter(配置即可)

功能:按照特定規則(HandlerAdapter要求的規則)去執行Handler。

通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展多個適配器對更多類型的處理器進行執行。

常見的處理器適配器:HttpRequestHandlerAdapter,,

(4)處理器Handler即Controller(程序猿編寫)

功能:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器才可以去正確執行Handler。

(5)視圖解析器ViewReslover(配置即可)

功能:進行視圖解析,根據邏輯視圖名解析成真正的視圖。

ViewResolver負責將處理結果生成View視圖,ViewResolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果通過頁面展示給用戶。

springmvc框架提供了多種View視圖類型,如:jstlView、freemarkerView、pdfView...

(6)視圖View(程序猿編寫)

View是一個介面,實現類支持不同的View類型(jsp、freemarker、pdf...)

引入相關依賴:spring的基本包、springmvc需要的spring-webmvc,日誌相關的slf4j-log4j12,jsp相關的jstl、servlet-api、jsp-api。

因為DispatcherServlet本身就是一個Servlet,所以需要在web.xml配置。

一、使用默認載入springmvc配置文件的方式,必須按照以下規范:

①命名規則:-servlet.xml ====> springmvc-servlet.xml

②路徑規則:-servlet.xml必須放在WEB-INF下邊

二、如果要不按照默認載入位置,則需要在web.xml中通過標簽來指定springmvc配置文件的載入路徑,如上圖所示。

將自定義的 Controller 處理器配置到 spring 容器中交由 spring 容器來管理,因為這里的 springmvc.xml 配置文件中處理器映射器配置的是 BeanNameUrlHandlerMapping ,根據名字可知這個處理器映射器是根據 bean (自定義Controller) 的 name 屬性值url去尋找執行類 Handler(Controller) , 所以bean的name屬性值即是要和用戶發送的請求路徑匹配的 url 。

根據視圖解析路徑:WEB-INF/jsps/index.jsp

功能:根據bean(自定義Controller)的name屬性的url去尋找執行類Controller。

功能:自定義的處理器(Controller)實現了Controller介面時,適配器就會執行Controller的具體方法。

會自動判斷自定義的處理器(Controller)是否實現了Controller介面,如果是,它將會自動調用處理器的handleRequest方法。

Controller介面中有一個方法叫handleRequest,也就是處理器方法。

因此,自定義的Controller要想被調用就必須實現Controller介面,重寫Controller介面中的處理器方法。

熱點內容
舒聽瀾卓禹安書名叫什麼 發布:2025-05-11 12:36:44 瀏覽:267
java開發web應用 發布:2025-05-11 12:35:51 瀏覽:694
鯊魚影視怎麼緩存電視 發布:2025-05-11 12:35:48 瀏覽:548
ios小項目源碼 發布:2025-05-11 12:35:47 瀏覽:754
為什麼打開的三菱程序不能編譯 發布:2025-05-11 12:16:40 瀏覽:21
ftp定價是怎麼回事 發布:2025-05-11 12:09:18 瀏覽:334
android敏捷開發 發布:2025-05-11 11:56:49 瀏覽:80
腳本pon 發布:2025-05-11 11:52:27 瀏覽:826
ct5推薦哪個配置 發布:2025-05-11 11:47:45 瀏覽:742
領購未上傳發票 發布:2025-05-11 11:43:27 瀏覽:717