程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> SpringMVC(一) —— 入門,springmvc入門

SpringMVC(一) —— 入門,springmvc入門

編輯:JAVA綜合教程

SpringMVC(一) —— 入門,springmvc入門


SpringMVC原理圖

    

步驟:

組件介紹:

  • 前端控制器(DispatcherServlet):接收請求,響應結果。
  • 處理器映射器(HandlerMapping):根據url去查找handler。

  • 處理器(Handler):(這個是我們自己寫的)。
  • 處理器適配器(HandlerAdapter):要求我們按照這個規則去寫。

  • 視圖解析器(ViewResolver):把邏輯視圖解析成真正的視圖。真正的視圖=前綴+邏輯視圖名+後綴

  • 視圖(View):需要用戶自己開發。

一.基於注解的HelloWorld

  1.導入jar包

    

  2.在web.xml文件中配置一個前端控制器(DispatcherServlet)

web.xml

 1 <servlet>
 2     <servlet-name>dispatcher</servlet-name>
 3         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 4         <!-- 
 5             默認的配置文件的地址:/WEB-INF/servlet的名字-servlet.xml,如需另外指定
 6             <init-param>
 7             <param-name>contextConfigLocation</param-name>
 8             <param-value>classpath:文件名</param-value>
 9             </init-param>
10         -->
11 </servlet>
12 <servlet-mapping>
13 <servlet-name>dispatcher</servlet-name>
14     <!-- 
15         第一種:*.html,*.action 就是過濾以.xxx結尾的
16         第二種:/  所有的地址都會進入這個進行解析,靜態的資源,需要添加配置
17         第三種:/* 他就是變態,連jsp頁面都進來,結果就是報錯XXXXX別用
18     -->
19     <url-pattern>/</url-pattern>
20 </servlet-mapping>

  3.配置處理器映射器(HandlerMapping)和處理器適配器(HandlerAdapter),視圖解析器(ViewResolver)

dispatcher-servlet.xml

1 <!-- 處理器映射器 -->
2 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
3 <!-- 處理器適配器 -->
4 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
5 <!-- 配置ViewResolver -->
6 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
7     <property name="prefix" value="/WEB-INF/jsp/"></property>
8     <property name="suffix" value=".jsp"></property>
9 </bean>

其實,上面我們說的處理器適配器(HandlerAdapter)和處理器映射器(HandlerMapping)在這裡可以不用配置,因為SpringMVC會默認加載這些配置。

采用默認的注解驅動:<mvc:annotation-driven/>, 默認的注解驅動,裡面有很多參數綁定的方法 。

用注解我們不可以一個個去掃描Handler,所以采用組件掃描的方式:

<context:component-scan base-package="com.test"></context:component-scan>

HelloWorld.java

 1 package com.test.controller;
 2 
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RequestMethod;
 9 import org.springframework.web.servlet.ModelAndView;
10 
11 @Controller
12 @RequestMapping(value = "/hello")
13 public class HelloWorld {
14     @RequestMapping(value = "/hello")// 就是訪問的路徑
15     public ModelAndView hello() {
16         Map<String, String> map = new HashMap<String, String>();
17         map.put("name", "傻逼");
18         ModelAndView mv = new ModelAndView("hello", map);
19         return mv;
20     }
21 
22 }

 至此,基本的配置就完成了。

下面再來介紹一下幾個基本的注解:

  • 窄化映射請求(可以在類上面定義根路徑,在方法上面定義子路徑),此時你訪問的路徑就是:根路徑+子路徑。
  • 顯示http請求的方法:@requestMapping(value="/user",method="{RequestMethod.POST}")。限制後的出錯信息:

  2.@Controller

    方法返回值的討論:

    • 返回ModelAndView:返回一個邏輯視圖名和數據放在request中。
    • 返回String:
      • 返回一個邏輯視圖名。
      • 重定向:return "redirect:路徑"
        1 @RequestMapping(value = "/index")
        2 public String index() {
        3     return "redirect:hello";
        4 }
      • 請求轉發:return "forward:路徑"。類比Servlet中的request.getRequestDispatcher("/WEB-INF/jsp/xxx.jsp").forward(request, response);
    • 返回void:(此時用法和servlet一樣)
      1 public void test_void(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
      2         request.getParameter("");
      3         request.getRequestDispatcher("").forward(request, response);
      4     }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved