Spring MVC 工作流程(如何获取请求参数,如何向页面传值)

1、Spring MVC 工作流程

(1)浏览器发出一个HTTP工作请求

(2)请求进入DispactherServlet主控制器

(3)主控制器调用HandlerMapping组件根据请求找映射的Controller处理

(4)执行Controller处理方法,将返回结果给ViewResolver组件

(5)ViewResolver组件根据Controller返回结果定位视图jsp,将模型数据传递给jsp

(6)由jsp生成我们的一个响应结果

2、Spring MVC开发过程

3、如何接收请求参数

 

(1)方法参数(参数名字与请求key保持一致就行)

例如:在我们的登录页面表单名称如下:

我们的Controller就可以设计成这样:

    @RequestMapping("handlerLogin.do")
    public ModelAndView handleLogin(String username,String password){
        ModelAndView mav = new ModelAndView();
        System.out.println("username:"+username);
        System.out.println("password:"+password);
        if(username.equals("zlc")&&password.equals("123")) {
            mav.setViewName("success");
        }
        else {
            mav.setViewName("login");
        }
        return mav;
    }

参数名字与请求key保持一致,就可以获取到请求参数的值了。

运行结果如下:

 

(2)方法参数(实体对象),我们可以使用实体对象,实体对象的属性与请求参数的key保持一致就行

例如:我们定义一个User实体对象

 

public class User {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
   
}

 

Controller方法改成这样:

@RequestMapping("handlerLogin.do")
    public ModelAndView handleLogin(User user){
        ModelAndView mav = new ModelAndView();
        System.out.println("username:"+user.getUsername());
        System.out.println("password:"+user.getPassword());
        mav.setViewName("login");
        return mav;
    }

这样同样可以获取请求参数值。

注意:(1)这种应用场景下,User实体类加不加@Component之类的注解都可以,不一定要spring将其扫入容器中

           (2)这种应用场景下,User必须得有setter方法和一个无参数的构造方法

 

(3)方法参数(Request对象),这样就可以使用request.getParameter("")这样获取值了

(4)

 

 4、如何向页面传值

(1)使用ModelAndView对象,将要传往页面的值,放在ModelAndView中,或者放在ModelMap中,例如:

//添加请求映射
    @RequestMapping("/hello.do")
    public String execute(ModelMap m) {
        m.put("msg", "测试");
        return "hello";
    }

(2)利用传统的request,response,session等进行页面传值

 

(3)使用ajax,传递json数据

 

 5、如何使用session

在方法参数中添加HttpSession参数即可

 

posted @ 2018-08-04 09:53  梦里下起了雪  阅读(837)  评论(0编辑  收藏  举报