SpringMVCにおけるパラメータ伝達、役割ドメイン伝達

14419 ワード

mvcにおけるパラメータ伝達値と役割ドメイン伝達値を簡単に記録します
1.単純データ型の値伝達のパラメータは、エンティティークラスのname値と一致し、エンティティークラスオブジェクトを直接使用して値を取得する
public class User {
    private int id;
    private String name ;
    private String pwd;
    private int age;
    }
"loginOne.do" method="post"> type="text" name="name" > type="password" name="pwd" > type="text" name="age" > type="submit" value="Login" >

上記のように、パラメータ値を取得するためにエンティティを使用できます.ここでは、クラス名に注釈@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;
     }

注意するのは伝達の過程の中で文字化けの問題が発生する可能性があるので、文字セットの符号化を設定して、私は1つのフィルタを配置して、一労永逸

    <filter>
        <filter-name>filterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>utf-8param-value>
        init-param>
    filter>

    <filter-mapping>
        <filter-name>filterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

2.渡されるパラメータがエンティティ属性名と一致しない場合に使用されるのは@RequestParam注記3つの属性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";
}

フロントページは、:
"loginOne.do" method="post"> type="text" name="tname" > type="password" name="tpwd" > type="text" name="tage" > type="submit" value="Login" >

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ページ
"loginOne.do" method="post"> type="text" name="name" > type="password" name="pwd" > type="text" name="age" > type="text" name="adress.name" > type="checkbox" name="books" value="C#"> C# type="checkbox" name="books" value="PS"> PS type="checkbox" name="books" value="JAVA">JAVA type="checkbox" name="books" value="PHP">PHP type="submit" value="Login" >

4.オブジェクトの値を渡す1つのクラスには別のクラスの属性が含まれています.メソッド呼び出しでjspページか上のjspかを実現できます.name-adress.nameという名前がエンティティのgetメソッドを直接見つけることで値を得ることができます.私たちが開発したとき、名前をつけることが重要です.名前が正しいので、多くのことを省くことができます.
    @RequestMapping("loginOne.do")
    public String loginOne(User user){

        System.out.println(user.getAdress());
                return "login";

    }

はい、次に、役割ドメインの値を説明します.サーブレットの4つの役割ドメインPageContext、サーブレットRequest、HttpSession、サーブレットContextを使用します.いずれも私が1つだけ例示することができて、私達の前に使う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" ;
        }
    }