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

简单的记录一下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" ;
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值