zoukankan      html  css  js  c++  java
  • springMVC之一(页面<--->控制器 互相传值,转发和重定向)

    #页面--->控制器
    1.request:不建议使用
    2.使用属性传值(建议使用)@RequestParam("name") String username
    3.使用Bean对象传值(适合数据量大)


    #控制--->页面request,session(cookie),application
    1.request,session传递数据到页面
    2.ModelAndView:Model--->ModelMap--->Map
    3.ModelMap(推荐使用)

    #重定向和转发
    1.重定向的原理:response.sendRedirect("showDemo.do")
    2.转发的原理:
               request.getRequestDispatcher("/WEB-INF/web/ok.jsp")
    3.当视图解析器解析到forward或redirect两个前缀,执行以上代码,否则实现字符串的拼接



    开发步骤:

    1.新建maven工程
    1)添加web.xml
    2)添加tomcat运行环境
    3)添加依赖jar  spring-webmvc
    4)添加spring-mvc.xml
    5)web.xml中配置前端控制器
    6)spring-mvc.xml配置视图解析器

    2.定义demo.jsp页面

    <form action="" method="get">
         姓名:<input type="text" name="name"/><br>
         年龄:<input type="text" name="age"/><br>
         <input type="submit" value="提交"/>
    </form>



    3.定义控制器DemoController

    @Controller
    @RequestMapping("/demo")
    public class DemoController{
          //显示demo.jsp
         @RequestMapping("/showDemo.do")
           public String showDemo(){
                 return "demo";
              }
    }



    4.页面--->控制器传值

            //2.使用属性传值
            //特点: 1)参数列表的名称和表单的name属性值相同
                     2)可以实现自动类型转换,但是可能会有异常
                     3)表单数据量小
          

    @RequestMapping("/test2.do")
          public String test2(String name,Integer age){
                       System.out.println(name+","+age);
                            return "ok";
         }



            //3.属性传值(表单name属性值和参数列表变量名不同)
            //使用@RequestParam注解辅助完成变量的赋值
          //   @RequestParam("name")中的name在页面上不存在
         

       @RequestMapping("/test3.do")               
              public String test3(
                     @RequestParam("name") String username,
                           Integer age){
                           System.out.println(username+","+age);
                                 return "ok";
              }



             //4.Bean对象传值
               //特点:把表单name属性值封装成类类型;
               //       成员变量名称必须表单的name属性值相同
               //       适合数据量大的参数传递值   
               

    @RequestMapping("/test4.do")
               public String test4(User user){
                    System.out.println(user.getName()+","+user.getAge());
                             return "ok";   
                  }


    5.控制器--->页面传值
               //5.使用request,session从控制器向页面传值
               //
         

       @RequestMapping("test5.do")
                 public String test5(HttpServletRequest request,
                                               HttpSession session){
                     request.setAttribute("name","admin");
                     session.setAttribute("age","18");
                     return "ok";
                     } 



            //6.ModelAndView传值
              //特点:框架Map属性获取到,设置request对象中
             //@RequestMapping("/test6.do")
            

       public ModelAndView test6(){
                       Map<String,Object> map=new HashMap<String,Object>();
                            map.put("address","中鼎7层");
                            ModelAndView mv=new ModelAndView("ok",map);
                            return mv;
                   }


                   
    6.请求转发和重定向
               //需求:控制器接收到name,如果name=admin,表示登录成功
               //    响应页面ok.jsp(转发)
               //    如果name!=admin,表示登录失败。
               //    响应页面demo.jsp(重定向)
               //    8.1重定向的原理:
               //    response.sendRedirect("showDemo.do");
                  //      转发的原理:
                 //       request.getRequestDispatcher("/WEB-INF/web/ok.jsp").forword    (resquest,response);
                     //         
                   

      @RequestMapping("/test8.do)
                          public String test8(String name,ModelMap map){
                               if(name.equals("admin")){
                                          map.addAttribute("success","登录成功!");  
                                        }
                                else{
                                     return "redirect:showDemo.do";  
                                              }        
                           }



    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    应用程序跳转
    百度地图集成
    导航 -MapKit
    导航
    定位
    ApexSql Log使用体会
    Oracle学习 第16天
    上来冒个泡吧
    Oracle学习 实战心得总结
    好久没上来冒个泡了,整整一个半月
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/9576492.html
Copyright © 2011-2022 走看看