spring框架——day02經常使用配置和註解

一,SpringMVC經常使用配置
1.springmvc默認加載的配置文件是WEB-INF下的springmvc-servlet.xml,而咱們一般將配置文件放在項目的資源目錄中,即classpath下,所以須要配置springmvc加載的配置文件地址。
將配置文件轉移至resources中,更名,並修改web.xml:

springmvc
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:spring-web.xml



springmvc
/
java

2.上面的配置中所應用的處理器映射器、處理器適配器以及視圖解析器都是默認的,能夠修改成註解的使用方式。
在springmvc的配置文件中添加配置:

web

<!--註解方式的處理器適配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!--視圖解析器 
        經過邏輯視圖:index
        視圖解析器解析邏輯視圖(解析出物理視圖):prefix(前綴)+邏輯視圖+suffix(後綴)
        解析物理視圖:/index.jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

注:註解方式的處理器映射器和處理器適配器的配置能夠合併爲一個配置:
    <mvc:annotation-driven/>

3.在註解方式的配置下,controller的寫法將變得很是簡單:
@Controller
public class TestController {
@RequestMapping("/test1") // 爲該方法配置訪問路徑
public String test1() {
System.out.println("Hello,SpringMVC!");
return "index";
}
@RequestMapping("/test2")
public String test2() {
System.out.println("Hello,test2!");
return "index";
} }
二,Controller中方法的參數
Controller中方法的參數列表,功能很是強大,主要功能有如下兩點:
1.接收請求參數; 2.獲取servletAPIspring

1.接收請求參數
寫一個用戶登陸的方法:
// 簡單類型的參數,springmvc能夠直接幫咱們封裝成參數列表中聲明的類型,好比String,int,double...
public String login(String username, String password){
System.out.println(username);
System.out.println(password);
return null;
}數組

// 或者也能夠直接接收一個java bean
    public String login(User user){
        System.out.println(user.getUsername());
        System.out.println(user.getPassword());
        return null;
    }

若是請求參數是一個日期,springmvc並不能直接封裝到Date中,須要設置一下日期格式:
    public class User {
        private String username;
        private String password;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date birthday;
        ...
    }

若是請求參數是一個數組類型,咱們能夠直接經過數組接收:
    @RequestMapping("delSel")
    public String delSel(Integer[] ids) {
        phoneService.delSel(ids);
        return "redirect:list";
    }

若是想要用集合類型來接收數組參數呢?下面的寫法能夠麼?
    @RequestMapping("delSel")
    public String delSel(ArrayList<Integer> ids) {
        phoneService.delSel(ids);
        return "redirect:list";
    }

2.獲取servletAPI
能夠在Controller方法的形參中直接使用如下類型:
HttpServletRequest
經過request對象獲取請求信息
HttpServletResponse
經過response處理響應信息
HttpSession
經過session對象獲得session中存放的對象
Model/ModelMap
model是一個接口,modelMap是一個接口實現 。
做用:將model數據填充到域中。session

public String login(User user, HttpServletRequest request, HttpSession session,
                            HttpServletResponse response, Model model)

三,Controller中方法的返回值
能夠爲Controller中的方法指定三種返回值類型:
ModelAndView
指定視圖,而且把model數據放到域中
void
若是返回值爲void的時候,能夠在controller方法形參上定義request和response,使用request或response指定響應結果
String
邏輯視圖名稱
四,SpringMVC經常使用註解
@RequestMapping
聲明在方法上:
@RequestMapping(value = "/list", method = RequestMethod.GET)
經過value屬性配置該方法的訪問路徑
經過method屬性指定該方法容許的訪問方式mvc

聲明在類上:
    @RequestMapping("/person")
        窄化請求,能夠對請求URL進行分類管理,限制訪問該類中的URL必須先訪問class類上加上的@RequestMapping註解。
        例如:/person/add,/person/list...

@RequestParam
該註解用來標註一個請求參數:
form中:

controller中:
public String login(@RequestParam(value="username",required=true,defaultValue="noname") String uname)
value:@RequestParam(value="username")等同於@RequestParam("username")
required:參數是否必填
defaultValue:設置默認值app

@PathVariable
將路徑的一部分做爲請求參數,RESTful的基礎。
@RequestMapping("/findById/{id}")
public String findById(@PathVariable Integer id, Model model) {
Phone phone = phoneService.findById(id);
model.addAttribute("phone", phone);
System.out.println(".........................");
return "edit";
}jsp

相關文章
相關標籤/搜索