国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解

這篇具有很好參考價值的文章主要介紹了【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實現(xiàn),如果您對Maven還很陌生,請移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環(huán)境》,本文的上一篇為《PostMan工具的安裝與使用技巧》
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java前面我們已經(jīng)完成了入門案例相關的知識學習,接來了我們就需要針對SpringMVC相關的知識點進行系統(tǒng)的學習,之前我們提到過,SpringMVC是web層的框架,主要的作用是接收請求、接收數(shù)據(jù)、響應結果,所以這一章節(jié)是學習SpringMVC的重點內(nèi)容,我們主要會講解四部分內(nèi)容:

  • 請求映射路徑
  • 請求參數(shù)
  • 日期類型參數(shù)傳遞
  • 響應json數(shù)據(jù)

1 設置請求映射路徑

1.1 環(huán)境準備

  • 創(chuàng)建一個Web的Maven項目
  • pom.xml添加Spring依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.itheima</groupId>
	<artifactId>springmvc_03_request_mapping</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>war</packaging>

<dependencies>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>5.2.10.RELEASE</version>
	</dependency>
</dependencies>

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.1</version>
			<configuration>
				<port>80</port>
				<path>/</path>
			</configuration>
		</plugin>
	</plugins>
</build>
</project>
  • 創(chuàng)建對應的配置類
public class ServletContainersInitConfig extends
AbstractAnnotationConfigDispatcherServletInitializer {

	protected Class<?>[] getServletConfigClasses() {
			return new Class[]{SpringMvcConfig.class};
		}
		protected String[] getServletMappings() {
			return new String[]{"/"};
		}
		protected Class<?>[] getRootConfigClasses() {
			return new Class[0];
	}
}

@Configuration
@ComponentScan("com.itheima.controller")
public class SpringMvcConfig {
}
  • 編寫B(tài)ookController和UserController
@Controller
public class UserController {

	@RequestMapping("/save")
	@ResponseBody
	public String save(){
		System.out.println("user save ...");
		return "{'module':'user save'}";
	}
	
	@RequestMapping("/delete")
	@ResponseBody
		public String save(){
		System.out.println("user delete ...");
		return "{'module':'user delete'}";
	}
}

@Controller
public class BookController {

	@RequestMapping("/save")
	@ResponseBody
	public String save(){
		System.out.println("book save ...");
		return "{'module':'book save'}";
	}
}

最終創(chuàng)建好的項目結構如下:
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
把環(huán)境準備好后,啟動Tomcat服務器,后臺會報錯:
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
從錯誤信息可以看出:

  • UserController有一個save方法,訪問路徑為http://localhost/save
  • BookController也有一個save方法,訪問路徑為http://localhost/save
  • 當訪問http://localhost/saved的時候,到底是訪問UserController還是BookController?

1.2 問題分析

團隊多人開發(fā),每人設置不同的請求路徑,沖突問題該如何解決?
解決思路:為不同模塊設置模塊名作為請求路徑前置
對于Book模塊的save,將其訪問路徑設置http://localhost/book/save
對于User模塊的save,將其訪問路徑設置http://localhost/user/save
這樣在同一個模塊中出現(xiàn)命名沖突的情況就比較少了。

1.3 設置映射路徑

步驟1:修改Controller

@Controller
public class UserController {
	@RequestMapping("/user/save")
	@ResponseBody
	public String save(){
		System.out.println("user save ...");
		return "{'module':'user save'}";
	}
	@RequestMapping("/user/delete")
	@ResponseBody
	public String save(){
		System.out.println("user delete ...");
		return "{'module':'user delete'}";
	}
}
@Controller
public class BookController {
	@RequestMapping("/book/save")
	@ResponseBody
	public String save(){
		System.out.println("book save ...");
		return "{'module':'book save'}";
	}
}

問題是解決了,但是每個方法前面都需要進行修改,寫起來比較麻煩而且還有很多重復代碼,如果/user后期發(fā)生變化,所有的方法都需要改,耦合度太高

步驟2:優(yōu)化路徑配置
優(yōu)化方案:

@Controller
@RequestMapping("/user")
public class UserController {
	@RequestMapping("/save")
	@ResponseBody
	public String save(){
		System.out.println("user save ...");
		return "{'module':'user save'}";
	}
	@RequestMapping("/delete")
	@ResponseBody
	public String save(){
		System.out.println("user delete ...");
		return "{'module':'user delete'}";
	}
}
@Controller
@RequestMapping("/book")
public class BookController {
	@RequestMapping("/save")
	@ResponseBody
	public String save(){
		System.out.println("book save ...");
		return "{'module':'book save'}";
	}
}

注意:

  • 當類上和方法上都添加了@RequestMapping注解,前端發(fā)送請求的時候,要和兩個注解的value值相加匹配才能訪問到。
  • @RequestMapping注解value屬性前面加不加/都可以

擴展小知識:
對于PostMan如何覺得字小不好看,可以使用ctrl+=調(diào)大,ctrl±調(diào)小。

2 請求參數(shù)

請求路徑設置好后,只要確保頁面發(fā)送請求地址和后臺Controller類中配置的路徑一致,就可以接收到前端的請求,接收到請求后,如何接收頁面?zhèn)鬟f的參數(shù)?

關于請求參數(shù)的傳遞與接收是和請求方式有關系的,目前比較常見的兩種請求方式為:

  • GET
  • POST

針對于不同的請求前端如何發(fā)送,后端如何接收

2.1 環(huán)境準備

  • 創(chuàng)建一個Web的Maven項目
  • pom.xml添加Spring依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	
	<groupId>com.itheima</groupId>
	<artifactId>springmvc_03_request_mapping</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>war</packaging>

	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.2.10.RELEASE</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.1</version>
				<configuration>
					<port>80</port>
					<path>/</path>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
  • 創(chuàng)建對應的配置類
public class ServletContainersInitConfig extends
AbstractAnnotationConfigDispatcherServletInitializer {

	protected Class<?>[] getServletConfigClasses() {
		return new Class[]{SpringMvcConfig.class};
	}
	protected String[] getServletMappings() {
		return new String[]{"/"};
	}
	protected Class<?>[] getRootConfigClasses() {
		return new Class[0];
	}
}

@Configuration
@ComponentScan("com.itheima.controller")
public class SpringMvcConfig {
}
  • 編寫UserController
@Controller
public class UserController {

	@RequestMapping("/commonParam")
	@ResponseBody
	public String commonParam(){
		return "{'module':'commonParam'}";
	}
}
  • 編寫模型類,User和Address
public class Address {
	private String province;
	private String city;
	//setter...getter...略
}
public class User {
	private String name;
	private int age;
	//setter...getter...略
}

最終創(chuàng)建好的項目結構如下:
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java

2.2 參數(shù)傳遞

2.2.1 GET發(fā)送單個參數(shù)

發(fā)送請求與參數(shù):

http://localhost/commonParam?name=itcast

【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
接收參數(shù):

@Controller
public class UserController {
	@RequestMapping("/commonParam")
	@ResponseBody
	public String commonParam(String name){
		System.out.println("普通參數(shù)傳遞 name ==> "+name);
		return "{'module':'commonParam'}";
	}
}

2.2.2 GET發(fā)送多個參數(shù)

發(fā)送請求與參數(shù):

http://localhost/commonParam?name=itcast&age=15

【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
接收參數(shù):

@Controller
public class UserController {
	@RequestMapping("/commonParam")
	@ResponseBody
	public String commonParam(String name,int age){
		System.out.println("普通參數(shù)傳遞 name ==> "+name);
		System.out.println("普通參數(shù)傳遞 age ==> "+age);
		return "{'module':'commonParam'}";
	}
}

2.2.3 GET請求中文亂碼

如果我們傳遞的參數(shù)中有中文,你會發(fā)現(xiàn)接收到的參數(shù)會出現(xiàn)中文亂碼問題。
發(fā)送請求: http://localhost/commonParam?name=張三&age=18
控制臺:
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
出現(xiàn)亂碼的原因相信大家都清楚,Tomcat8.5以后的版本已經(jīng)處理了中文亂碼的問題,但是IDEA中的Tomcat插件目前只到Tomcat7,所以需要修改pom.xml來解決GET請求中文亂碼問題

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.1</version>
			<configuration>
				<port>80</port><!--tomcat端口號-->
				<path>/</path> <!--虛擬目錄-->
				<uriEncoding>UTF-8</uriEncoding><!--訪問路徑編解碼字符集-->
			</configuration>
		</plugin>
	</plugins>
</build>

2.2.4 POST發(fā)送參數(shù)

發(fā)送請求與參數(shù)
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
接收參數(shù):
和GET一致,不用做任何修改

@Controller
public class UserController {
	@RequestMapping("/commonParam")
	@ResponseBody
	public String commonParam(String name,int age){
		System.out.println("普通參數(shù)傳遞 name ==> "+name);
		System.out.println("普通參數(shù)傳遞 age ==> "+age);
		return "{'module':'commonParam'}";
	}
}

2.2.5 POST請求中文亂碼

發(fā)送請求與參數(shù):
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
接收參數(shù):
控制臺打印,會發(fā)現(xiàn)有中文亂碼問題。
【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解,# SSM與SpringBoot教程,Java教程,spring,學習,java
解決方案:配置過濾器

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};
	}
}

CharacterEncodingFilter是在spring-web包中,所以用之前需要導入對應的jar包。文章來源地址http://www.zghlxwxcb.cn/news/detail-768359.html

到了這里,關于【Spring教程28】Spring框架實戰(zhàn):從零開始學習SpringMVC 之 請求與請求參數(shù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 從零開始的Django框架入門到實戰(zhàn)教程(內(nèi)含實戰(zhàn)實例) - 01 創(chuàng)建項目與app、加入靜態(tài)文件、模板語法介紹(學習筆記)

    從零開始的Django框架入門到實戰(zhàn)教程(內(nèi)含實戰(zhàn)實例) - 01 創(chuàng)建項目與app、加入靜態(tài)文件、模板語法介紹(學習筆記)

    ??Django是目前比較火爆的框架,之前有在知乎刷到,很多畢業(yè)生進入大廠實習后因為不會git和Django框架3天就被踢掉了,因為他們很難把自己的工作融入到整個組的工作中。因此,我嘗試自學Django并整理出如下筆記。 ??在這部分,我將從Django的安裝講起,從創(chuàng)建項目到制

    2024年02月09日
    瀏覽(28)
  • 從零開始 Spring Boot 28:資源

    從零開始 Spring Boot 28:資源

    圖源:簡書 (jianshu.com) Spring中的資源被抽象為一個Resource接口: Resource 接口中最重要的一些方法是。 getInputStream() : 定位并打開資源,返回一個用于讀取資源的 InputStream 。我們期望每次調(diào)用都能返回一個新的 InputStream 。關閉該流是調(diào)用者的責任。 exists() : 返回一個 boolean 值,

    2024年02月05日
    瀏覽(23)
  • Kubernetes超詳細教程,一篇文章幫助你從零開始學習k8s,從入門到實戰(zhàn)

    Kubernetes超詳細教程,一篇文章幫助你從零開始學習k8s,從入門到實戰(zhàn)

    k8s github地址:https://github.com/kubernetes/kubernetes 官方文檔:https://kubernetes.io/zh-cn/docs/home/ k8s,全程是 kubernetes,這個名字源于希臘語,意為\\\"舵手\\\"或\\\"飛行員” k8s 這個縮寫是因為 k 和 s 之間有八個字符 Google 在2014年開源了 k8s 項目,k8s 是一個用于 自動化部署、擴展和管理容器化

    2024年04月14日
    瀏覽(57)
  • [Java優(yōu)選系列第2彈]SpringMVC入門教程:從零開始搭建一個Web應用程序

    [Java優(yōu)選系列第2彈]SpringMVC入門教程:從零開始搭建一個Web應用程序

    想和你們分享我眼里的代碼世界???? 優(yōu)選系列持續(xù)更新中?? 一直在等你,你終于來啦?? ?????????????????????????? 綠色代表解釋說明? ??????????? ?? 黃色代表重點 ??????????? ? ?? 紅色代表精髓 ????????SpringMVC是一個基于Java的Web框架,它使

    2024年02月12日
    瀏覽(29)
  • IDEA版SSM入門到實戰(zhàn)(Maven+MyBatis+Spring+SpringMVC) -Spring搭建框架步驟

    第一章 初識Spring 1.1 Spring簡介 Spring是一個為簡化企業(yè)級開發(fā)而生的 開源框架 。 Spring是一個 IOC(DI) 和 AOP 容器框架。 IOC全稱:Inversion of Control【控制反轉】 將對象【萬物皆對象】控制權交個Spring DI全稱:(Dependency Injection):依賴注入 AOP全稱:Aspect-Oriented Programming,面向切面編

    2024年02月04日
    瀏覽(53)
  • 聯(lián)邦學習實戰(zhàn)-1:用python從零開始實現(xiàn)橫向聯(lián)邦學習

    聯(lián)邦學習實戰(zhàn)-1:用python從零開始實現(xiàn)橫向聯(lián)邦學習

    什么是聯(lián)邦學習? 簡單來說就是在一個多方的環(huán)境中,數(shù)據(jù)集是零散的(在各個不同的客戶端中),那么怎樣實現(xiàn)機器學習算法呢? 首先想到的就是將多個數(shù)據(jù)集合并合并起來,然后統(tǒng)一的使用傳統(tǒng)的機器學習或者深度學習算法進行計算,但是如果有一方因為數(shù)據(jù)隱私問題

    2023年04月08日
    瀏覽(148)
  • 從零開始的QQ開放平臺機器人-------Gensokyo框架部署運行開發(fā)教程合集

    從零開始的QQ開放平臺機器人-------Gensokyo框架部署運行開發(fā)教程合集

    大家好,我是早苗狐,一名有5年QQ機器人開發(fā)運營經(jīng)驗的機器人愛好者. 隨著QQ為機器人開放了越來越多的接口能力,基于QQ開放平臺Api能力的新框架逐漸應運而生, 本文就帶給大家如何通過一系列操作,部署,運行,維護和開發(fā)一個新的QQ機器人. QQ開放平臺地址: QQ開放平臺 QQ開放平臺

    2024年02月03日
    瀏覽(50)
  • Android SDK安裝教程(超詳細),從零基礎入門到實戰(zhàn),從看這篇開始

    Android SDK安裝教程(超詳細),從零基礎入門到實戰(zhàn),從看這篇開始

    前言 在使用appnium的時候,除了安裝JDK之外,也需要安裝Android SDK。那么,正確安裝Android SDK是怎樣的呢,跟著小編繼續(xù)往下看。 安裝Android SDK和環(huán)境配置 1.安裝Android SDK 首先打開官網(wǎng):https://www.androiddevtools.cn/ 選中導航中的Android SDK工具,再點擊SDK Tools。 網(wǎng)頁會自動往下翻,

    2024年02月14日
    瀏覽(96)
  • Spring Boot(04):讓你的Spring Boot應用“火力全開”,從零開始學習starter

    Spring Boot(04):讓你的Spring Boot應用“火力全開”,從零開始學習starter

    ????????Spring Boot是一款非常流行的Java開發(fā)框架,其具有快速開發(fā)、自動化配置、內(nèi)嵌服務器、易于擴展等特點,因此備受開發(fā)者歡迎。在日常開發(fā)中,我們經(jīng)常需要在不同的環(huán)境中進行測試和部署,此時,如何實現(xiàn)開發(fā)、測試、生產(chǎn)環(huán)境的快速切換,成為了我們需要解決

    2024年04月13日
    瀏覽(22)
  • “從零開始學習Spring Boot:快速搭建Java后端開發(fā)環(huán)境“

    標題:從零開始學習Spring Boot:快速搭建Java后端開發(fā)環(huán)境 摘要:本文將介紹如何從零開始學習Spring Boot,并詳細講解如何快速搭建Java后端開發(fā)環(huán)境。通過本文的指導,您將能夠快速搭建一個基于Spring Boot的Java后端開發(fā)環(huán)境并開始編寫代碼。 正文: 一、準備工作 在開始之前,

    2024年02月15日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包