成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

3.1、定義一個(gè)控制器:使用 @Controller 和 @RequestMapping

Render / 2018人閱讀

摘要:用定義一個(gè)控制器注解指定一個(gè)特定的類擔(dān)任控制器的角色。典型地,類級(jí)別的注解映射一個(gè)指定的請(qǐng)求路徑或者是路徑匹配模式到一個(gè)控制器,使用額外的方法層注解縮小主要映射的范圍。第一處是類級(jí)別的,它指出這個(gè)控制器中的所有方法都與路徑相關(guān)。

1)用 @Controller 定義一個(gè)控制器

????注解 @Controller 指定一個(gè)特定的類擔(dān)任控制器的角色。Spring 不要求你集成任何控制器基類或者引用 Servlet API。不過(guò),你仍然可以根據(jù)需要使用指定的 Servlet 特性。
????注解 @Controller 對(duì)于被注解的類來(lái)說(shuō)就像一個(gè)模板(stereotype),指示它的角色。收發(fā)器(dispatcher)為被映射的方法掃描被注解的類,并檢測(cè)注解 @RequestMapping(見下一部分)。
????你可以在分發(fā)器的上下文中使用標(biāo)準(zhǔn)的 Spring Bean 定義,來(lái)顯式地定義被注解的控制器。不過(guò),@Controller 模板也允許自動(dòng)檢測(cè),就像 Spring 通常支持的在類路徑中自動(dòng)檢測(cè)組件類并自動(dòng)為它們注冊(cè) Bean 定義。
????為了能夠自動(dòng)檢測(cè)到這樣被注解的控制器,你要添加組件掃描到你的配置中。像下面的 XML 片段那樣使用 Spring 的 context"命名空間:




    
    ......
2)使用 @RequestMapping 映射請(qǐng)求

????使用注解 @RequestMapping 映射一個(gè) URL(比如:/contex)到一個(gè)類或者一個(gè)特定的處理方法上。典型地,類級(jí)別的注解映射一個(gè)指定的請(qǐng)求路徑(或者是路徑匹配模式)到一個(gè)控制器,使用額外的方法層注解縮小主要映射的范圍。
下面是一個(gè)例子:

package com.techmap.examples.controllers;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat.ISO;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
@RequestMapping("/contex")
public class ContexController
{
    
    /**
     * 不指定 path 參數(shù)
     */
    @RequestMapping(method = RequestMethod.GET)
    public String get1()
    {
        return "/examples/targets/test1";
    }
    
    /**
     * 帶有 path 參數(shù)
     */
    @RequestMapping(path = "/new", method = RequestMethod.GET)
    public String get2()
    {
        return "/examples/targets/test2";
    }
    
    /**
     * 帶有 URI 模板
     */
    @RequestMapping(path = "/{day}", method = RequestMethod.GET)
    public String getForDay(@PathVariable @DateTimeFormat(iso = ISO.DATE) Date day, Model model)
    {
        System.out.println("--> " + new SimpleDateFormat("yyyy-MM-dd").format(day));
        
        return "/examples/targets/test3";
    }
}
3)測(cè)試?yán)?/b>

????為使得例子可用,在上一篇的項(xiàng)目中添加下面三個(gè) jsp 文件:test1.jsp、test3.jsp、test3.jsp。內(nèi)容如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
    String basepath = request.getScheme() + "://" + request.getServerName() + ":" + request
            .getServerPort() + request.getContextPath() + "/";
%>



">


    

Test 1

代碼中只有 test1.jsp,其他兩個(gè)內(nèi)容相同,只有

中的內(nèi)容不同,test2.jsp 中是

Test 2

,test3.jsp中是

Test 3

。它們所在的目錄是:

4)改造一下 helloWorld.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
    String basepath = request.getScheme() + "://" + request.getServerName() + ":" + request
            .getServerPort() + request.getContextPath() + "/";
%>






    

Hello World!

Test Controller

Test1
Test2
Test3
5)開始測(cè)試

????用上一篇中給出的路徑進(jìn)入 helloWorld.jsp,看到如下頁(yè)面:

????分別點(diǎn)擊超鏈接 Test1、Test2、Test3,將會(huì)跳到上面定義的三個(gè) test*.jsp 頁(yè)面。值得注意的是,點(diǎn)擊 Test3 時(shí),控制臺(tái)會(huì)打印出如下的信息:

...
DEBUG 2016-09-05 08:15:23,152 Last-Modified value for [/spring5mvc/contex/2016-09-05] is: -1  (DispatcherServlet.java:951) 
--> 2016-09-05
DEBUG 2016-09-05 08:15:23,219 Invoking afterPropertiesSet() on bean with name "/examples/targets/test3"
...

這說(shuō)明Test3中的日期字符串將作為參數(shù)傳遞到參數(shù) day 上。

6)說(shuō)明

????在上面的例子中,注解 @RequestMapping 被用在了多處。第一處是類級(jí)別的,它指出這個(gè)控制器中的所有方法都與路徑 /contex 相關(guān)。方法get1()上有一個(gè) @RequestMapping 來(lái)進(jìn)一步細(xì)化:它只接受 GET 請(qǐng)求,這意味著 HTTP GET 請(qǐng)求 /contex 將調(diào)用這個(gè)方法。方法 get2() 有一個(gè)相似的細(xì)化;方法 get2() 把 HTTP 方法定義和路徑合并到了一起,這樣 GET 請(qǐng)求 /contex/new 就可以被這個(gè)方法處理了。
????方法 getForDay() 展示了另一種使用 @RequestMapping 的方式:URI 模板(后面介紹)。
????像第一、二篇給出的 Hello World 例子那樣,類級(jí)別的 @RequestMapping 不是必須的。沒有它,所有的路徑都是簡(jiǎn)單的絕對(duì)路徑,而不是相對(duì)的。如果不指定 GET、PUT、POST 等,@RequestMapping 默認(rèn)映射所有的HTTP方法。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65104.html

相關(guān)文章

  • SpringMVC【開發(fā)Controller】詳解

    摘要:是使用攔截器來(lái)自動(dòng)幫我們完成中文亂碼的問(wèn)題的。這是我的首頁(yè)當(dāng)然了,基于注解和基于來(lái)開發(fā),都是通過(guò)映射器適配器和視圖解析器的。能夠控制請(qǐng)求路徑和請(qǐng)求方式一個(gè)控制器寫多個(gè)業(yè)務(wù)方法到目前為止,我們都是一個(gè)控制器寫一個(gè)業(yè)務(wù)方法,這肯定是不合理的。 前言 本文主要是講解在Controller中的開發(fā),主要的知識(shí)點(diǎn)有如下: 編碼過(guò)濾器 使用注解開發(fā) 注解@RequestMapping詳解 業(yè)務(wù)方...

    Pines_Cheng 評(píng)論0 收藏0
  • SpringMVC之源碼分析--HandlerMapping(四)

    摘要:默認(rèn)支持該策略。以上是對(duì)的宏觀分析,下面我們進(jìn)行內(nèi)部細(xì)節(jié)分析。整體流程一通過(guò)實(shí)現(xiàn)接口,完成攔截器相關(guān)組件的初始化調(diào)用類的方法??偨Y(jié)本文主要分析了的初始化過(guò)程,希望對(duì)大家有幫助。隨著學(xué)習(xí)的深入,后面有時(shí)間在分析下期中涉及的關(guān)鍵,比如等等。 概述 本節(jié)我們繼續(xù)分析HandlerMapping另一個(gè)實(shí)現(xiàn)類ReqeustMappingHandlerMapping,該類是我們?nèi)粘i_發(fā)中使用最多的...

    imccl 評(píng)論0 收藏0
  • Spring之旅第八站:Spring MVC Spittr舞臺(tái)的搭建、基本的制器、請(qǐng)求的輸入、表

    摘要:請(qǐng)求旅程的第一站是的。的任務(wù)是將請(qǐng)求發(fā)送控制器控制器是一個(gè)用于處理請(qǐng)求的組件。處理映射器根據(jù)請(qǐng)求攜帶的信息來(lái)進(jìn)行決策。這樣的結(jié)果就是,只能找到顯示聲明在配置類中的控制器。 構(gòu)建Spring Web應(yīng)用 說(shuō)明 如果你有幸能看到。 1、本文參考了《Spring 實(shí)戰(zhàn)》重點(diǎn)內(nèi)容,參考了GitHub上的代碼 2、本文只為記錄作為以后參考,要想真正領(lǐng)悟Spring的強(qiáng)大,請(qǐng)看原書。 3、在一次...

    maybe_009 評(píng)論0 收藏0
  • SpringMVC之Controller常用注解功能全解析

    摘要:分發(fā)處理器將會(huì)掃描使用了該注解的類的方法,并檢測(cè)該方法是否使用了注解。這種絕對(duì)路徑和相對(duì)路徑所組合成的最終路徑都是相對(duì)于根路徑而言的。屬性屬性主要是用于限制能夠訪問(wèn)的方法類型的。屬性的用法和功能與屬性相似。使用標(biāo)記的參數(shù)。 一、簡(jiǎn)介 在SpringMVC 中,控制器Controller 負(fù)責(zé)處理由DispatcherServlet 分發(fā)的請(qǐng)求,它把用戶請(qǐng)求的數(shù)據(jù)經(jīng)過(guò)業(yè)務(wù)處理層處理之后封...

    wanghui 評(píng)論0 收藏0
  • springmvc常用注解標(biāo)簽詳解

    摘要:分發(fā)處理器將會(huì)掃描使用了該注解的類的方法,并檢測(cè)該方法是否使用了注解。作用該注解用于將的方法返回的對(duì)象,通過(guò)適當(dāng)?shù)霓D(zhuǎn)換為指定格式后,寫入到對(duì)象的數(shù)據(jù)區(qū)。用于注解層,在類上面注解。使用標(biāo)記的參數(shù)。 1、@Controller 在SpringMVC 中,控制器Controller 負(fù)責(zé)處理由DispatcherServlet 分發(fā)的請(qǐng)求,它把用戶請(qǐng)求的數(shù)據(jù)經(jīng)過(guò)業(yè)務(wù)處理層處理之后封裝成一個(gè)M...

    notebin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<