Spring mvc新手入门(4)-前后台url映射详细步骤

2014-11-27 17:27:18     32 人阅读    

Spring mvc提供了很多的注解可以很方便的在后台取到前台页面的参数值,功能集齐强大

1、普通的开发方式,不通过注解,自己从url中解析得到值
     

     方法:
         //列表
 @RequestMapping(params = "method=hello")
 public ModelAndView hello(HttpServletRequest request) {
  Map<String,Object> hashMap = RequestUtil.getMap(request);
  HelloWorld hello = new HelloWorld(hashMap);
  return new ModelAndView("jsonView", hello.hello());
 }
     


       通过 RequestUtil.getMap(request); 把传递过来的所有参数全部处理成一个map,在后面直接通过map.get 获得对应的值即可,简单方便.

      RequestUtil 类的代码如下:

        

 package com.itmmd.util;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;

public class RequestUtil
{
  public static Map<String, Object> getMap(HttpServletRequest req)
  {
    Map<String, Object> mapReq = new HashMap<String, Object>();
    Enumeration<?> enu = req.getParameterNames();
    while (enu.hasMoreElements()) {
      String paramName = (String)enu.nextElement();
      String[] values = req.getParameterValues(paramName);
      String value = "";
      for (int i = 0; i < values.length; i++)
      {
        value = value + (i == 0 ? "" : "~") + values[i];
      }
      mapReq.put(paramName, value);
    }
    return mapReq;
  }
}

(如果传递的参数太多,可以采用这种方式,再多的参数对于我们来说得到的都是一个map)


2、通过spring注解 @RequestParam的方式进行参数传递


       @RequestParam ,该标注需要在方法的参数中当做前缀使用,使用后,spring mvc会自动从request中取得改值,并把该值赋值给 对应的参数,相当于 request.getParameter() ,例如本例的 userid
      代码如下:
      //把返回结果解析成json串返回到前台

 @RequestMapping(params = "method=passValue")
 public ModelAndView passValue(@RequestParam("userid") String userid,HttpServletRequest request,PrintWriter printWriter) {
  System.out.println("通过注解在参数中取值 "+userid);
  System.out.println("通过自己写的函数从reqeust取值 "+RequestUtil.getMap(request).get("userid"));
  HelloWorld hello = new HelloWorld(RequestUtil.getMap(request));
  return new ModelAndView("jsonView", hello.hello());
 }

       


     通过 url http://localhost:8080/springmvc/hello.do?method=passValue&userid=111 访问后
      本方法输出

        通过注解在参数中取值 111
          通过自己写的函数从reqeust取值 111

   两种方法取得的结果一致

3、通过 @RequestHeader 注解获取请求的header信息
    
        RequestHeader 可以获得的基本信息如下
 

//返回给前台一个字符串
 @RequestMapping(params = "method=getJson1")
 public void getJson(@RequestParam("userid") String userid,@RequestHeader("Accept-Encoding") String encoding,HttpServletRequest request,PrintWriter printWriter) {
  System.out.println("通过注解在参数中取值 "+userid);
  System.out.println("通过@RequestHeader获得的encoding "+encoding);
        printWriter.write("{key,1}"); 
        printWriter.flush(); 
        printWriter.close(); 
 }


           

     输出结果  通过注解在参数中取值 111
     通过@RequestHeader获得的encoding gzip,deflate,sdch
 


原文地址:http://www.itmmd.com/201411/225.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

Spring mvc新手入门(5)-pring mvc 返回结果页面详解-跳转jsp页面和json串详解   上一篇
下一篇  Spring mvc新手入门(3)-前后台url映射详细步骤

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!