電商網站常常用到的restful風格 ,只是一種開發思想,不是開發框架,如今的技術並無徹底實現restful風格。 restful風格是一種架構理念,完美的詮釋了http協議 restful 方式須要配置一套restful風格的前端控制器,用/來標識url-pattern RequestMapping(value="/ViewItems/{id}" String id) java類裏面使用@PathVariable("id") 註解進行參數綁定String id或者綁定java Bean的bean屬性
Springboot 提供了統一的註解@SpringBootApplication來替代這三個註解@Configuration、@EnableAutoConfiguration、@ComponentScan,簡化程序的配置。
@EnableAutoConfiguration:可以自動配置spring的上下文,試圖猜想和配置你想要的bean類,一般會自動根據你的類路徑和你的bean定義自動配置。
@ComponentScan:會自動掃描指定包下的所有標有@Component的類,並註冊成bean,固然包括@Component下的子註解@Service,@Repository,@Controller。
@Configuration標註在類上,至關於把該類做爲spring的xml配置文件中的<beans>,做用爲:配置spring容器(應用上下文),加載配置xml文件的註解。用@Configuration註解該類,等價與XML中配置beans;用@Bean標註方法等價於XML中配置bean。
想要以Java形式定製默認的配置,你能夠簡單的實現WebMvcConfigurer接口,或者繼承WebMvcConfigurerAdapter並重寫須要的方法: @Configuration class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); }
}
Override是一個marker annotation類型,它被用做標註方法。它說明了被標註的方法重載了父類的方法,起到了斷言的做用。 若是寫錯,編譯器能夠檢測出哪些是錯誤的,這樣能保證你的確重寫的方法正確.
這個註解指的是分組校驗,與BindingResult 配對出現, ModelandView 的 Model對象能夠將error的信息返回給界面。
註解回顯到request裏面的key 處理回顯信息:
無論你輸入什麼,正確都提交,錯誤都回顯,同時還能夠將返回值返回給界面,最簡單的回顯跟數據類型的回顯,直接使用model.addAttribute("allErrors",allErrors); 配置圖片的虛擬目錄跟訪問路徑,tomcat雙擊->model->選在第二個add external web module
Spring 2.5 引入了 @Autowired 註釋,它能夠對類成員變量、方法及構造函數進行標註,完成自動裝配的工做。 經過 @Autowired的使用來消除 set ,get方法。
註解爲控制器指定能夠處理哪些特定的 URL 請求。
@ApiOperation(value = 「接口說明」, httpMethod = 「接口請求方式」, response= 「接口返回參數類型」, notes = 「接口發佈說明」;其餘參數可參考源碼,不是spring自帶的註解,而是swagger裏com.wordnik.swagger.annotations.ApiOperation;
@ApiParam(required = 「是否必須參數」, name = 「參數名稱」, value = 「參數具 體描述」。
修飾整個類,描述Controller的做用。
描述一個類的一個方法,或者說一個接口。
用Model對象來接收參數。
@ApiParam(value = "token", required = true) @RequestParam String token Web前端/移動端HTTP請求方式:直接把參數附帶到URL後面,或者用AJAX方法,表單提交。
用對象接收參數時,描述對象的一個字段。
HTTP響應其中1個請求以及參數描述。
HTTP響應總體描述。
對象屬性 @ApiModelProperty 用在出入參數對象的字段上。
@RestController註解是它繼承自@Controller註解。4.0以前的版本,spring MVC的組件都使用@Controller來標識當前類是一個控制器servlet。 使用這個特性,咱們能夠開發REST服務的時候不須要使用@Controller而專門的@RestController。 註解自己使用@Controller和@ResponseBody註解。使用了這個註解的類會被看做一個controller使用@RequestMapping的方法本身還有一個默認的@ResponseBody註解。
@Api 用於controller類上 用於協議集描述
@ApiOperation 用在controller的方法上 用於協議集描述
@ApiResponses 用在controller的方法上 屬於Response集
@ApiResponse 用在 @ApiResponses裏邊 屬於Response集
@ApiImplicitParams 用在controller的方法上 屬於非對象參數集
@ApiImplicitParam 用在@ApiImplicitParams的方法裏邊 屬於非對象參數集
@ApiModel 用在返回對象類上 描述返回對象的意義
把普通pojo實例化到spring容器中,至關於配置文件中的<bean id="" class=""/>
該註解用於讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,而後把相應的數據綁定到要返回的對象上 ,再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上
註解在類上, 爲類提供讀寫屬性, 此外還提供了 equals()、hashCode()、toString() 方法
註解在類上, 爲類提供一個內部的 Builder
註解在方法上, 爲方法提供同步鎖
註解在類上, 爲類提供一個屬性名爲 log 的 log4j 的日誌對象
註解在類上, 爲類提供一個屬性名爲 log 的 log4j 的日誌對象
用於標註業務層組件
用於標註控制層組件(如struts中的action)
用於標註數據訪問組件,即DAO組件
泛指組件,當組件很差歸類的時候,咱們可使用這個註解進行標註。
@Qualifier("chinese") 當接口存在兩個實現類的時候必須使用@Qualifier指定注入哪一個實現類,不然能夠省略,只寫@Autowired。 <mvc:annocation-driven/>註解形式的能夠不用配置json轉換器,直接使用 @ResponseBody註解 能夠設置json跟Bean 之間的轉換 : 該註解用於將Controller的方法返回的對象,經過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區
在方法定義上使用 @ModelAttribute 註解:Spring MVC 在調用目標處理方法前,會先逐個調用在方法級上標註了@ModelAttribute的方法,在方法的入參前使用
@ModelAttribute 註解:能夠從隱含對象中獲取隱含的模型數據中獲取對象,再將請求參數 –綁定到對象中,再傳入入參將方法入參對象添加到模型中
在處理方法入參處使用 @RequestParam 能夠把請求參 數傳遞給請求方法
綁定 URL 佔位符到入參
註解到方法上,出現異常時會執行該方法
使一個Contoller成爲全局的異常處理類,類中用@ExceptionHandler方法註解的方法能夠處理全部Controller發生的異常
該註解用於將Controller的方法返回的對象,經過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區。 使用時機: 返回的數據不是html標籤的頁面,而是其餘某種格式的數據時(如json、xml等)使用當咱們在Controller上標註了@RestController,這樣至關於Controller的全部方法都標註了@ResponseBody
@responseBody註解的做用是將controller的方法返回的對象經過適當的轉換器轉換爲指定的格式以後,寫入到response對象的body區,一般用來返回JSON數據或者是XML數據,須要注意的呢,在使用此註解以後不會再走試圖處理器,而是直接將數據寫入到輸入流中,他的效果等同於經過response對象輸出指定格式的數據。
@RequestMapping("/login")html
@ResponseBody
public User login(User user){
return user;
}
User字段:userName pwd
那麼在前臺接收到的數據爲:'{"userName":"xxx","pwd":"xxx"}'前端
效果等同於以下代碼:
@RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}java
細節:
Google的一個json的jar包,隨時將對象封裝json返回。
Gson gson = new Gson(); String json = gson.toJson(對象);
1,使用@Param註解 當如下面的方式進行寫SQL語句時: @Select("select column from table where userid = #{userid} ") public int selectColumn(int userid); 當你使用了使用@Param註解來聲明參數時,若是使用 #{} 或 ${} 的方式均可以。 @Select("select column from table where userid = ${userid} ") public int selectColumn(@Param("userid") int userid); 當你不使用@Param註解來聲明參數時,必須使用使用 #{}方式。若是使用 ${} 的方式,會報錯。 @Select("select column from table where userid = ${userid} ") public int selectColumn(@Param("userid") int userid); 2,不使用@Param註解 不使用@Param註解時,參數只能有一個,而且是Javabean。在SQL語句裏能夠引用JavaBean的屬性,並且只能引用JavaBean的屬性。 // 這裏id是user的屬性 @Select("SELECT * from Table where id = ${id}") Enchashment selectUserById(User user);
華麗的服裝
柔美的線條
只爲證實你來過
微笑的表情
脆弱的生命
只爲暗示你還活着
在千里以外的你
耳語的是什麼
牀前的燈
透漏着些什麼
路邊的人羣
又在低頭思索哪個
從前的你我
千年之後還記得住什麼
看見過奔騰的沙漠
體會過無聲的黃河
感覺時間的盡頭
重現惡魔的夢魘
快樂漫漫星空
悲傷縷縷光芒
黑夜與黎明的交替
是善與惡的更迭
冰與火的重生
美輪美奐
只爲意web