springMVC中参数传值,作用域传值

来源:互联网 发布:找晋中网络教研平台 编辑:程序博客网 时间:2024/05/22 09:39

简单的记录一下mvc中参数传值,和作用域传值

1.简单数据类型传值
传递的参数与实体类的name值一致
直接使用实体类对象获得值

public class User {    private int id;    private String name ;    private String pwd;    private int age;    }
<form action="loginOne.do" method="post">     <input type="text" name="name" >        <input type="password" name="pwd" >         <input type="text" name="age" >     <input type="submit" value="Login" >       </form>

如上所示我们可以用一个实体来获取参数值,这里是注解开发,记住在类名上加入注解@Controller

 @RequestMapping("login.do")        public String  login(User user){                int age = user.getAge();                String name = user.getName();                String pwd = user.getPwd();                System.out.println(user);            return null;     }

注意的是在传递过程中有可能出现乱码问题,要设置字符集编码,我呢配置了一个过滤器,一劳永逸

<!-- 解决中文乱码问题   这解决了post方式提交乱码问题-->    <filter>        <filter-name>filter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>encoding</param-name>            <param-value>utf-8</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>filter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

2.传递的参数与实体属性名不一致的时候使用的是@RequestParam注解
有三个属性value:前台页面name属性的值
required:是否必须有参数,默认为true
defaultValue:默认的值是什么
代码:

@RequestMapping("loginOne.do")    public String loginOne(        @RequestParam(value="tname",required=true)  String name,        @RequestParam(value="tpwd",defaultValue="6666",required=true) String pwd,        @RequestParam(value="tage",required=true) int age        ){    System.out.println(name+"\t"+pwd+"\t"+age);            return "login";}

前台页面是、:

<form action="loginOne.do" method="post">     <input type="text" name="tname" >       <input type="password" name="tpwd" >        <input type="text" name="tage" >      <input type="submit" value="Login" >      </form>

3.数组传值
实体类有一个数组属性例如:

public class User {    private int id;    private String name ;    private String pwd;    private int age;    private String[] books;    }

使用get方法获取值

@RequestMapping("loginOne.do")    public String loginOne(User user){    System.out.println(user.getBooks());                return "login";    }

jsp页面

<form action="loginOne.do" method="post">     <input type="text" name="name" >        <input type="password" name="pwd" >         <input type="text" name="age" >     <input type="text" name="adress.name" >     <input type="checkbox" name="books" value="C#">    C#     <input type="checkbox" name="books" value="PS">    PS     <input type="checkbox" name="books" value="JAVA">JAVA     <input type="checkbox" name="books" value="PHP">PHP     <input type="submit" value="Login" >       </form>

4.对象传值
一个类中包含另一个类的属性,我们可以通过方法调用来实现
jsp页面还是上面的jsp,可以看到有一个 name-“adress.name”这样起名字可以直接找到实体的get方法来获取值,在我们开发的时候,起名字是很重要的,名字起对了,我们可以省很多事

    @RequestMapping("loginOne.do")    public String loginOne(User user){        System.out.println(user.getAdress());                return "login";    }

好的,下面我们说一下作用域传值
1.使用Servlet 四大作用域PageContext,ServletRequest,HttpSession,ServletContext;都可以使用我只示范一个,和我们之前使用的servlet差不多,都是用request获取值,比较返回

/**     * 使用request作用域传值     * @param req     * @param resp     * @return     */    @RequestMapping("login")    public String req(HttpServletRequest req,HttpServletResponse resp){        String name = req.getParameter("name");        String pwd = req.getParameter("pwd");        System.out.println(name);        System.out.println(pwd);        if("admin".equals(name)){            req.setAttribute("name", name);            return "listAdmin";        }else{            return "false";        }    }

2.使用model对象

/**     * 利用Model对象作用域传值     * 使用model.addAttribute("name",name);     * @param user     * @param model     * @return     */    @RequestMapping("model")    public String toModel(User user,Model model){            String name = user.getName();            String pwd = user.getPwd();        if("admin".equals(name)){            model.addAttribute("name",name);            return "listAdmin";        }else{            return "false";        }    } 

3.使用ModelAndView对象

/**     * 使用ModelAndView对象传值     * @param user     * @return     */    @RequestMapping("mandv")    public ModelAndView mlv(User user){        ModelAndView mv=new ModelAndView();        String name = user.getName();        String pwd = user.getPwd();        if("admin".equals(name)){            mv.setViewName("listAdmin");            mv.addObject("name",name);        }else{            mv.setViewName("false");        }        return mv;    }

4.使用Map传值

/**     * 使用Map传值     * @param user     * @return     */    @RequestMapping("Map")    public String toMap(User user,Map map,HttpServletRequest req){        String name = user.getName();        map.put("name", name);        if(name!=null){            req.setAttribute("map", map);            return "listAdmin" ;        }else{            return "false" ;        }    }
原创粉丝点击