springMVC總結(一)

  • 學一段時間的springMVC常見的功能擼的差很少了,發個總結出來!
  • springMVC和servlet原理同樣,只是一個控制器,大部分都差很少,就是springMVC用起來比servlet更方便,有各類各樣的註解。至關於你用servlet須要1000行代碼,你用springmvc只須要100行左右代碼
  • 學任何的東西都從Hollo World 開始,下面是springmvc入門的hello world

web.xml配置文件html

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <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>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
複製代碼
  • 是否是似曾相識,和servlet配置幾乎如出一轍

springmvc.xml前端

<!--配置自動掃描器,掃描有控制器的包-->
    <context:component-scan base-package="com.haiyang.web.servlet" />
    <!--配置根視圖,就是首頁-->
    <mvc:view-controller path="/" view-name="index"/>
    <!--配置視圖解析器,用於將返回的字符串渲染視圖-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!--渲染視圖的前綴-->
            <property name="prefix" value="/views/"/>
             <!--渲染視圖的後綴-->
            <property name="suffix"  value=".jsp"/>
    </bean>
複製代碼

控制器java

@Controller  //聲明這個類是個控制器
public class hello {
    @RequestMapping(value = "hello")//對前端hello的請求進行處理
    public String HelloWorld(Model model) {
        //經過model將咱們要輸入的值放入域中
        model.addAttribute("hello", "spring mvc hello world");
        //返回要跳轉的頁面,會經過springmvc.xml中的視圖解析器進行處理
        //給返回的字符串加上前綴和後綴 例:/views/success.jsp
        return "success";
    }
複製代碼

index頁面web

<a href="hello">Hello Spring</a>
複製代碼
  • 很簡單,用超連接來請求控制器。

success頁面spring

<h2>歡迎來到成功頁面</h2>
 ${hello}
複製代碼
  • 是否是很簡單,看完你徹底能夠去敲你的第一個springmvc程序

還有一個注意點:就是success頁面顯示了${hello},說明解析不了el表達式。加上下面這句就能夠了mvc

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
複製代碼
  • OK,學完hello world,咱們來了解一下上面用到的@RequestMapping註解
@RequestMapping註解

他有四個參數,分別是value,method,params,headers。app

  • value:用來設置要映射的URL
  • method:用來設置映射的請求方法
  • params:用於根據請求參數進行映射
  • headers:用於設置根據請求頭部屬性進行的映射。
@RequestMapping註解ant風格的通配符

通配符也有四個,分別是 ? ,* ,** ,{ };jsp

  • ?:匹配文件夾中的一個任意字符
  • *:匹配文件夾中的多個任意字符
  • **:匹配多層路徑
  • {}:佔位符
下面一些通配符的案例

控制器url

@RequestMapping("hello/a?c/test")
    public String Hello(Model model) {
        model.addAttribute("abc", "spring mvc hello");
        return "success";
         }
複製代碼

indexspa

<a href="hello/abc/test">Hello Spring1</a>
複製代碼
  • ?至關於一個字符,因此?能夠用任意字符來代替,我上面用的是b來代替。也能夠正常訪問success頁面

控制器

@RequestMapping("hello2/*/test")
    public String Hello2(Model model) {
        model.addAttribute("abc", "spring mvc hello");
        return "success";
    }
複製代碼

index

<a href="hello2/gfdsgfdsg/test">Hello Spring2</a>
複製代碼
  • 至關於多個任意字符,因此*能夠用多個任意字符代

控制器

@RequestMapping("hello3/**/test")
    public String Hello3(Model model) {
        model.addAttribute("abc", "spring mvc hello");
        return "success";
    }
複製代碼

index

<a href="hello3/abc/safd/sfdsf/eee/test">Hello Spring3</a>
複製代碼
  • 至關於多層路徑,因此**能夠用多個路徑來代替

控制器

@RequestMapping("hello4/{name}")
    public String Hello4(@PathVariable("name") String name) {
        System.out.println(name);
        return "success";
    }
複製代碼

index

<a href="hello4/zs">Hello Spring4</a>
複製代碼
  • {}只是個佔位符,用來接收前端轉來的數據
  • 上面出現了@PathVariable,說一下這個註解的做用吧。@PathVariable註解用於獲取請求中的參數,並注入到方法參數中,該註解用於方法參數上

若是有錯誤,歡迎你們指正

相關文章
相關標籤/搜索