springMVC学习笔记二
生活随笔
收集整理的這篇文章主要介紹了
springMVC学习笔记二
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原理
發起請求時被前置控制器攔截到,這個其實就是一個DispatcherServlet,然后根據請求的參數生成代理請求,找到請求對應的實際控制器,控制器處理請求,創建數據模型,訪問數據庫,將模型響應給中心控制器,控制器使用模型與視圖渲染試圖結果,將結果返回中央控制器,然后返回給請求者。
運行步驟
簡要分析:
- 我們假設請求的URL為http://loclahost:8080/springmvc/hello
- http://localhost:8080是服務器的域名
- springmvc部署在服務器上的web站點
- hello表示為控制器
- 所以URL表示為請求服務器下的springmvc站點的hello控制器
使用步驟:
xml版本:
配置dispatcherservlet中央處理器
需要在web,xml中配置
SpringMVC三要素的配置
分別是處理器映射器(HandleMapping)、處理器適配器(handleadapter)、視圖解析器(ViewResolve)
編寫controller
package com.yu.controller;import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** @Description: TODO* @Author : yu* Date : 3/25/2020 1:58 PM*/ public class HelloController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {ModelAndView mv = new ModelAndView();//業務代碼String result = "hellospringmvc";mv.addObject("msg",result);//視圖跳轉mv.setViewName("test");//: /WEB-INF/jsp/test.jspreturn mv;} }注意:如果代碼沒有問題,還是找不到目標,那么可以去查看一些依賴的問題
WEB-INF是否有lib目錄,里面的配置是否有
缺點:一個controller只能有一個類,并且要配置一個bean
注意:
在將controller注冊到spring中的時候,前面需要加/,否則就會404
<bean id="/t1" class="com.yu.controller.ControllerTest1"/>可以省略處理器映射以及處理器適配器。結果不會改變,只需要視圖解析器就行,因為mvc中默認有這兩個東西。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean>注意前綴哪里是jsp/,因為是將viewname拼接到這個里面,如果缺少/或者多/,那么就會出現url路徑不正確,不能匹配的問題。
注解版:
在web中配置中央處理器dispatcherServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping> </web-app>在spring配置中開啟注解
<?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:cotext="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 這個是掃描包,不用再自己配置bean--><cotext:component-scan base-package="com.yu.controller"/> <!-- 讓Spring MVC不在處理靜態資源 .css .js .html .mp3等等--><mvc:default-servlet-handler/> <!-- 開啟mvc注解相當于與注入一個處理器映射一個處理器適配器--><mvc:annotation-driven/><!-- 視圖解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp"/><property name="suffix" value=".jsp"/></bean></beans>編寫controller
package com.yu.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;/*** @Description: TODO* @Author : yu* Date : 3/25/2020 3:01 PM*/ @Controller public class HelloController {@RequestMapping("/h1")public String hello(Model model){//封裝數據model.addAttribute("msg","hellow springmvcannatation");return "hello"; //會被視圖解析器處理,這個/到底是為什么?要說和前面xml里面的id一樣} }注意:
總結
以上是生活随笔為你收集整理的springMVC学习笔记二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fabric2.0 概念, peer、账
- 下一篇: s3c2440移植MQTT