SpringMVC使用註解完成 URL 和 Controller & 方法之間的對映細節
1. 使用 @RequestMapping 來進行 URL 和 類 及 方法之間的對映。
2. @RequestMapping 註解可以標識到類上面,也可以標識到方法上
1). 若類上面沒有標識,則方法上面的直接相對於 WEB 應用的根目錄
< a href ="helloworld?name=springMVC">Hello
SpringMVC </a>
2). 若類上面有 @RequestMapping 標識,則類上面的 @RequestMapping 的 / 為相對於 WEB 應用的根目錄,而方法上的 / 相對於類上面的路徑
@RequestMapping("/springmvc" )
@Controllerpublic class SpringMVCTest {
@RequestMapping("/testRedirect" )
public String
testRedirect(){
System. out.println("testRedirect" );
return "redirect:/index.jsp" ;
}
→< a href ="springmvc/testRedirect">Test
Redirect </a>
3. @RequestMapping 提供了足夠精細的對映細節
URL,請求方式,是否包含什麼引數,引數值是否等於已經定義好的值,包含請求頭...
1). 對映 URL:使用 @RequestMapping 的 value 屬性
2). 對映請求方式:使用 @RequestMapping 的 method 屬性
2). 對映請求方式:使用 @RequestMapping 的 method 屬性
示例:
@RequestMapping(value="/testRequestMapping2" ,
method=RequestMethod. POST,params={"name" ,"age=12" })
public String testRequestMapping2(){
System. out.println("testRequestMapping2" );
return SUCCESS ;
}
@RequestMapping("/testRequestHeader" )
public String testRequestHeader(@RequestHeader (value="Accept-Language" )
String al,
@RequestParam("age" ) int age, @CookieValue("JSESSIONID" )
String jid){
System. out.println("Accept-Language:
" + al + ", age: " + age + ", JSESSIONID: " + jid);
return SUCCESS ;
}
4.★在目標方法中如何得到請求引數 ?
1). 使用註解:@RequestParam 或 @PathVariable。
①. @RequestParam:用於對映請求引數。
@RequestParam(value="age", required=false) int age:把 age 這個請求引數賦給 age 這個入 參,且該請求引數不是必須的!
required 預設為 true,即若沒有這個請求引數,則 SpringMVC 會丟擲異常
@RequestParam(value="age", required=false) int age:把 age 這個請求引數賦給 age 這個入 參,且該請求引數不是必須的!
required 預設為 true,即若沒有這個請求引數,則 SpringMVC 會丟擲異常
@RequestMapping(value= "testRequestParam")
public String testRequestParam(@RequestParam (value="username" ,required=false)
String un){
System. out.println("username: " +
un);
return SUCCESS ;
}
②. @PathVariable:可以將 URL 中佔位符引數繫結到控制器處理方法的入參中。
URL 中的 {xxx} 佔位符可以通過 @PathVariable("xxx") 繫結到操作方法的入參中。
URL 中的 {xxx} 佔位符可以通過 @PathVariable("xxx") 繫結到操作方法的入參中。
@RequestMapping( "/testRequestMappingPathVariable/{id}" )
public String testPathVariable( @PathVariable("id" )
Integer id){
System. out.println("testRequestMappingPathVariable:
" + id);
return SUCCESS ;
}
2). 直接使用類:直接在入參中使用自定義的類作為方法的入參。
適用於表單請求,把表單引數直接對映到物件的屬性上
------------------------------Action------------------------------------------------------------
@RequestMapping("/testPojo")
public String testPojo(User user){System. out.println("user: " + user);return SUCCESS ;}
---------------------------頁面請求--------------------------------------------------
<form action= "springmvc/testPojo" method ="POST">
username: <input type= "text" name ="username"/>
<br>
age: <input type= "text" name ="age"/>
<br>
email: <input type= "text" name ="email"/>
<br>
<input type= "submit" value ="Test
Pojo"/>
</form >
---------------------------------POJO---------------------------------------------------
public class User
{
private Integer id;
private String username;
private String email;
private int age ;
5. 如果需要可以使用 ServletAPI:request, response, session 作為方法的入參
@RequestMapping("/testServletAPI" )
public String testServletAPI(HttpServletRequest request, HttpServletResponse
response,
HttpSession session, Reader reader) throws IOException{
System. out.println(request);
System. out.println(response);
System. out.println(session);
System. out.println(request.getReader() == reader); //true
return SUCCESS ;
}
6. 使用 IO 作為入參:Servlet 的 ServletRequest 擁有 getInputStream() 和 getReader() 的方法,可以通過它們讀取請求資訊。相應 Servlet 的 ServletResponse 的 getOuputStream() 和
getWriter() 方法,可以通過它們輸出響應資訊。
@RequestMapping("/testWriter" )
public void testWriter(Writer
out) throws IOException{
out.write( "Hello~");
}
相關文章
- 聊聊springmvc中controller的方法的引數註解SpringMVCController
- 胖哥學SpringMVC:RequestMapping註解之對映路徑 上卷SpringMVCAPP
- SpringMVC 解析(三) Controller 註解SpringMVCController
- SpringMVC註解和非註解(xml)的方法的異同點SpringMVCXML
- SpringMVC 基於註解的Controller @RequestMapping @RequestParamSpringMVCControllerAPP
- ASP.NET 2.0的URL對映的實現方法ASP.NET
- ASP.NET2.0的URL對映的實現方法ASP.NET
- SpringMVC原始碼之Handler註冊、獲取以及請求controller中方法SpringMVC原始碼Controller
- ASM file和file alias之間的對映關係!ASM
- Generic:型別和值之間的對映 (轉)型別
- SpringMVC常用註解@Controller,@Service,@repository,@ComponentSpringMVCController
- 『手寫Mybatis』實現對映器的註冊和使用MyBatis
- Cache與主存之間的直接對映,全相聯對映和組項聯對映以及其地址變換
- SpringMVC請求對映handler原始碼解讀SpringMVC原始碼
- java之集合框架使用細節及常用方法Java框架
- JAXB(一)——初體驗之實現XML和物件之間的對映XML物件
- Spring MVC 基於URL的攔截和對映規則SpringMVC
- @requestmapping--springmvc註解的使用變數和全域性部*替代變數方法APPSpringMVC變數
- SpringMvc的常用註解SpringMVC
- Fluent API 配置實體和資料庫之間的對映關係API資料庫
- SpringMVC【開發Controller】詳解SpringMVCController
- 使用redis完成註冊和登入Redis
- mybatis中註解對映SQL示例程式碼MyBatisSQL
- SpringMVC--請求資料對映SpringMVC
- springmvc註解詳解SpringMVC
- Java之String類的使用細節Java
- 對於 @Autowired註解和@service註解的理解
- 【3】SpringMVC的ControllerSpringMVCController
- 業務物件對映到表之間的關聯問題!!物件
- iOS JSON與Object之間的對映 ObjectMapper For SwiftiOSJSONObjectAPPSwift
- Three.js進階篇之9 - 紋理對映和UV對映JS
- SpringMVC註解講解(一)SpringMVC
- 帶碼農《手寫Mybatis》進度3:實現對映器的註冊和使用MyBatis
- SpringMVC的@ResponseBody註解說明SpringMVC
- SpringMvc的常用註解介紹SpringMVC
- Spring IoC註解式開發無敵詳細(細節豐富)Spring
- SpringMvc筆記-註解SpringMVC筆記
- django中“url對映規則”和“服務端響應順序”Django服務端