博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC(三)控制器获取页面请求参数以及将控制器数据传递给页面和实现重定向的方式...
阅读量:4981 次
发布时间:2019-06-12

本文共 8312 字,大约阅读时间需要 27 分钟。

首先做好环境配置

在mvc.xml里进行配置

  1.开启组件扫描

  2.开启基于mvc的标注

  3.配置试图处理器

1 
2
17
18
19
20
21
22
23
24
25
26
mvc.xml

在web.xml配置

  1.配置请求参数如入口

  2.配置初始化参数

1 
2
3
SpringMVC-03
4
5
index.html
6
index.htm
7
index.jsp
8
default.html
9
default.htm
10
default.jsp
11
12
13
14
SpringMVC
15
org.springframework.web.servlet.DispatcherServlet
16
17
18
contextConfigLocation
19
classpath:mvc.xml
20
21
1
22
23
24
SpringMVC
25
*.do
26
27
web.xml

控制器获取页面请求参数方式如下:

  1.使用HttpServletRequest获取直接定义 HttpServletRequest参数

  2.直接把请求参数的名字定义成控制器的参数名
  3.当页面参数和控制器参数不一致可以使用 @RequestParam("页面参数名"),加在控制器方法对应的参数上

1 package com.xcz.controller; 2  3 import javax.servlet.http.HttpServletRequest; 4  5 import org.springframework.stereotype.Controller; 6 import org.springframework.ui.Model; 7 import org.springframework.ui.ModelMap; 8 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestParam;10 import org.springframework.web.servlet.ModelAndView;11 12 @Controller13 public class LoginController {14     // 获取参数方式一15     @RequestMapping("/login.do")16     public String login(HttpServletRequest request) {17         String username = request.getParameter("username");18         String password = request.getParameter("password");19         System.out.println(username + ":" + password);20         return "login";21     }22 23     // 获取参数方式二24     @RequestMapping("/login2.do")25     public String login2(String username, String password) {26         System.out.println(username + ":" + password);27         return "login";28     }29 30     // 获取参数方式三31     @RequestMapping("/login3.do")32     public String login3(@RequestParam("username") String uname, @RequestParam("password") String pwd) {33         System.out.println(uname + ":" + pwd);34         return "login";35     }36 }
LoginController
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2     pageEncoding="utf-8"%> 3  4  5  6 
7 Insert title here 8 9 10
11 账号:
12 密码:
13
14
15 16
login.lsp

控制器中数据传递给页面的方式如下:

  1.使用 request session application 这些域对象传输

  2.使用ModelAndView来传输数据
  //mav.getModel().put("username", username);
  mav.getModelMap().addAttribute("username", username);
  3.使用 Model 来传输数据
  4.使用ModelMap 进行传参

1 package com.xcz.controller; 2  3 import javax.servlet.http.HttpServletRequest; 4  5 import org.springframework.stereotype.Controller; 6 import org.springframework.ui.Model; 7 import org.springframework.ui.ModelMap; 8 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestParam;10 import org.springframework.web.servlet.ModelAndView;11 12 @Controller13 public class LoginController {14     // 將控制器中的数据传给页面方式一15     @RequestMapping("/login4.do")16     public String login4(@RequestParam("username") String uname, @RequestParam("password") String pwd,17             HttpServletRequest request) {18         System.out.println(uname + ":" + pwd);19         request.setAttribute("username", uname);20         return "main";21     }22 23     // 將控制器中的数据传给页面方式二24     @RequestMapping("/login5.do")25     public ModelAndView login5(@RequestParam("username") String uname, @RequestParam("password") String pwd) {26         System.out.println(uname + ":" + pwd);27         ModelAndView mav = new ModelAndView();28         mav.setViewName("main");29         mav.getModel().put("username", uname);30         return mav;31     }32 33     // 將控制器中的数据传给页面方式三34     @RequestMapping("/login6.do")35     public ModelAndView login6(@RequestParam("username") String uname, @RequestParam("password") String pwd,36             ModelAndView mav) {37         System.out.println(uname + ":" + pwd);38         mav.setViewName("main");39         mav.getModelMap().addAttribute("username", uname);40         // mav.getModelMap().put("username", uname);41         return mav;42     }43 44     // 將控制器中的数据传给页面方式四45     @RequestMapping("/login7.do")46     public String login7(@RequestParam("username") String uname, @RequestParam("password") String pwd, Model model) {47         System.out.println(uname + ":" + pwd);48         model.addAttribute("username", uname);49         return "main";50     }51     52     //將控制器中的数据传给页面方式五53     @RequestMapping("/login8.do")54     public String login8(@RequestParam("username") String uname, @RequestParam("password") String pwd,ModelMap map) {55         System.out.println(uname + ":" + pwd);56         map.put("username", uname);57         return "main";58     }59 }
LoginController
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2     pageEncoding="utf-8"%> 3  4  5  6 
7 Insert title here 8 9 10
11 账号:
12 密码:
13
14
15 16
login.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2     pageEncoding="utf-8"%> 3  4  5  6 
7 Insert title here 8 9 10

欢迎${username }来访

11 12
main.jsp

 实现重定向方式如下:

  1.当控制器方法返回String时return"redirect:路径";

  默认是转发,转发的结果直接交给ViewResolver可以通过加forward:来继续处理,而不交给ViewResolver

  2.当控制器方法 返回 ModelAndView 时  使用RedirectView 完成重定向 (/代表项目名前面的部分 不包含项目名)

1 package com.xcz.controller; 2  3 import javax.servlet.http.HttpServletRequest; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RequestParam; 7 import org.springframework.web.servlet.ModelAndView; 8 import org.springframework.web.servlet.view.RedirectView; 9 10 @Controller11 public class LoginController {12     private static final String URL = "toMain.do";13     @RequestMapping("/toLogin.do")14     public String toLogin() {15         return "login";16     }17     @RequestMapping("/toMain.do")18     public String toMain() {19         return "main";20     }21     // 实现重定向方式一22     @RequestMapping("/login.do")23     public String login(@RequestParam("username") String uname,@RequestParam("password") String pwd,HttpServletRequest request) {24         System.out.println(uname + ":" + pwd);25         request.setAttribute("usernameq", uname);26         request.setAttribute("password", pwd);27         //return "redirect:/toMain.do";  //使用redirect:  直接重定向,导致数据丢失,所以页面无法获取28         return "forward:/toMain.do";  //使用forward:  先转发后跳转到main.jsp,不会导致数据丢失,所以页面可以获取控制器数据29     }30     // 实现重定向方式二31     @RequestMapping("/login1.do")32     public ModelAndView login1(@RequestParam("username") String uname,@RequestParam("password") String pwd,HttpServletRequest request) {33         System.out.println(uname + ":" + pwd);  //打印后台数据34         String path = request.getServletContext().getContextPath();  //获取项目名前面的路径35         ModelAndView mView = new ModelAndView();36         RedirectView rView = new RedirectView(path + "/" + URL);  //将路径和项目名进行拼接起来37         mView.setView(rView);38         mView.getModelMap().addAttribute("username", uname);  //将控制器的数据传给页面39         return mView;40     }41 }
LoginController
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2     pageEncoding="utf-8"%> 3  4  5  6 
7 Insert title here 8 9 10
11 账号:
12 密码:
13
14
15 16
login.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2     pageEncoding="utf-8"%> 3  4  5  6 
7 Insert title here 8 9 10

欢迎${param.username }来访

11 12
main.jsp

 

转载于:https://www.cnblogs.com/resultset/p/9941282.html

你可能感兴趣的文章
Fireworks基本使用
查看>>
Java基础常见英语词汇
查看>>
nginx启动、关闭命令、重启nginx报错open() "/var/run/nginx/nginx.pid" failed
查看>>
UINavigationController的视图层理关系
查看>>
组件:slot插槽
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
php PDO (转载)
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
highcharts 图表实例
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
宏定义
查看>>
笔记:git基本操作
查看>>
生成php所需要的APNS Service pem证书的步骤
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
optionMenu-普通菜单使用
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>