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-08-12 04:48:34

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

用Spring MVC开发简单的Web应用

这个例子是来自于Gary Mak等人写的Spring攻略(第二版)第八章Spring @MVC中的一个例子,在此以学习为目的进行记录. 问题:想用Spring MVC开发一个简单的Web应用, 学习这个框架的基本概念和配置. 解决方案: Spring MVC的核心组件是一个控制器(大多数框架都是控制器比较重要吧). 在最简单的Spring MVC应用中,控制器是需要在web.xml文件中配置的唯一Servlet. Spring MVC的控制器通常称作请求分发Servlet(Dispatcher

[一站式服务]Spring MVC实现简单CURD项目

前言 一个简单的网页CURD系统,用上了从来没用多的Spring MVC框架,一路走来,收获了很多,在这里记录下来分享给大家! 流程 搭建spring 框架(MVC 上下文.监听器.设置过滤jsp和html.GBK编码.session时间.jsp配置标签)--->JdbcTemplate及数据库配置 --->tomcat部署项目--->编码(pojo.persistence.service.controller.jsp) 学习收获(走过的坑) 1.Tomcat Context配置[2]:

Spring MVC的WebMvcConfigurerAdapter用法收集(零配置,无XML配置)

原理先不了解,只记录常用方法 用法: @EnableWebMvc 开启MVC配置,相当于 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi

spring mvc配置文件简单实现

ContextLoaderListener:Spring MVC在Web容器中的启动类,负责Spring IoC容器在Web上下文中的初始化,使得容器能够自动装配ApplicationContext的配置信息. 在web.xml中配置该类: <listener> <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> </listener>

基于Spring MVC的简单HelloWorld实例

1.导包 2.web.xml文件配置 3.包结构定义以及控制器的编写 4.xxxx-servlet文件配置   5.返回的视图(jsp)编写 6.源码 下载:http://download.csdn.net/download/techbirds_bao/4934704

Spring MVC入门(4.1版本)

(第一版,2014年12月27日) Web MVC框架中除了最流行的Struts,还有Spring MVC,相对来说Spring MVC更加灵活.简便,如果你只是开发一个小型的web应用,我认为Spring MVC是更好的选择. 下面我就以一个简单的例子来说明Spring MVC的基本用法.(示例程序我已上传至gitcafe,https://gitcafe.com/xt/SpringMVC_Study) 首先下载相关的jar包: spring:http://maven.springframewo

spring mvc 之初体验

Spring MVC最简单的配置 配置一个Spring MVC只需要三步: 在web.xml中配置Servlet: 创建Spring MVC的xml配置文件: 创建Controller和View 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http:

spring mvc 提供的几个常用的扩展点

Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,易于扩展,性能也很优秀.他和Struts2的思想还是一样的都有一个前端拦截器进行请求转发,只不过Struts2是filter,spring mvc是servlet,但spring mvc非常简单不论是学习还是使用. 这是spring3 mvc的核心流程图: SpirngMVC的第一个扩展点  HandlerMapping接口 -- 处理请求的映射 保存请求url到具体的方法的映射关系,,我们可以编写任意的HandlerMa

Spring MVC与struts2的区别

Spring MVC与struts2的区别: 1.易用性Spring MVC上手简单,并且可以与Spring无缝结合,毕竟都是一个公司的产品,学习起来也比较简单,比如从前端给对象填充值,他的处理就比Struts2简单多了,再比如对Restful风格的URL的支持,这些Spring MVC都比Struts2做的好N倍. 2.安全性说到安全性,现在又爆出了上述漏洞.Spring MVC到目前为止还没有发现比较严重的漏洞. 3.可扩展性Spring MVC依靠Spring这颗大树,Spring的实力我