使用 Controller註解為什麼要配置

2022-02-19 07:55:41 字數 2133 閱讀 3117

自己看了官方文件,也到網上查了下,目前理解如下:

<

mvc:annotation-driven

/>

<

context:component-scan

base-package

="com"

>

context:component-scan

>

web.xml

<

servlet

>

<

servlet-name

>mvc

servlet-name

>

<

servlet-class

>org.springframework.web.servlet.dispatcherservlet

servlet-class

>

<

load-on-startup

>1

load-on-startup

>

servlet

>

<

>

<

servlet-name

>mvc

servlet-name

>

<

url-pattern

>*.do

url-pattern

>

>

後來為了解決靜態資源訪問的問題,servlet改成了攔截所有請求,即/,並新增了預設的servlet,這時候*.do請求不能被控制器捕捉了,頁面錯誤為404。直到新增了之後,.do請求才又能被正確捕捉和處理。**如下

mvc-servlet.xml

<

context:component-scan

base-package

="com"

>

context:component-scan

>

<

mvc:annotation-driven

/>

<

mvc:resources

="/styles/**"

location

="/web-inf/resource/styles/"

/>

<

mvc:default-servlet-handler

/>

web.xml

<

servlet

>

<

servlet-name

>mvc

servlet-name

>

<

servlet-class

>org.springframework.web.servlet.dispatcherservlet

servlet-class

>

<

load-on-startup

>1

load-on-startup

>

servlet

>

<

>

<

servlet-name

>mvc

servlet-name

>

<

url-pattern

>/

url-pattern

>

>

是什麼原因造成這種區別的呢?為什麼一開始沒用的時候可以,新增了預設servlet之後就不行了呢? 

最後的配置如果沒有,那麼所有的controller可能就沒有解析,所有當有請求時候都沒有匹配的處理請求類,就都去即default servlet處理了。新增上後,相應的do請求被controller處理,而靜態資源因為沒有相應的controller就會被default servlet處理。總之沒有相應的controller就會被default servlet處理就ok了。

總結:要使用spring mvc中的@controller註解,就必須要配置,否則org.springframework.web.servlet.dispatcherservlet無法找到控制器並把請求分發到控制器。

**原文link: 

Controller中獲取輸入引數註解使用總結

當使用restful訪問方式時,即 someurl 這時的引數可通過 pathvariable註解來獲取。呼叫方式 get方法 http localhost 4005 cxhdlb 111111 接收引數 public listfindeventlist pathvariable string pa...

切面使用問題 獲取方法的註解內容為null

獲取操作型別說明 增加 刪除 修改等 param joinpoint return throws exception public static string getcontrollermethoddescription joinpoint joinpoint throws exception re...

自己建立註解,和使用註解

首先自己建立註解的類 mytest retention value retentionpolicy.runtime 在執行的時候擦除 retention表示執行時候的範圍,一共有3種 target value 這個表明是要用到哪個上 public inte ce mytest 自己在建立乙個,然後使...