[Spring MVC] - 地址路由使用(一)

常用的一些Spring MVC的路由写法以及参数传递方式。

参考引用:

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/mvc.html

这是一些测试例子:

package com.my.controller;

import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value="/default")
public class TestController {

    /**
     * 使用ModelAndView
     * @return
     */
    @RequestMapping("/")
    public ModelAndView index() {
        ModelAndView mv = new ModelAndView();
        mv.addObject("message", "This is index!");
        mv.setViewName("index");
        return mv;
    }

    /**
     * 使用Model
     * @param model
     * @return
     */
    @RequestMapping("/index2")
    public String index2(Model model) {
        model.addAttribute("message", "This is index2!");
        return "index2";
    }

    /**
     * 直接返回内容
     * @return
     */
    @RequestMapping(value="/index3", method=RequestMethod.GET)
    @ResponseBody
    public String index3() {
        return "This is index3!";
    }

    /**
     * 直接返回对应的index4的view
     */
    @RequestMapping(value="/index4", method=RequestMethod.GET)
    public void index4() {
    }

    /**
     * 直接返回index5的view,注意方法后缀:Handler
     * 比较与index4的区别
     */
    @RequestMapping(value="/index5", method=RequestMethod.GET)
    public void index5Handler() {
    }

    /**
     * 传参方式调用
     * @param message
     * @return
     */
    @RequestMapping(value="/index6/{message}", method=RequestMethod.GET)
    public ModelAndView index6(@PathVariable String message) {
        ModelAndView view = new ModelAndView("index6");
        view.addObject("message", message);
        return view;
    }

    /**
     * 传参方式调用,使用Model
     * 注意方法内的Model是直接addAttribute,没有key
     * 区别index6
     * @param message
     * @param model
     * @return
     */
    @RequestMapping(value="/index7/{message}", method=RequestMethod.GET)
    public String index7(@PathVariable String message, Model model) {
        model.addAttribute(message);
        return "index6";
    }

    /**
     * 传参调用
     * 指定参数名称
     * @param userName
     * @param password
     * @return
     */
    @RequestMapping(value="/index8/{username}/{password}")
    public ModelAndView index8(@PathVariable("username") String userName, @PathVariable("password") String password) {
        ModelAndView view = new ModelAndView("index8");
        view.addObject("userName", userName);
        view.addObject("password", password);
        return view;
    }

    /**
     * 使用request/response取得参数
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value="/index9")
    public String index9(HttpServletRequest request, HttpServletResponse response) {
        String message = request.getParameter("message");
        request.setAttribute("message", message);
        return "index9";
    }

    /**
     * 使用@RequestParam方式取得参数
     * @param message
     * @return
     */
    @RequestMapping(value="/index10")
    public ModelAndView index10(@RequestParam("message") String message) {
        ModelAndView view = new ModelAndView("index10");
        view.addObject("message", message);
        return view;
    }

    /**
     * 默认传参方式
     * @param message
     * @param model
     * @return
     */
    @RequestMapping(value="/index11")
    public String index11(String message, Model model) {
        model.addAttribute("message", message);
        return "index10";
    }

    /**
     * 传入PrintWriteer,也可以传入@CookieValue
     * @param out
     * @param message
     * @param model
     * @return
     */
    @RequestMapping(value="/index12")
    public String index12(PrintWriter out, String message, Model model) {
        out.println(message);
        model.addAttribute("message", message);
        return "index10";
    }

    /**
     * 日期参数
     * @param day
     * @return
     */
    @RequestMapping(value="/index13")
    public ModelAndView index13(@RequestParam("day") @DateTimeFormat(pattern="yyyy-MM-dd") Date day) {
        ModelAndView view = new ModelAndView("index10");
        view.addObject("message", day.toString());
        return view;
    }

    /**
     * 默认action
     * @param message
     * @return
     */
    @RequestMapping
    public ModelAndView index14(String message) {
        ModelAndView view = new ModelAndView("index");
        view.addObject("message", message);
        return view;
    }

    /**
     * 限制访问的地址,必需有参数p=1才能触发
     * @param message
     * @param model
     * @return
     */
    @RequestMapping(value="/index15/{message}", params="p=1", method=RequestMethod.GET)
    public String index15(@PathVariable("message") String message, Model model) {
        model.addAttribute("message", message);
        return "index";
    }

}
时间: 2024-10-25 10:30:11

[Spring MVC] - 地址路由使用(一)的相关文章

Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式

ylbtech-Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式 1.返回顶部 1. 常用的一些Spring MVC的路由写法以及参数传递方式. 这是一些测试代码: package com.my.controller; import java.io.PrintWriter; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servl

地址路由使用

常用的一些Spring MVC的路由写法以及参数传递方式. package com.my.controller; import java.io.PrintWriter; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.format.annotation.Date

spring mvc 和ajax异步交互完整实例(转自CSDN) 附下载地址

spring mvc 和ajax异步交互完整实例 spring MVC 异步交互demo: demo下载地址:http://download.csdn.net/download/quincylk/9521375 1.jsp页面: [java] view plain copy print? <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-

基于Spring Boot构建的Spring MVC快速入门

原文地址:http://tianmaying.com/tutorial/spring-mvc-quickstart 环境准备 一个称手的文本编辑器(例如Vim.Emacs.Sublime Text)或者IDE(Eclipse.Idea Intellij) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装) 一个最简单的Web应用 使用Spring Boot框架可以大大加速Web应用的开发过

Spring MVC中页面向后台传值的几种方式

在学习 Spring Mvc 过程中,有必要来先了解几个关键参数:   @Controller:         在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对应URL路由映射.@Controllerpublic class UserAction {    }  @RequestMapping         指定URL映射路径,如果在控制器上配置 RequestMapping  ,具体请求方法也配置路径则映射的路径为两者路径的叠加 常用映射如:Reque

基于Vue+Spring MVC+MyBatis+Shiro+Dubbo开发的分布式后台管理系统

最近项目中使用了shiro做权限管理,在开发过程中也踩了一些坑,于是便有了开发个应用巩固一下所学知识的想法,正好在开发的过程里学习一下Vue开发. 技术栈方面,现在前后端分离大行其道,于是也采用了前后端分离的模式,前端基于Vue+Element,后端Web基于Spring MVC,用Dubbo提供分布式服务,前端可以部署到nginx,后端Web可以部署到Tomcat.Jetty或Undertow等Servlet容器,Dubbo服务可以作为独立的java进程运行,这种架构下,各层都比较容易实现横向

Spring MVC简单原理

Spring MVC简单原理 针对有Java Web基础.Spring基础和Spring MVC使用经验者,文章比较简单,权当自己的一个总结和备忘吧. 前言 目前基于Java的web后端,Spring生态应该是比较常见了.虽然现在流行前后端分离,MVC和后端模板渲染越来越少,后端专注向前端提供数据接口.但由于笔者维护着一个老项目,既有JSP技术也有只返回JSON的接口,两者都是基于Spring MVC这一套技术实现的,所以暂且觉得了解一下Spring MVC原理还是有所裨益的. Spring M

spring boot与spring mvc的区别是什么?

Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能.Spring MVC是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种XML. JavaConfig.hin处理起来比较繁琐.于是为了简化开发者的使用,从而创造性地推出了Spr

最最简单的spring mvc + Maven项目

首先配置pom文件,只需要引用三个jar包文件即可: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&