请通过浏览器功能收藏网页

springmvc4 handler(acion)方法的@RequestMapping详细配置 spring4技术

发布时间:2018-10-20 14:46:11  作者:本站编辑  来源:本站原创  浏览次数:
我有话说 | 分享 |
www.javainfo.com.cn 上干货 欢迎收藏

最基础的requestMapping配置说明及各个参数方式的举例, 此参数不仅可以修饰action也可以修饰其方法

这里只介绍配置在方法上的形式。


1  最基础的mapping配置

   

         //http://xxxxxx/project_name/actionRequestMapping

 @RequestMapping("/actonRequestMapping")

public String testRequestMapping() {

System.out.println("RequestMapping");

return SUCCESS;

}


        /**  

            form 以POST形式来请求

*  method 属性来指定请求方式

*/

@RequestMapping(value = "/actonMethod", method = RequestMethod.POST)

public String testMethod() {

System.out.println("Method");

return SUCCESS;

}

       /**

* 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.

* 表示 : 必须有 username age 这两个属性提交,且age属性不能为10; 限定header参数  Accept-Language 

                       必须是 en-US,zh;q=0.8

* @return

*/

@RequestMapping(value = "ParamsAndHeaders", params = { "username",

"age!=10" }, headers = { "Accept-Language=en-US,zh;q=0.8" })

public String testParamsAndHeaders() {

System.out.println("ParamsAndHeaders");

return SUCCESS;

}


4   通配符匹配

        *可以表示   所有字符  /actionAntPath/sss[ffff][...]/abc

        @RequestMapping("/actonAntPath/*/abc")

public String testAntPath() {

System.out.println("AntPath");

return SUCCESS;

}

5    pathParam 映射到URL里   

/**

* @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.

* @param id

* @return

*/

@RequestMapping("/actonPathVariable/{id}")

public String testPathVariable(@PathVariable("id") Integer id) {

System.out.println("PathVariable: " + id);

return SUCCESS;

  }


6   rest 风格请求实现   Rest 风格的 URL. 以 CRUD 为例

   

/**    start

* : 新增: /order POST 修改: /order/1 PUT update?id=1 获取:

* /order/1 GET get?id=1 删除: /order/1 DELETE delete?id=1

* 如何发送 PUT 请求和 DELETE 请求呢 ? 

           1. 需要配置 HiddenHttpMethodFilter

                  web.xml 添加请求转换配置:

              <filter>

<filter-name>HiddenHttpMethodFilter</filter-name>

<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>

   </filter>

   <filter-mapping>

<filter-name>HiddenHttpMethodFilter</filter-name>

<url-pattern>/*</url-pattern>

   </filter-mapping>


           2. 需要发送 POST 请求

* 3. 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为 DELETE 或 PUT

* 在 SpringMVC 的目标方法中如何得到 id 呢? 使用 @PathVariable 注解

*/

@RequestMapping(value = "/actonRest/{id}", method = RequestMethod.PUT)

public String testRestPut(@PathVariable Integer id) {

System.out.println("Rest Put: " + id);

return SUCCESS;

}


@RequestMapping(value = "/actonRest/{id}", method = RequestMethod.DELETE)

public String testRestDelete(@PathVariable Integer id) {

System.out.println("Rest Delete: " + id);

return SUCCESS;

}


@RequestMapping(value = "/actonRest", method = RequestMethod.POST)

public String testRest() {

System.out.println("Rest POST");

return SUCCESS;

}

      

@RequestMapping(value = "/actonRest/{id}", method = RequestMethod.GET)

public String testRest(@PathVariable Integer id) {

System.out.println("Rest GET: " + id);

return SUCCESS;

}

    //end


7  方法签名的各种处理

   

       /**

* @RequestParam 来映射请求参数. value 值即请求参数的参数名 required 该参数是否必须. 默认为 true

*               defaultValue 请求参数的默认值

*/

@RequestMapping(value = "/actonRequestParam")

public String testRequestParam(

@RequestParam(value = "name") String un,

@RequestParam(value = "age", required = false, defaultValue = "0") int age) {

System.out.println("RequestParam, name: " + un + ", age: "

+ age);

return SUCCESS;

}

8 header 参数注入方法签名

    @RequestMapping("/actonRequestHeader")

public String testRequestHeader(

@RequestHeader(value = "Accept-Language") String al) {

System.out.println("RequestHeader, Accept-Language: " + al);

return SUCCESS;

}

      

        @RequestMapping("/actonCookieValue")

public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {

System.out.println("CookieValue: sessionId: " + sessionId);

return SUCCESS;

}


9

/**

* Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。

* 如:dept.deptId、dept.address.tel 

*/

@RequestMapping("/actonPojo")

public String testPojo(User user) {

System.out.println("Pojo: " + user);

return SUCCESS;

}

10 servletAPI注入方法签名

   

/**

* 可以使用 Serlvet 原生的 API 作为目标方法的参数 * 

* HttpServletRequest 

* HttpServletResponse 

* HttpSession

* java.security.Principal 

* Locale InputStream 

* OutputStream 

* Reader 

* Writer

*/

@RequestMapping("/actonServletAPI")

public void testServletAPI(HttpServletRequest request,

HttpServletResponse response, Writer out) throws IOException {

System.out.println("ServletAPI, " + request + ", " + response);

out.write("hello springmvc");

// return SUCCESS;

}

 

11   封装modelandview

  

       /**

* 目标方法的返回值可以是 ModelAndView 类型。 

* 其中可以包含视图和模型信息

* SpringMVC 会把 ModelAndView 的 model 中数据放入到 request 域对象中. 

* @return

*/

@RequestMapping("/actonModelAndView")

public ModelAndView testModelAndView(){

String viewName = SUCCESS;

ModelAndView modelAndView = new ModelAndView(viewName);

//添加模型数据到 ModelAndView 中.

modelAndView.addObject("time", new Date());

return modelAndView;

}


12 作用于内存储数据    

/**

* 目标方法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数. 

* @param map

* @return

*/

@RequestMapping("/actonMap")

public String testMap(Map<String, Object> map){

System.out.println(map.getClass().getName()); 

map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));

return SUCCESS;

}

  

/**

* @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使用的是 value 属性值),

* 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是 types 属性值)

  *  类修饰说明:

              

       @SessionAttributes(value={"user"}, types={String.class})

       @Controller

       public class SpringMVCTest{}


* 注意: 该注解只能放在类的上面. 而不能修饰放方法. 

*/

@RequestMapping("/actonSessionAttributes")

public String testSessionAttributes(Map<String, Object> map){

User user = new User("Tom", "123456", "tom@atguigu.com", 15);

map.put("user", user);

map.put("school", "atguigu");

return SUCCESS;

}


13 跳转方法

   

@RequestMapping("/actonRedirect")

public String testRedirect(){

System.out.println("Redirect");

return "redirect:/index.jsp";

}



说明信息: 以上基本就是 在action里方法签名 及 requestMapping的编写规则 。

    




如有疑问 请留言 欢迎提供建议

评论已有 0