读取请求参数、向页面传值、重定向

来源:互联网 发布:淘宝双十一打几折 编辑:程序博客网 时间:2024/06/08 10:24

读取请求参数值

方式一 通过request对象

方式二 通过 @RequestParam注解



方式三 封装成javabean

step1. 写一个java类,要求见图示:


step2.在方法中,添加该javabean作为方法参数。

向页面传值

方式一 绑订数据到request对象(方法中传入request)


方式二 返回ModelAndView对象


方式三 利用ModelMap对象(方法中传入ModelMap)


方式四 绑订数据到session对象(方法中传入session)


重定向

情形一 如果方法的返回值是String


情形二 如果方法的返回值是ModelAndView


代码如下
登录页面:
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%><html>  <head>    <meta charset="utf-8" />    <title>登录</title>  </head>  <body style="font-size:30px; ">    <form action="login9.do" method="post">      帐号:<input type="text" name="adminCode" /><br/>      密码:<input type="password" name="pwd" /><br/>      <input type="submit" value="登录"/>    </form>  </body></html>zhu
主页面:
<%@ page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %><h3>登录成功</h3><p>帐号:${adminCode }</p><p>转发时候的密码:${sessionScope.pwd }</p><p>转发时候的帐号:${ad }</p>
测试代码:
package controller;import java.io.UnsupportedEncodingException;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.view.RedirectView;import util.EncodingTool;/** * 如何写一个处理器: * 1.不用实现Controller接口 * 2.可以在处理器内添加多个方法,每一个方法处理一种类型的请求 * 3.方法名不作要求,返回类型可以为ModelAndView也可以是String * 4.使用@Controller,将该处理器纳入容器进行管理(不用配置bean) * 5.使用@RequestMapping告诉前端控制器请求路径与处理器中方法的对应关系(不用配置HandlerMapping) * http://ip:port/springmvc02/demo/login/toLogin.do */@Controller@RequestMapping("/login")public class HelloController {@RequestMapping("/hello.do")public String hello(){System.out.println("hello()");return "hello";}    @RequestMapping("/toLogin.do")public String toLogin(){System.out.println("toLogin()");return "login";}@RequestMapping("/login1.do")//读取请求参数值的方式一:通过request对象public String login1(HttpServletRequest request) throws UnsupportedEncodingException{System.out.println("login1()");//解决中文乱码问题(抛出异常)request.setCharacterEncoding("utf-8");String adminCode = request.getParameter("adminCode");String pwd = request.getParameter("pwd");System.out.println("adminCode:"+adminCode);System.out.println("pwd:"+pwd);return "index";}@RequestMapping("/login2.do")//读取请求参数值的方式二:在参数前面添加注解@RequestParam(接收请求参数时最好都写上)//参数名与请求参数名不相同时要使用注解,相同时可以不用注解(建议也写上)//密码的name="pwd" 方法声明的名称为password,这时就要使用注解public String login2(@RequestParam("adminCode") String adminCode,@RequestParam("pwd") String password){//解决中文乱码问题adminCode = EncodingTool.encodeStr(adminCode);password = EncodingTool.encodeStr(password);System.out.println("adminCode:"+adminCode);System.out.println("pwd:"+password);return "index";}@RequestMapping("/login3.do")//读取请求参数值的方式三:将请求参数封装成一个javabeanpublic String login3(AdminParam ap){//在AdminParam中处理中文乱码问题System.out.println("login3()");System.out.println("adminCode:"+ap.getAdminCode());System.out.println("pwd:"+ap.getPwd());return "index";}/*** * 向页面传值的方式 */@RequestMapping("/login4.do")//向页面传值的第一种方式:使用requestpublic String login4(AdminParam ap,HttpServletRequest request){System.out.println("login4()");String adminCode = ap.getAdminCode();System.out.println(adminCode);//将数据绑定到请求对象request.setAttribute("adminCode", adminCode);//springmvc默认使用转发(相当于调用getRequestDispacther)return "index";}@RequestMapping("/login5.do")//向页面传值的第二种方式:使用ModelAndViewpublic ModelAndView login5(AdminParam ap){System.out.println("login5()");String adminCode = ap.getAdminCode();System.out.println(adminCode);//构造ModelAndView对象Map<String,Object> map = new HashMap<String,Object>();//此处相当于request.setAttribute("adminCode", adminCode);map.put("adminCode", adminCode);ModelAndView model = new ModelAndView("index",map);return model;}@RequestMapping("/login6.do")//向页面传值的第三种方式:使用ModelMappublic String login6(AdminParam ap,ModelMap mm){System.out.println("login6()");String adminCode = ap.getAdminCode();System.out.println(adminCode);//此处相当于request.setAttribute("adminCode", adminCode)mm.addAttribute("adminCode", adminCode);return "index";}@RequestMapping("/login7.do")//向页面传值的第四种方式:使用Sessionpublic String login7(AdminParam ap,HttpSession session){System.out.println("login()");String adminCode = ap.getAdminCode();session.setAttribute("adminCode", adminCode);return "index";}//从定向@RequestMapping("/login8.do")//若返回值为String:使用return "redirect:xxxxx";public String login8(HttpServletRequest request,HttpSession session){String pwd = request.getParameter("pwd");session.setAttribute("pwd", pwd);System.out.println("login8()");return "redirect:toIndex.do";}//转发到首页@RequestMapping("/toIndex.do")public String toIndex(){System.out.println("toIndex()");return "index";}@RequestMapping("/login9.do")//若返回值为ModelAndView:使用RedirectView rv 返回new ModelAndView(rv)public ModelAndView login9(AdminParam ap,HttpSession session){System.out.println("login9()");RedirectView rv = new RedirectView("toIndex.do");session.setAttribute("ad", ap.getAdminCode());ModelAndView model = new ModelAndView(rv);return model;}}