SpringMVC入門學習(二)應用註解方式+註解最佳化,springmvc註解
前篇已經介紹使用SpringMVC的方式進行環境搭建,以及一個簡單的demo測試,下面我們再來介紹一下使用註解的方式,如何?。
添加設定檔
springAnnotation-servlet.xml
<!-- 註解掃描包 --><context:component-scan base-package="com.tgb.web.controller.annotation" /><!-- 開啟註解,這兩種方式通用 --><!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /><bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean> --> <mvc:annotation-driven></mvc:annotation-driven><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"></property><property name="suffix" value=".jsp"></property></bean>
web.xml
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 修改設定檔的名稱和路徑均可 --> <init-param> <param-name>contextConfigLocation</param-name> <!-- <param-value>classpath*:config/SpringMVC-servlet.xml</param-value> --> <param-value>classpath*:config/springAnnotation-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
執行個體測試:
添加UserController:
@Controllerpublic class UserController {/*方法的註解,value為瀏覽器的訪問地址,method為接收方式*/@RequestMapping(value="/user/addUser",method=RequestMethod.GET)public ModelAndView addUser(){String result ="this is addUser------";/*向前台介面傳值的方式---帶參數的返回前台頁面*/return new ModelAndView("/jquery","result",result);}@RequestMapping(value="/user/delUser",method=RequestMethod.GET)public ModelAndView delUser(){String result ="this is delUser------";return new ModelAndView("/jquery","result",result);}@RequestMapping(value="/user/toUser",method=RequestMethod.GET)public ModelAndView toUser(){/*返回的頁面*/return new ModelAndView("/jquery");}}
Jquery.jsp(提交方式為post,而如果此時addUser的接收方式為GET)
<form action="/SpringMVC/user/addUser" method="post"><h>SpringMVC註解</h><br/><div>${result }</div><input type="submit" value="post請求"></form>
出現以下錯誤:
訪問toUser時沒有問題,但是當點擊按鈕時,報錯!
解釋:
當我們訪問:http://localhost:8080/SpringMVC/user/toUser時,顯示jquery頁面,但是當我們點擊jquery頁面中的按鈕時,會post提交到addUser的方法,而此時addUser的方法接收為Get,故報錯。正確的方式是將addUser的接收方式改為POST
正確方式執行過程:
首先訪問toUser,到達jquery頁面,點擊jquery頁面的按鈕,post提交到addUser,同時將addUser中的result參數返回
注意:
前台頁面直接存取的方式只支援GET方式,即當我們的controller的接收方式均為GET時,均可以在瀏覽器中輸入相應的地址訪問到相應的頁面
例如:
因為此時addUser的接收方式為GET,但是如果我們將它的接收方式改為Post,那麼則會報如下錯誤,因為當我們直接存取頁面,那麼接收方式為Post,而提交方式預設為GET
我們想要get方法請求可以到,post方法請求也可以到
不想要區分的那麼清楚,直接把那個配置刪掉(method=RequestMethod.GET)
SpringMVC註解最佳化
1,對於要訪問的均為同一目錄下的方法時,可以這樣修改
@RequestMapping("/user")
2,刪除掉method的配置method=RequestMethod.GET
3,返回值為String類型
4,帶參數使用
request.setAttribute("result",result);,引入import javax.servlet.http.HttpServletRequest;
最佳化後的Controller:
總結:應用註解的方式使得我們不必去設定檔中寫那麼多映射代碼,減少了開發人員的工作量。但是對於我們來說無論是註解還是設定檔的方式我們均需要瞭解,個人覺得設定檔的方式更容易讓我們理解。