#页面--->控制器
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页面

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

3.定义控制器DemoController

  1. @Controller
  2. @RequestMapping("/demo")
  3. public class DemoController{
  4. //显示demo.jsp
  5. @RequestMapping("/showDemo.do")
  6. public String showDemo(){
  7. return "demo";
  8. }
  9. }

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

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

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

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

  1. @RequestMapping("/test3.do")
  2. public String test3(
  3. @RequestParam("name") String username,
  4. Integer age){
  5. System.out.println(username+","+age);
  6. return "ok";
  7. }

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

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

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

  1. @RequestMapping("test5.do")
  2. public String test5(HttpServletRequest request,
  3. HttpSession session){
  4. request.setAttribute("name","admin");
  5. session.setAttribute("age","18");
  6. return "ok";
  7. }

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

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

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);
                 //

  1. @RequestMapping("/test8.do)
  2. public String test8(String name,ModelMap map){
  3. if(name.equals("admin")){
  4. map.addAttribute("success","登录成功!");
  5. }
  6. else{
  7. return "redirect:showDemo.do";
  8. }
  9. }

springMVC之一(页面<--->控制器 互相传值,转发和重定向)的更多相关文章

  1. SpringMVC 转发、重定向

    转发.重定向到其它业务方法 @org.springframework.stereotype.Controller @RequestMapping("/userController" ...

  2. 【drp 12】再识转发和重定向:SpringMVC无法跳转页面

    最近再使用SpringMVC进行页面跳转的时候,不知道发生了什么,始终都无法正确跳转.后来问题解决了,发现是对于转发和重定向没有能很好的理解,以此写篇博客,权当做积累了! 声明:本博客的所有代码,均为 ...

  3. SpringMVC:前台jsp页面和后台传值

    前台jsp页面和后台传值的几种方式: 不用SpringMVC自带的标签 前台---->后台,通过表单传递数据(): 1.jsp页面代码如下,  modelattribute 有没有都行 < ...

  4. springMVC中接收请求参数&&数据转发

    ### 1. 接收请求参数 #### 1.1. [不推荐] 通过HttpServletRequest获取请求参数 假设存在: <form action="handle_login.do ...

  5. SpringMVC与请求控制器

    MVC设计模式 视图(View)      -对应组件:JSP或者HTML文件 控制器(controller) -对应组件:Servlet 模型(Model)   -对应组件:JavaBean MVC ...

  6. springmvc 中controller与jsp传值

    参考:springmvc 中controller与jsp传值 springMVC:将controller中数据传递到jsp页面 jsp中,死活拿不到controller中的变量. 花了半天,网上列出各 ...

  7. http页面转发和重定向的区别

    一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request ...

  8. SpringMVC转发和重定向区别!

    在servlet中,转发和重定向是由request和response完成的.两者之间的区别请看我之前的文章.那么在springMVC中是如何完成的呢? /**转发**/ @RequestMapping ...

  9. MVC中控制器向视图传值的四种方式

    MVC中的控制器向视图传值有四种方式分别是 1 ViewDate  2.ViewBag   3.TempDate  4.Model 下面分别介绍四种传值方式 首先先显示出控制器中的代码 using S ...

随机推荐

  1. Spark中repartition和partitionBy的区别

    repartition 和 partitionBy 都是对数据进行重新分区,默认都是使用 HashPartitioner,区别在于partitionBy 只能用于 PairRDD,但是当它们同时都用于 ...

  2. redis集群redis-cloud搭建

    Redis集群中至少应该有三个节点.要保证集群的高可用,需要每个节点有一个备份机.Redis集群至少需要6台服务器. 搭建伪分布式.可以使用一台虚拟机运行6个redis实例.需要修改redis的端口号 ...

  3. Apache 强制Http跳转Https

    找到网站根目录的.htaccess文件,添加如下代码 RewriteEngine On RewriteCond %{SERVER_PORT} RewriteRule ^(.*)$ https://%{ ...

  4. [LeetCode] 405. Convert a Number to Hexadecimal_Easy tag: Bit Manipulation

    Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s compl ...

  5. ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts

    ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts ERROR [main] m ...

  6. caffe slover文件详解

    solver算是caffe的核心的核心,它协调着整个模型的运作.caffe程序运行必带的一个参数就是solver配置文件.运行代码一般为 # caffe train --solver=*_slover ...

  7. java详解内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...

  8. Android -- 使用WindowManager实现悬浮框效果

    1,原文在这里http://blog.csdn.net/qq_17250009/article/details/52908791,我只是把里面的关键步骤给注释了一下,首先来看一下我们的效果,如图(电脑 ...

  9. Unity shader学习之Forward Rendering Path

    Forward rendering path shader如下: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObje ...

  10. [转]js刷新父窗体

    浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法   <script language=JavaScript>       parent.location.reload(); ...