javaWebv-spring-Boot註解速查

1.@RequestParam

@RequestMapping("/menuQuery")
public Object meanQuery(@RequestParam Integer id){
	......
	......省略代碼
}

在這裏插入圖片描述這裏寫入的參數就會從前端傳入到後端代碼中
如果不強制要求傳入參數的話,需要做如下設置

required該參數是否必須。默認爲true;
defaultValue請求參數的默認值。

@RequestMapping("/menuQuery")
public Object meanQuery(@RequestParam(required = false) Integer id){
	......
	......省略代碼
}

2.@RequestMapping

@RequestMapping("/menuQuery")
public Object meanQuery(){
	......
	......省略代碼
}

在這裏插入圖片描述通過@RequestMapping註解可以實現前端通過訪問註解定義url地址,可以訪問到後端註解下的代碼塊.

3. @Autowired

public class MenuService {
    @Autowired
    MenuMapper menumapper;
...........
..........省略代碼
}

通過@Autowired註解實現的其實就是menumapper = new MenuMapper,把一個設置好的類實例化到當前類內部.

在這裏插入圖片描述

4.HttpServletRequest

HttpServletRequest與@RequestParam實現目的接收前端發送過來的數據,只不過HttpServletRequest接收的是一個封裝好的對象.
HttpServletRequest接口最常用的方法就是獲得請求中的參數,這些參數一般是客戶端表單中的數據。同時,HttpServletRequest接口可以獲取由客戶端傳送的名稱,也可以獲取產生請求並且接收請求的服務器端主機名及IP地址,還可以獲取客戶端正在使用的通信協議等信息。下表是接口HttpServletRequest的常用方法。

在這裏插入圖片描述在這裏插入圖片描述

5.HttpServletResponse

在Servlet中,當服務器響應客戶端的一個請求時,就要用到HttpServletResponse接口。設置響應的類型可以使用setContentType()方法。發送字符數據,可以使用getWriter()返回一個對象。
下表是接口HttpServletResponse的常用方法。
在這裏插入圖片描述

5.1sendRedircet(String location)

sendRedircet(放入一個模板頁面) 他可以實現頁面的跳轉,運行到sendRedircet時,就會跳轉到括號內傳入的模板頁面

6.@RequestBody

@RequestBody主要用來接收前端傳遞給後端的json字符串中的數據的(請求體中的數據的);@RequestBody直接以String接收前端傳過來的json數據.
GET方式無請求體,所以使用@RequestBody接收數據時,前端不能使用GET方式提交數據,而是用POST方式進行提交。在後端的同一個接收方法裏,@RequestBody與@RequestParam()可以同時使用,@RequestBody最多隻能有一個,而@RequestParam()可以有多個。

注:一個請求,只有一個RequestBody;一個請求,可以有多個RequestParam。

7.@RequestParam

@RequestParam註解定義在方法傳參內,實現的是前端網頁傳入參數後發生到後端

http://localhost/account/list?pageNum=1

問號,後面的pageNum=1就是前端寫入的參數,會通過@RequestParam註解,傳遞到後端,然後在後端使用pageNum這個變量,進行相關的操作(一般是使用場景就是翻頁的實現)

@RequestMapping("/list")
	public String list(@RequestParam(defaultValue = "1") int pageNum,@RequestParam(defaultValue = "5" ) int pageSize,Model model) {
		
		PageInfo<Account>page = accountSrv.findByPage(pageNum,pageSize);
		model.addAttribute("page", page);
		return "/account/list";
	}
  1. required:請求參數中是否必須提供此參數,默認值是true,true爲必須提供
  2. defaultValue:默認值

8.@ConfigurationProperties

8.1使用場景:

將大量的參數配置在 application.properties或application.yml文件中,通過 @ConfigurationProperties 註解,我們可以方便的獲取這些參數值

8.2注意:

使用時要通過添加 @Component 或者@Configuration註解讓 Component Scan 掃描到

9.@Configuration與@Bean的共同使用

@Configuration可理解爲用spring的時候xml裏面的標籤
@Bean可理解爲用spring的時候xml裏面的標籤

    <beans>
        <bean id="myService" class="com.acme.services.MyServiceImpl"/>
    </beans>

使用@Bean 註解表明MyServiceImpl需要交給Spring進行管理,做一個單例模式,這樣我們所以的線程都是共享同一個MyServiceImpl,不會出現線程安全問題

10Model

Model是放在方法的參數列表裏面,使用model.addAttribute(“供前端調用的名稱”,數據集)可以實現:從後端mysql查詢數據傳遞給前端頁面使用

  @RequestMapping("/list")
    public String list(Model model){

        List<Account>accountList = accountSrv.findAll();//去server層獲取數據庫內容
        model.addAttribute("accountList",accountList);//通過model把從數據庫獲取信息傳遞到前端

        return "account/list"; 
    }

11.PageHelper:分頁的實現

PaheHelper官方文檔

11.1controller層示例代碼

@RequestMapping("/list")
	public String list(@RequestParam(defaultValue = "1") int pageNum,@RequestParam(defaultValue = "5" ) int pageSize,Model model) {
		
		PageInfo<Account>page = accountSrv.findByPage(pageNum,pageSize);
		//我們拿到server層返回過來的封裝好的PageInfo類型數據集,我們通過model發送給前端頁面,前端可以通過page來調用
		model.addAttribute("page", page);
		return "/account/list";
	}

11.2service層的示例代碼

public PageInfo<Account> findByPage(int pageNum, int pageSize) {

		PageHelper.startPage(pageNum, pageSize); //頁碼,和每頁顯示數量

		AccountExample example = new AccountExample();
		List<Account> list = accMapper.selectByExample(example);

		//通過傳入的數據集list,和準備分幾頁,計算一頁多少數據,做一個PageInfo的數據集返回出去
		return new PageInfo<>(list, 5);
	}

12.MultipartFile用戶文件上傳

MultipartFile是寫在方法傳入參數位置,通過MultipartFile實現用戶上傳文件,後端接收

//用戶上傳文件存儲的路徑應該避免中文字符,否則會報錯
@RequestMapping("/fileUploadController")
	public String fileUpload (MultipartFile filename,String password) { //這裏要注意必須叫filename,要不然後面找不到MultipartFile
		System.out.println("password:" + password);
		System.out.println("file:" + filename.getOriginalFilename());
		try {
			
		File path = new File(ResourceUtils.getURL("classpath:").getPath());
        File upload = new File(path.getAbsolutePath(), "static/upload/");
        
        System.out.println("upload:" + upload);
        
        filename.transferTo(new File(upload+"/"+filename.getOriginalFilename()));
        
        
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "profile";
	}

上述代碼就是實現的一個文件上傳接口.一般文件上傳都按照此類進行書寫.

13.@Controller和@RestController

13.@Controller

將方法類註解爲一個可供前端調用的接口

@Controller
public class HelloController{
	@RequestMapping("/hello)
	@RequestBody
	public String hello(){
		return "hello"
	}
}

13.2@RestController

@RestController他是@RequestBody與@Controller整合版,有些人嫌上述麻煩,可以使用@RestController來簡化代碼

@RestController
public class HelloController{
	@RequestMapping("/hello) //這裏就少了@RequestBody,@RequestBody就被@RestController給整合了
	public String hello(){
		return "hello"
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章