Spring MVC的简单用法

一、Multiaction Controller

package cn.framelife.mvc.control;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import cn.framelife.mvc.entity.User;

@Controller
@RequestMapping("/user")
public class UserControl {

    /**
     * 这个方法接收/user/create.abc请求
     */
    @RequestMapping("create")
    public ModelAndView createUser(User user){
        System.out.println("createUser");

        ModelAndView view = new ModelAndView();
        view.setViewName("/success");

        return view;
    }

    /**
     * 这个方法接收/user/update.abc请求
     */
    @RequestMapping("update")
    public ModelAndView update(){
        System.out.println("updateUser");

        ModelAndView view = new ModelAndView();
        view.setViewName("/success");

        return view;
    }
}

二、 ModelAndView

Controller处理方法的返回值为ModelAndView,既包含视图信息,也包含模型数据信息。

1、ModelAndView中的方法
可以使用以下方法添加模型数据:

    addObject(Object modelObject)
    addObject(String modelName, Object modelObject)
    addAllObjects(Map modelMap)

可以通过以下方法设置视图:

    setViewName(String viewName)
    setView(View view)

2、重定向:
这里的重定向只能重定向到其它的处理方法,不能重定向到页面。如果想重定向到页面,那么在另外的的处理方法中跳转就是。

    @RequestMapping(value="/add",method = RequestMethod.GET)
    public ModelAndView initForm(){
        User user = new User();
        return new ModelAndView("/add").addObject(user);
    }

    @RequestMapping("create")
    public ModelAndView createUser(){
        ModelAndView view = new ModelAndView();

        //这里会重定向到add.abc的处理方法中,再由add.abc的处理方法作页面跳转
        RedirectView redirectView = new RedirectView("add.abc");
        view.setView(redirectView);

        return view;
    }

三、Controler处理方法获取值

1、获取页面值
页面Form表单:

<form action="user/create.abc" method="post">
        用户名:<input type="text" name="username"><br/>
        密 码:<input type="text" name="password"><br/>
        其它:<input type="text" name="other"><br/>
        <input type="submit">
</form>

A、 绑定到同名参数中

    /*
    * @RequestParam可以用来提取名为“username”的String类型的参数,并将之作为输入参数传入
    */
    @RequestMapping("create")
    public ModelAndView createUser(@RequestParam("username") String username,String password,String other){
        System.out.println(username+"-"+password+"-"+other);
        ModelAndView view = new ModelAndView();
        view.setViewName("/success");

        return view;
}

B、 绑定到实体类模型数据中
User实体类:

public class User implements java.io.Serializable {
    private Integer id;
    private String username;
    private String password;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    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("create")
    public ModelAndView createUser(User user){
        System.out.println(user.getUsername()+"-"+user.getPassword());
        ModelAndView view = new ModelAndView();
        view.setViewName("/success");

        return view;
    }

C、既有模型又有同名参数

    /**
     * 页面表单值传输时,如果User类中有同名的属性,那就绑定到User对象中
     * 如果User类中没有的属性,可以使用同名参数接收
     * 如果User类中也有,而我们又有同名参数,两个都可以接收
     */
    @RequestMapping("create")
    public ModelAndView createUser(User user,String username,String other){
        System.out.println(user.getUsername()+"-"+user.getPassword()+"-"+username+"-"+other);
        ModelAndView view = new ModelAndView();
        view.setViewName("/success");

        return view;
    }

2、获取Servlet API
Controller中的处理方法:

    @RequestMapping("create")
    public ModelAndView createUser(HttpServletRequest request,HttpServletResponse response,HttpSession session){
        String username = request.getParameter("username");
        System.out.println(username);

        request.setAttribute("requestName", "aaaaaaaaaaaa");
        session.setAttribute("sessionName", "bbbbbbbbbbbb");

        Cookie cookie = new Cookie("cookieName", "ccccccccccc");
        response.addCookie(cookie);

        ModelAndView view = new ModelAndView();
        view.setViewName("/success");

        return view;
    }

Success.jsp页面显示:

<body>
    ${requestName}<br/>
    ${sessionName}<br/>
    ${cookie.cookieName.value}<br/>
</body>
时间: 2024-11-08 19:23:27

Spring MVC的简单用法的相关文章

一个简单的Spring MVC的例子

一.Spring MVC的优点 1.Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多.呵呵,当然这不是决定因素. 2.Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3.Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制. 二.简单的例子 1.配置web.xml 指除了Control层外

2015 最简单的 Spring MVC 入门教程

2015 最简单的 Spring MVC 入门教程 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Simplest Spring MVC Hello World Example / Tutor

就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers(转)

  接我前面一篇文章关于RestAssured测试Restful web service的, RestAssured还有一个功能, 使用RestAssuredMockMvc 单元测试你的Spring MVC Controllers, 这个MockMvc 是建立在Spring MockMvc基础上的, 其目的是让我们用起来更便捷.   Getting Ready <dependency> <groupId>com.jayway.restassured</groupId>

Spring MVC简单问题 求解答!!!!!

问题描述 Spring MVC简单问题 求解答!!!!! 参考下列代码: 传值问题,form内可以传.如何传值?通过a标签!对A标签需要如何修改? <form action="in.do"> <input type="text" id="a" name="name"/> <input type="submit" value="OK"> </for

[Spring MVC] -简单表单提交实例_java

Spring MVC自带的表单标签比较简单,很多时候需要借助EL和JSTL来完成. 下面是一个比较简单的表单提交页面功能:  1.User model package com.my.controller.bean; import java.util.Date; import java.util.List; import javax.validation.constraints.Future; import javax.validation.constraints.Max; import java

Spring MVC中Ajax实现二级联动的简单实例_jquery

今天写项目遇到了二级联动,期间遇到点问题,写个博客记录一下. 后台Controller: @RequestMapping("/faultType") @ResponseBody public Map<String,Object> faultType(int id,HttpServletRequest request)throws IOException { String ReturnMessage = ""; //获取所有子类故障类型 List<F

【spring MVC学习二】springMVC简单使用

springmvc都是通过其中央控制器DispatcherServlet来进行转发的,所以在web.xml文件里面需要增加相应的配置 1 2 3 4 5 6 7 8 9 10 11 12 13 <servlet>         <servlet-name>springServlet</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet&

Spring mvc中@RequestMapping 6个基本用法小结

Spring mvc中@RequestMapping 6个基本用法小结   小结下spring mvc中的@RequestMapping的用法.  1)最基本的,方法级别上应用,例如:     Java代码   @RequestMapping(value="/departments")   public String simplePattern(){        System.out.println("simplePattern method was called"

Spring MVC中的MultiActionController用法详解

Spring MVC 中 Controller 的层次实在是多,有些眼花缭乱了 .在单个的基础上,再新加两三个叫做丰富,再多就未必是好事, 反而会令人缩手新闻片脚,无从定夺.多数 Controller 都是只完 成一个任务,不过也有一个像 Struts 的 DispatchAction 的那样 的 Conntroller, org.springframework.web.servlet.mvc.multiaction.MultiActio nController,意即在一个 Controller