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";
                                          }
                       }

原文地址:https://www.cnblogs.com/shijinglu2018/p/9576492.html

时间: 2024-10-06 20:41:17

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

SpringMVC 转发、重定向

转发.重定向到其它业务方法 @org.springframework.stereotype.Controller @RequestMapping("/userController") public class UserController{ @RequestMapping("/handler1") public String handler1() throws IOException { //转发给handler2处理 return "forward:ha

请求转发和重定向的区别以及他们的实现方式?

1.请求转发是什么? 答:请求转发是RequestDispatcher.forword方法:作用是:在服务器端内部将请求转发给另一个资源,浏览器只知道发出请求并得到响应结果,但不知道在服务器程序内部发生了转发行为. 举例:别名为“浏览器”的人写信找张三100块,张三只有50块,于是张三找李四借了50块,然后将钱转给“浏览器”.可知,“浏览器”只发出一封信和收到一次回复,他只知道钱是张三借给他的,并不知道有一部分是李四的. 2.重定向是什么? 答:重定向是HttpServletResponse.s

请求转发,重定向

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%> //page:指定的属性: //language:jsp页面使用的脚本语言: //import:导入类: //pageEncoding:jsp文件自身编码: //contentType:浏览器解析jsp的编码:   <!DOCTYPE html>

SpringMVC中@Control控制器返回的是Jsp页面还是控制器请求的总结

1.返回到JSP页面: return "main" --跳转到 WEB-INF/main.jsp 页面. return "redirect:/main.jsp" --重定向到main.jsp页面,redirect无法访问WEB-INF下的资源文件,因此必须加上.jsp后缀. 2.转发控制器请求: return "forward:/main" --转到 为main的请求上. return "redirect:/main" --重

SpringMVC笔记(六)SpringMVC的转发和重定向

一.转发和重定向 一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理 如果返回的字符串中带 forward: 或 redirect: 前缀 时,SpringMVC 会对他们进行特殊处理: 将 forward: 和 redirect: 当成指示符,其后的字符串作为 URL 来处理 –redirect:/success.jsp:会完成一个到 success.jsp 的重定向的操作        –forward:/success.jsp:会完成一个到 success.jsp 的转发操作

iOS 页面之间的传值总结

iOS 页面之间的传值总结   1.属性传值 (1): 属性传值第一步需要用到什么类型就定义什么样的属性 (2): 从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页面推到下一个页面. 如:MainViewController与SecondViewController两个视图控制器,点击MainViewController中的按钮将跳转到SecondViewController视图,同时想要传递一个值过去.这时可以利用属性传值. 首先SecondVi

SpringMVC转发和重定向区别!

在servlet中,转发和重定向是由request和response完成的.两者之间的区别请看我之前的文章.那么在springMVC中是如何完成的呢? /**转发**/ @RequestMapping("/login.do") public String login(HttpServletRequest request,HttpServletResponse response){ request.setAttribute("message", "hello

SpringMVC(四):转发、重定向和Flash属性

1.转发和重定向的区别 一句话概括:重定向是客户端行为,转发是服务器行为. 1.请求次数: 重定向:重定向行为是做了两次请求,及产生了两个request对象,重定向会导致request对象信息丢失. 请求转发:转发做了一次请求, 浏览器的地址栏一直是第一次请求的地址.转发是服务器内部request/response控制权的移交. 2.请求资源地址: 重定向:web组件可以将请求重定向到任意一个url,而不仅仅是同一个应用. 重定向的源组件与目标组件不共用同一个HttpServletRequest

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

一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jspresponse.sendRedirect("new.jsp");//重定向到new.jsp 在jsp页面中你也会看到通过下面的方式实现转发:<jsp:forward page="apage.jsp" /> 当