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

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. root_objectlist, root_object, container_objectlist, container_object 之间的关系。

  2. [redis]redis常用

    https://redis.io/topics/quickstart $ redis-cli ping PONG redis-server is the Redis Server itself. re ...

  3. try finally 处理方式

    这样的处理方式:主要解决当资源建立连接后,出现问题,需要关闭资源.                           异常无法直接catch处理,但是资源需要关闭

  4. Linux系统文件目录

    下面的示例是我个人的亚马逊云服务器,查看了几个关键目录的文件信息. 可以注册一个账号,免费试用一年,自己用来玩,还是很不错的 .https://aws.amazon.com/cn/ec2/ 根目录下面 ...

  5. Hybrid设计--核心交互

    普通网页中跳转使用a标签,这里我们要对跳转进行更多的干预,所以将全站的跳转收口到框架层,用forward去实现.拒绝用a和window.location.如果我想对所有跳转做一个处理,开动画或者对跳转 ...

  6. MVC爬取网页指定内容到数据库

    控制器 //获取并插入 //XPath获取 public JsonResult Add(string url) { HtmlWeb web = new HtmlWeb(); HtmlDocument ...

  7. WebActivatorEx—动态注册httpmodle

    源代码:https://github.com/davidebbo/WebActivator/tree/master/WebActivator unity使用演示 WebActivator类库提供了3种 ...

  8. (已解决)Xcode 运行cocos2dx弹出内部错误对话框(Internal Error)

    cocos2dx未捕获的异常升高.选择“继续”继续运行在一个不一致的状态.选择“崩溃”停止应用和崩溃报告一个错误文件. 莫名其妙,代码没有报错,运行时却弹出(内部错误)对话框出来: 再看看崩溃的底层代 ...

  9. /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version!

    /usr/lib/python2.7/site-packages/requests/ __init__.py:91: RequestsDependencyWarning: urllib3(1.22)或 ...

  10. layui透明弹框

    效果: layui.use('layer', function () { var layer = layui.layer; var str = '<div>'; str += '<d ...