【Java開發(fā)】Java熱門框架深入開發(fā)第7篇:二、請(qǐng)求與響應(yīng)【附代碼文檔】

??????教程全知識(shí)點(diǎn)簡(jiǎn)介:學(xué)習(xí)目標(biāo) 一、Spring簡(jiǎn)介 2 初識(shí)Spring 3 Spring體系結(jié)構(gòu) 二、IOC和DI入門案例【重點(diǎn)】 五、Bean的生命周期【了解】 問題導(dǎo)入 1 生命周期相關(guān)概念介紹 2 代碼演示 3 Bean銷毀時(shí)機(jī) 六、依賴注入(DI配置) 1 依賴注入方式【重點(diǎn)】 2 依賴自動(dòng)裝配【理解】 3 集合注入 今日目標(biāo) 一、第三方資源配置管理 1 管理DataSource連接池對(duì)象 2 加載properties屬性文件【重點(diǎn)】 四、Spring整合其他技術(shù)【重點(diǎn)】 二、AOP案例 1 案例-測(cè)量業(yè)務(wù)層接口萬次執(zhí)行效率 2 AOP切入點(diǎn)數(shù)據(jù)獲取 2 Spring事務(wù)角色【理解】 二、請(qǐng)求與響應(yīng) 1 請(qǐng)求映射路徑【重點(diǎn)】 2 請(qǐng)求參數(shù) 3 日期類型參數(shù)傳遞【重點(diǎn)】 4 響應(yīng) 三、REST風(fēng)格 1 REST簡(jiǎn)介 2 RESTful入門案例 3 REST快速開發(fā)【重點(diǎn)】 今日內(nèi)容 一、SSM整合【重點(diǎn)】 1 SSM整合配置 三、異常處理器【理解】 1 異常介紹 2 異常處理器 一、分模塊開發(fā)與設(shè)計(jì) 1. 分模塊開發(fā)的意義 模塊拆分原則 2. 分模塊開發(fā)(模塊拆分) 二、依賴管理 1. 依賴傳遞 2. 可選依賴 4 可選依賴和排除依賴的區(qū)別 三、聚合與繼承 1. 聚合工程 3. 繼承關(guān)系 5. 聚合與繼承的區(qū)別 四、屬性管理 1. 屬性 2. 版本管理 五、多環(huán)境配置與應(yīng)用 1. 多環(huán)境配置作用 2. 跳過測(cè)試(了解) 六、私服 2. 私服倉(cāng)庫(kù)分類 3. 資源上傳與下載 附件1:POM文件總體配置說明 一、MyBatisPlus簡(jiǎn)介 1. 入門案例 二、標(biāo)準(zhǔn)數(shù)據(jù)層開發(fā) 2. Lombok插件介紹 四、DML編程控制 1. id生成策略控制(Insert) 2. 多記錄操作(批量Delete/Select) 3. 邏輯刪除(Delete/Update) 4. 樂觀鎖(Update)


????倉(cāng)庫(kù)code.zip ??直接-->:???https://gitee.com/xiaoshuai112/Backend/blob/master/Java/Java熱門框架深入開發(fā)/note.md ???????

? 本教程項(xiàng)目亮點(diǎn)

?? 知識(shí)體系完整:覆蓋從基礎(chǔ)原理、核心方法到高階應(yīng)用的全流程內(nèi)容
?? 全技術(shù)鏈覆蓋:完整前后端技術(shù)棧,涵蓋開發(fā)必備技能
?? 從零到實(shí)戰(zhàn):適合 0 基礎(chǔ)入門到提升,循序漸進(jìn)掌握核心能力
?? 豐富文檔與代碼示例:涵蓋多種場(chǎng)景,可運(yùn)行、可復(fù)用
?? 工作與學(xué)習(xí)雙參考:不僅適合系統(tǒng)化學(xué)習(xí),更可作為日常開發(fā)中的查閱手冊(cè)
?? 模塊化知識(shí)結(jié)構(gòu):按知識(shí)點(diǎn)分章節(jié),便于快速定位和復(fù)習(xí)
?? 長(zhǎng)期可用的技術(shù)積累:不止一次學(xué)習(xí),而是能伴隨工作與項(xiàng)目長(zhǎng)期參考


??????全教程總章節(jié)


??????本篇主要內(nèi)容

二、請(qǐng)求與響應(yīng)

1 請(qǐng)求映射路徑【重點(diǎn)】

問題導(dǎo)入

@RequestMapping注解注解可以寫在哪?有什么作用?

1.1 @RequestMapping注解

  • 名稱:@RequestMapping
  • 類型:==方法注解 類注解==
  • 位置:SpringMVC控制器方法定義上方
  • 作用:設(shè)置當(dāng)前控制器方法請(qǐng)求訪問路徑,如果設(shè)置在類上統(tǒng)一設(shè)置當(dāng)前控制器方法請(qǐng)求訪問路徑前綴
  • 范例

JDBC API 文檔

@Controller
//類上方配置的請(qǐng)求映射與方法上面配置的請(qǐng)求映射連接在一起,形成完整的請(qǐng)求映射路徑
@RequestMapping("/user")
public class UserController {
    //請(qǐng)求路徑映射
    @RequestMapping("/save") //此時(shí)save方法的訪問路徑是:/user/save
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'module':'user save'}";
    }
}

AssertJ 文檔

2 請(qǐng)求參數(shù)

2.1 發(fā)送普通類型參數(shù)【重點(diǎn)】

問題導(dǎo)入

如何解決POST請(qǐng)求中文亂碼問題?

2.1.1 請(qǐng)求方式
  • GET請(qǐng)求
  • POST請(qǐng)求
2.1.2 GET請(qǐng)求傳遞普通參數(shù)
  • 普通參數(shù):url地址傳參,地址參數(shù)名與形參變量名相同,定義形參即可接收參數(shù)
//普通參數(shù):請(qǐng)求參數(shù)與形參名稱對(duì)應(yīng)即可完成參數(shù)傳遞
@RequestMapping("/commonParam")
@ResponseBody
public String commonParam(String name ,int age){
    System.out.println("普通參數(shù)傳遞 name ==> "+name);
    System.out.println("普通參數(shù)傳遞 age ==> "+age);
    return "{'module':'common param'}";
}
  • 問題:如果同學(xué)們傳遞的參數(shù)是中文試試,你們會(huì)發(fā)現(xiàn)接收到的參數(shù)出現(xiàn)了中文亂碼問題。
  • 原因:tomcat 8.5版本之后GET請(qǐng)求就不再出現(xiàn)中文亂碼問題,但是 使用的是tomcat7插件,所以會(huì)出現(xiàn)GET請(qǐng)求中文亂碼問題。
  • 解決:在pom.xml添加tomcat7插件處配置UTF-8字符集,解決GET請(qǐng)求中文亂碼問題。
<build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port><!--tomcat端口號(hào)-->
          <path>/</path> <!--虛擬目錄-->
          <uriEncoding>UTF-8</uriEncoding><!--訪問路徑編解碼字符集-->
        </configuration>
      </plugin>
    </plugins>
  </build>
2.1.3 POST請(qǐng)求傳遞普通參數(shù)
  • 普通參數(shù):form表單post請(qǐng)求傳參,表單參數(shù)名與形參變量名相同,定義形參即可接收參數(shù)
//普通參數(shù):請(qǐng)求參數(shù)與形參名稱對(duì)應(yīng)即可完成參數(shù)傳遞
@RequestMapping("/commonParam")
@ResponseBody
public String commonParam(String name ,int age){
    System.out.println("普通參數(shù)傳遞 name ==> "+name);
    System.out.println("普通參數(shù)傳遞 age ==> "+age);
    return "{'module':'common param'}";
}

問題: 發(fā)現(xiàn),POST請(qǐng)求傳遞的參數(shù)如果包含中文那么就會(huì)出現(xiàn)中文亂碼問題,說明 之前配置的tomcat插件uri路徑編解碼字符集無法解決POST請(qǐng)求中文亂碼問題。那么如何解決呢?

2.1.4 POST請(qǐng)求中文亂碼處理

在加載SpringMVC配置的配置類中指定字符過濾器。

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    //亂碼處理
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

Spring Batch 文檔

Project Reactor 文檔

2.2 五種類型參數(shù)傳遞

問題導(dǎo)入

當(dāng)請(qǐng)求參數(shù)名與形參變量名不同,該如何接收請(qǐng)求參數(shù)?

2.2.1 五種類型參數(shù)介紹
  • 普通參數(shù)
  • POJO類型參數(shù)
  • 嵌套POJO類型參數(shù)
  • 數(shù)組類型參數(shù)
  • 集合類型參數(shù)
2.2.2 普通參數(shù)【重點(diǎn)】
  • 普通參數(shù):當(dāng)請(qǐng)求參數(shù)名與形參變量名不同,使用@RequestParam綁定參數(shù)關(guān)系
//普通參數(shù):請(qǐng)求參數(shù)名與形參名不同時(shí),使用@RequestParam注解關(guān)聯(lián)請(qǐng)求參數(shù)名稱與形參名稱之間的關(guān)系
@RequestMapping("/commonParamDifferentName")
@ResponseBody
public String commonParamDifferentName(@RequestParam("name") String userName , int age){
    System.out.println("普通參數(shù)傳遞 userName ==> "+userName);
    System.out.println("普通參數(shù)傳遞 age ==> "+age);
    return "{'module':'common param different name'}";
}
  • 名稱:@RequestParam
  • 類型:形參注解
  • 位置:SpringMVC控制器方法形參定義前面
  • 作用:綁定請(qǐng)求參數(shù)與處理器方法形參間的關(guān)系
  • 參數(shù):
    • required:是否為必傳參數(shù)
    • defaultValue:參數(shù)默認(rèn)值
2.2.3 POJO類型參數(shù)【重點(diǎn)】
  • POJO參數(shù):請(qǐng)求參數(shù)名與形參對(duì)象屬性名相同,定義POJO類型形參即可接收參數(shù)

![image-202108


??? (未完待續(xù))項(xiàng)目系列下一章

??下一篇 將進(jìn)入更精彩的環(huán)節(jié)!
?? 記得收藏 & 關(guān)注,第一時(shí)間獲取更新!
?? 一起見證整個(gè)系列逐步成型的全過程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容