springMVC框架簡介
2.HelloWorld
(1)步驟:
<!-- 配置 DispatcherServlet -->
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置DispatcherServlet初始化參數:配置springmvc配置文件的位置和名稱 -->
<!--
實際上也可以不通過 contextConfigLocation 來配置 SpringMVC 的配置文件, 而使用默認的.
默認的配置文件為: /WEB-INF/<servlet-name>-servlet.xml
這樣配置文件就不是放在src下了,而是放在WEB-INF下,此時名字叫做helloworld-servlet.xml
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
(4)創建Spring MVC配置文件 <!-- 配置自動掃描的包 -->
<context:component-scan base-package="com.starfish.springmvc"></context:component-scan>
<!-- 配置視圖解析器: 如何把 handler 方法返回值解析為實際的物理視圖 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
(5)創建請求處理器類
@Controller
public class HelloWorld {
/**
* 1. 使用 @RequestMapping 注解來映射請求的 URL(這里的請求就是:href="helloWorld")
* 2. 返回值會通過視圖解析器解析為實際的物理視圖, 對于 InternalResourceViewResolver 視圖解析器, 會做如下的解析:
* 通過 prefix + returnVal + 后綴 這樣的方式得到實際的物理視圖, 然會做轉發操作
*
* /WEB-INF/views/success.jsp
*/
@RequestMapping("/helloWorld")
public String helloWorld(){
System.out.println("springMVC HelloWorld!");
return "success";
}
}
? Spring MVC 使用@RequestMapping注解為控制器指定可以處理哪些URL 請求
? 在控制器的類定義及方法定義處都可標注@RequestMapping
– 類定義處:提供初步的請求映射信息。相對于WEB 應用的根目錄
– 方法處:提供進一步的細分映射信息。相對于類定義處的URL。若類定義處未標注@RequestMapping,則方法處標記的URL 相對于WEB 應用的根目錄
? DispatcherServlet截獲請求后,就通過控制器上@RequestMapping提供的映射信息確定請求所對應的處理方法。
? @RequestMapping除了可以使用請求URL映射請求外,還可以使用請求方法、請求參數及請求頭映射請求
? @RequestMapping的value、method、params及heads 分別表示請求URL、請求方法、請求參數及請求頭的映射條件,他們之間是與的關系,聯合使用多個條件可讓請求映射更加精確化。
? params和headers支持簡單的表達式:
– param1: 表示請求必須包含名為param1 的請求參數
– !param1: 表示請求不能包含名為param1 的請求參數
– param1 != value1: 表示請求包含名為param1 的請求參數,但其值不能為value1
– {“param1=value1”, “param2”}: 請求必須包含名為param1 和param2 的兩個請求參數,且param1 參數的值必須為value1
@Controller
@RequestMapping("springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
//了解:不常用, 可以使用params和header來更加精確的映射請求,他兩支持簡單的表達式
@RequestMapping(value="testParamsAndHeader",params={"username","age!=24"},headers={"Accept-Language=zh-CN,zh;q=0.8"})
public String testParamsAndHeader(){
System.out.println("testParamsAndHeader...");
return SUCCESS;
}}
4. 映射請求參數&請求參數(1)
請求處理方法簽名
————————————————jsp————————————————————————————————————
<a href="springmvc/testRequestParam?userName=starfish&age=22">Test RequestParam</a>
————————————————action——————————————————————————————————
@Controller
@RequestMapping("springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value="userName") String userName,
@RequestParam(value="age",required=false,defaultValue="18") int age){
System.out.println("testRequestParam--> userName :"+ userName + ", age:"+ age);
return SUCCESS;
}
(2)使用@RequestParam綁定請求參數值 @Controller
@RequestMapping("springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value="userName") String userName,
@RequestParam(value="age",required=false,defaultValue="18") int age){ //integer age可以不用寫默認值
System.out.println("testRequestParam--> userName :"+ userName + ", age:"+ age);
return SUCCESS;
}
——————————————————
jsp:
<a href="springmvc/testRequestParam?userName=starfish&age=22">Test RequestParam</a>
5.處理模型數據(1)Spring MVC 提供了以下幾種途徑輸出模型數據:
– ModelAndView: 處理方法返回值類型為ModelAndView時, 方法體即可通過該對象添加模型數據
– Map 及Model: 入參為org.springframework.ui.Model、org.springframework.ui.ModelMap或java.uti.Map時,處理方法返回時,Map 中的數據會自動添加到模型中。
– @SessionAttributes: 將模型中的某個屬性暫存到HttpSession中,以便多個請求之間可以共享這個屬性
– @ModelAttribute: 方法入參標注該注解后, 入參的對象就會放到數據模型中
? 控制器處理方法的返回值如果為ModelAndView, 則其既包含視圖信息,也包含模型數據信息。
? 添加模型數據:
– MoelAndView addObject(String attributeName, Object attributeValue)
– ModelAndView addAllObject(Map<String, ?> modelMap)
? 設置視圖:
– void setView(View view)
– void setViewName(String viewName)j
————————————action————————————————
/**
* 目標方法的返回值可以是 ModelAndView 類型。
* 其中可以包含視圖和模型信息
* SpringMVC 會把 ModelAndView 的 model 中數據放入到 request 域對象中.
* @return
*/
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
String viewName = SUCCESS;
ModelAndView modelAndView = new ModelAndView(viewName);
//添加模型數據到 ModelAndView 中.
modelAndView.addObject("time", new Date());
return modelAndView;
}
——————————jsp——————————————————
<a href="springmvc/testModelAndView">Test ModelAndView</a>
success page: time: ${requestScope.time }
(3)Map及Model ————————————action————————————————
/**
* 目標方法可以添加 Map 類型(實際上也可以是 Model 類型或 ModelMap 類型)的參數.
* @param map
* @return
*/
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map){
System.out.println(map.getClass().getName());
map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));
return SUCCESS;
}
——————————jsp——————————————————
<a href="springmvc/testMap">Test testMap
</a> success page:
names: ${requestScope.name }
智能推薦
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
猜你喜歡
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...
19.vue中封裝echarts組件
19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...