这里整理一下Spring框架下,如何获取页面参数,以及如何将后台数据传到页面,最后是了解重定向的使用。前期的配置参考文末第一篇博文,这里添加一个登陆的界面,用于测试向页面传递参数,以及登陆完成后结果界面两个(成功界面和失败界面),其他就是添加一个控制器,往里面添加方法进行测试了。

测试页面准备

登陆界面

 1 <%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
 2 <!-- 通过httpServletRequest的方式获取页面参数 -->
 3 <!--  <form action="loginOK.do" method="GET" />-->
 4 <!-- 测试通过注解方式提交 -->
 5 <!-- <form action="loginOK_annotation.do" method="GET"> -->
 6 <!-- 通过javabean的方式 -->
 7 <!--   <form action="loginOK_javabean.do" method="GET"> -->
 8 <!-- 向页面传值测试 -->
 9 <!--  <form action="loginOK_param.do" method="GET">-->
10 <!-- 使用ModelAndView向页面传值 -->
11 <!--  form action="loginOK_ModelAndView.do" method="GET">-->
12 <!-- 使用ModelMap向页面传值 -->
13  <!--  <form action="loginOK_ModelMap.do" method="GET">-->
14 <!-- 使用session向页面传值 -->
15  <!--  <form action="loginOK_session.do" method="GET">-->
16 <!-- 如果方法的返回值是String,重定向写法 -->
17 <!--  form action="loginOK_redirect_str.do" method="GET">-->
18 <!-- 如果方法的返回值是ModelAndView,则需要先创建RedirectView,然后创建ModelAndView -->
19 <!-- <form action="loginOK_redirect_mm.do" method="GET"> -->
20 <input type="text" name="user"/>用户名 <br/>
21 <input type="password" name="pwd" />密码 <br/>
22 <button>登录</button>
23 </form>

登陆成功界面

1 <%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
2 <h1>欢迎登陆</h1><br/>
3 <!-- 得到服务器返回的user参数,采用el表达式获取 -->
4 ${user }

登陆失败界面

1 <%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
2 <h1>登陆失败</h1>

获取页面参数

方式1:通过request来获得,在前端控制器方法里添加HttpServletRequest类型的参数request,通过java反射机制,在调用方法前会检查参数类型,从而将request传入到服务器,可以获取request里面的参数

 1 /**
 2      *登录检查
 3      * @return
 4      */
 5     @RequestMapping("/login.do")
 6     public String login() {
 7         System.out.println("跳转到登陆页面");
 8         return "login";
 9         
10     }
11     /**
12      * 获取页面参数值,进行登陆检查
13      * 登录时如何获取浏览器发送给服务器的参数呢,可以在logincheck里加参数HttpServletRequest
14      * DispatcherServlet前端控制器在调用处理器方法之前,会利用java反射机制分析方法的结构,如下方法
15      * 会通过分析,将request对象传过来
16      * @return
17      */
18     @RequestMapping("/loginOK.do")
19     public String logincheck(HttpServletRequest request) {
20         System.out.println("使用httpServletRequest的方式获取");
21         String name=request.getParameter("user");
22         String pwd=request.getParameter("pwd");
23         System.out.println("name是:"+name);
24         System.out.println("pwd是:"+pwd);
25         //模拟DAO检查数据库
26         loginDAO DAO=new loginDAO();
27         int result=DAO.loginCheck();
28         if(result>0) {
29             return "loginOK";
30         }else {
31             return "loginNG";
32         }            
33     }

测试结果

Spring入门-获取页面参数&向页面传值&重定向

控制台

Spring入门-获取页面参数&向页面传值&重定向

方式2:通过@RequestParam注解的方式适合少量请求参数

 1     /**
 2      * 通过注解方式获取参数,适合少量参数
 3      * @return
 4      */
 5     @RequestMapping("/loginOK_annotation.do")
 6     /*
 7      * JSP表单提交给服务器时,DispatherServlet在方法执行之前扫描里面的参数,发现有和JSP表单中同名的
 8      * user和pwd,这样会调用request.getParameter("user")和request.getParameter("pwd")方法
 9      * 得到参数。如果user和pwd和JSP表单中写的不一样怎么办?可以通过加注解@RequestParam("")来解决
10      * 如下,表单中提交的是pwd对应的参数,在注解里加上pwd即可
11      * 
12      * 建议参数前加上注解@RequestParam
13      */
14     public String login_annotation(String user,@RequestParam("pwd") String password) {
15       System.out.println("通过注解的方式获取参数");
16       System.out.println("用户名是:"+user);
17       System.out.println("密码是:"+password);
18         return "loginOK";
19     }

测试结果

Spring入门-获取页面参数&向页面传值&重定向

控制台

Spring入门-获取页面参数&向页面传值&重定向

方式3:将要请求的参数封装成javabean,适合大量请求参数,这里写一个javabean。

javabean

 1 package Controller;
 2 /**
 3  * 用于封装请求参数值的类,属性名和请求参数名一致,类型要匹配,并提供参数get set方法
 4  * (如果类型不一样,会自动做类型转换,比如将string类型自动转化为int类型)
 5  * 
 6  * @author yangchaolin
 7  *
 8  */
 9 public class userParam {
10     private String user;
11     private String pwd;
12     private int age;
13     //get set方法
14     public int getAge() {
15         return age;
16     }
17     public void setAge(int age) {
18         this.age = age;
19     }
20     public String getUser() {
21         return user;
22     }
23     public void setUser(String user) {
24         this.user = user;
25     }
26     public String getPwd() {
27         return pwd;
28     }
29     public void setPwd(String pwd) {
30         this.pwd = pwd;
31     }    
32 }
View Code

相关文章: