1.SpringMVC基本概述前端
Spring 爲展示層提供的基於 MVC 設計理念的優秀的Web 框架,是目前最主流的 MVC 框架之一java
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<!-- 向服務器註冊前端控制器 -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<!--DispatcherServlet指的是SpringMVC的前端控制器,給服務器使用,建立servlet對象 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 用於制定SpringMVC配置文件的路徑以及名稱 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all requests to the DispatcherServlet for handling -->
<!-- 用servlet-mapping制定請求映射的路徑 -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- 用url-pattern指定攔截的請求路徑 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
點擊Next輸入文件名springmvc.xml,再點Next,在如下三項前打勾√web
在Open Type中查找 InternalResourceViewResolver,得到其全路徑spring
在springmvc.xml文件中添加express
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
在web.xml文件中能夠不設置初始化參數,也就是不寫<init-param>設計模式
可是要將spring.xml文件更名爲 springDispatcherServlet-servlet.xml,並移動到WEB-INF目錄下瀏覽器
@RequestMapping(value="/sayHello",method=RequestMethod.GET,params={"username","pwd!=123"})
public String SUCCESS(){
System.out.println("111");
return "success";
}
@RequestMapping()能夠定義在類上,也能夠定義在方法上tomcat
– 類定義處:提供初步的請求映射信息。相對於 WEB 應用的根目錄
– 方法處:提供進一步的細分映射信息。相對於類定義處的 URLbash
@RequestMapping 的 value、method、params 及 heads 分別表示請求URL、請求方法、請求參數及請求頭的映射條件,他們之間是與的關係,聯合使用多個條件可以讓請求映射 更加精確化服務器
params表示及含義
<a href="${pageContext.request.contextPath }/getOrderById/1">okok</a> <form action="${pageContext.request.contextPath }/postOrderById/2" method="post"> <input type="submit" value="Submit"/> </form> <form action="${pageContext.request.contextPath }/putOrderById/3" method="post"> <input type="hidden" name="_method" value="put"/> <input type="submit" value="Submit"/> </form> <form action="${pageContext.request.contextPath }/deleteOrderById/4" method="post"> <input type="hidden" name="_method" value="delete"/> <input type="submit" value="Submit"/> </form>
超連接<a>是get請求,瀏覽器 form 表單只支持 GET 與 POST 請求,而DELETE、PUT 等 method 並不支持,Spring3.0 添加了一個過濾器,能夠將這些請求轉換爲標準的 http 方法,使得支持 GET、POST、PUT 與 DELETE 請求。須要在form表單中添加隱藏域,name爲‘method',value爲’POST/DELETE'
同時須要在web.xml文件中配置 HiddenHttpMethodFilter
<!-- HiddenHttpMethodFilter過濾器能夠將POST請求轉化爲PUT請求和DELETE請求 --> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
@RequestMapping(value="/getOrderById/{id}",method=RequestMethod.GET) public String getOrderById(@PathVariable(value="id") Integer id){ //調用service層方法 System.out.println(id); return SUCCESS; } @RequestMapping(value="/postOrderById/{id}",method=RequestMethod.POST) public String postOrderById(@PathVariable(value="id") Integer id){ //調用service層方法 System.out.println(id); return SUCCESS; } @RequestMapping(value="/putOrderById/{id}",method=RequestMethod.PUT) @ResponseBody public String putOrderById(@PathVariable(value="id") Integer id){ //調用service層方法 System.out.println(id); return SUCCESS; } @RequestMapping(value="/deleteOrderById/{id}",method=RequestMethod.DELETE) @ResponseBody public String deleteOrderById(@PathVariable(value="id") Integer id){ //調用service層方法 System.out.println(id); return SUCCESS; }
由於在tomcat8.0中不支持PUT和DELETE方法,因此須要@ResponseBody,不然405錯誤
4.使用@RequestParam綁定請求參數值
@RequestMapping(value="/testRequestParam",method=RequestMethod.POST) public String testRequestParam(@RequestParam(value="username") String name,@RequestParam(value="password",required=false,defaultValue="123456789") String password){ System.out.println(name+"---"+password); return SUCCESS; }
在jsp頁面
<form action="${pageContext.request.contextPath }/testRequestParam" method="post"> Username:<input type="text" name="username"/> Password:<input type="password" name="password"/> <input type="submit" value="Submit"/> </form>
@RequestParam能夠從jsp頁面獲取參數
<!-- 解決中文亂碼問題 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>