码迷,mamicode.com
首页 > 编程语言 > 详细

Spring_定义SpringMVC控制器

时间:2018-05-16 00:33:55      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:div   查询参数   通过   ons   char   mvc控制器   ack   practice   它的   

美丽的蓝图,落在懒汉手里,也不过是一页废纸。

  在SpringMVC中,控制器只是方法上添加了@RequestMapping注解的类,这个注解声明了他们所要处理的请求。

  @Controller注解用来声明控制器,它基于@Component注解,它的目地就是辅助实现组件扫描。

package chapter5.practice3;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/games")
public class PlayGameController {
/**
* 返回至baskerball.jsp页面
* @param game 接受查询参数
* @return
*/
@RequestMapping("/play")
public String playGame(@RequestParam("game") String game) {
System.out.println("I can play " + game);
return "basketball";
}

/**
* 返回JSON数据
* @return
*/
@ResponseBody
@RequestMapping(value = "/show", produces = "application/json;charset=UTF-8")
public Map<String, Object> showAllGames() {
Map<String, Object> gamesMap = new HashMap<String, Object>();
java.util.List<String> gameList = new ArrayList<String>();
gameList.add("DNF");
gameList.add("LOL");
gamesMap.put("gameList", gameList);
return gamesMap;
}

/**
* 表单参数
* @param game
* @return
*/
@RequestMapping(value="/isExisit", method=RequestMethod.POST)
public String gameIsExisit(Game game) {
return "yes";
}

/**
* 路径参数
* @param gameId
* @return
*/
@RequestMapping(value="/{gameId}",method=RequestMethod.GET)
public String showGameImg(@PathVariable String gameId) {
return "showGameImg";
}

}

  以上代码定义了一个简单的SpringMVC控制器。

   1. 其中类级别上的@RequestMapping定义了该控制器类类级别的请求处理,platGame方法上的@RequestMapping定义了该方法的请求处理。

  2. SpringMVC控制器返回类型常用的有以下几种:

  1)ModelAndView

   顾名思义返回带model数据的view,即返回model数据和视图名称。

@RequestMapping(value="/showGameInfo", method=RequestMethod.POST)
    public ModelAndView showGameInfo() {
        //通过构造器指定跳转的页面
        ModelAndView gameModelAndView = new ModelAndView("gameDetail");
        //也可以通过setViewName方法设定gameModelAndView.setViewName("gameDetail");
        Map<String, Object> gamesMap = new HashMap<String, Object>();
        java.util.List<String> gameList = new ArrayList<String>();
        gameList.add("DNF");
        gameList.add("LOL");
        gamesMap.put("gameList", gameList);
        //addObject方法装载model数据
        gameModelAndView.addObject("gamesMap", gamesMap);
        return gameModelAndView;
    }

 

 

 

  2)String

    返回跳转的视图名称。

    需要注意的是:

            (1)如果方法声明了@ResponseBody,则会将该字符串值输出到页面;

     (2)如果字符串中形式为"redirect:basketball",则表示跳转页面的方式为重定向,将不会携带上次请求的request;

       (3)如果字符串中形式为"forward:basketball",则表示跳转页面的方式为转发,将携带上次请求的request。

 

@RequestMapping("/play")
    public String playGame(@RequestParam("game") String game) {
        System.out.println("I can play " + game);
        return "basketball";
    }

 

 

  3)Void

    当返回类型为void时,返回的页面为对应的访问地址。如下代码,该请求的响应页面"/index"

@RequestMapping(value="/index", method=RequestMethod.POST)
    public void index() {
        System.out.println("index...");
    }

 

 

  3. SpringMVC允许以多种方式将客户端中的数据传送到控制器的处理方法中:

  1)查询参数

  2)表单参数

  3)路径变量

 

Spring_定义SpringMVC控制器

标签:div   查询参数   通过   ons   char   mvc控制器   ack   practice   它的   

原文地址:https://www.cnblogs.com/dandelZH/p/9043610.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!