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.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";
    }

}

2、

2.返回顶部
3.返回顶部
4.返回顶部
5.返回顶部
6.返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/storebook/p/9798658.html

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

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

如何掌握 Spring,Spring Boot 全家桶?系统学习 Spring 的大纲一份(实战教学)

搞个推荐! 资深的 Spring 工程师应该都知道 Spring 界的大牛丁雪丰.作为平安壹钱包的高级架构师之余,他不仅翻译了<Spring Boot 实战><Spring 攻略>两本书,还出了一门一揽子解决 Spring 全家桶的课程<玩转 Spring 全家桶>. 他在推荐自己的这门课程时说, 市面上有很多书和教程,但对于很多开发人员,在学习 Spring 的时候,难免会遇到这些问题: 官方文档虽然全面,但面对庞杂的知识体系,很多初学者一时不知该从哪里下手: 手册式

Java单体应用 - 常用框架 - 07.Spring MVC - 表单标签库

原文地址:http://www.work100.net/training/monolithic-frameworks-spring-mvc-form-tags.html更多教程:光束云 - 免费课程 表单标签库 序号 文内章节 视频 1 声明表单标签 - 2 表单标签 - 3 文本框 - 4 密码框 - 5 文本域 - 6 复选框 - 7 复选框(多选) - 8 单选按钮 - 9 单选按钮(多选) - 10 下拉列表 - 11 下拉列表(多选) - 12 隐藏域 - 请参照如上章节导航进行阅读

Java单体应用 - 常用框架 - 07.Spring MVC - 项目重构(iot-admin3)

原文地址:http://www.work100.net/training/monolithic-frameworks-spring-mvc-iot-admin3.html更多教程:光束云 - 免费课程 项目重构(iot-admin3) 序号 文内章节 视频 1 概述 - 2 配置和结构重构 - 3 Controller控制器重构 - 4 使用拦截器 - 5 实例源码 - 请参照如上章节导航进行阅读 1.概述 我们继续以上一章节 Spring Web 中的案例项目 iot-admin2 为基础,复

Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis

https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=63 https://www.zhihu.com/question/29444491/answer/146457757 1. Java - Struts框架教程Struts 是Apache软件基金会(ASF)赞助的一个开源项目.通过采用JavaServlet/JSP技术,实现了基于Java EEWeb

Java程序员 必须掌握的 20+ 种 Spring 常用注解

注解本身没有功能的,就和xml一样.注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置. 本文主要罗列Spring|SpringMVC相关注解的简介. Spring部分 1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller 在展现层使用,控制器的声明(C) 2.注入bean的注解 @Autowired:由Spring提供 @Injec

Java单体应用 - 常用框架 - 02.Spring

原文地址:http://www.work100.net/training/monolithic-frameworks-spring.html更多教程:光束云 - 免费课程 Spring 序号 文内章节 视频 1 概述 - 2 体系结构 - 3 特点 - 4 Spring与IoC - 5 第一个Spring应用程序 - 请参照如上章节导航进行阅读 1.概述 Spring 的主要作用就是为代码"解耦",降低代码间的耦合度. 根据功能的不同,可以将一个系统中的代码分为 主业务逻辑 与 系统级

为什么选择 Spring 作为 Java 框架

1. 概述 在本文中,我们将讨论 Spring 作为最流行的 Java 框架之一的主要价值体现. 最重要的是,我们将尝试理解 Spring 成为我们选择框架的原因.Spring 的详细信息及其组成部分已在我们 之前的教程中广泛介绍. 因此,我们将跳过介绍性的"如何"部分,并主要关注"为什么". 2. 为什么使用任何框架? 在我们开始任何关于 Spring 的讨论之前,首先让我们了解为什么我们首先需要使用任何框架. 像 Java 这样的通用编程语言能够支持多种应用程序

Spring boot ---- java.lang.NoClassDefFoundError: javax/servlet/ServletContext

场景描述 项目中用到spring boot进行带页面的开发,从github上的simples中下载了对应的spring-boot-sample-web-jsp项目,经简单修改之后死活启动不起来,各种异常.spring-boot以简单容易上手为核心宗旨,可为什么在引入jar时就会出现这么多问题呢? 异常信息 异常一: 2016-06-17 11:04:14.216 ERROR 4684 --- [ main] o.s.boot.SpringApplication : Application sta

开发者眼中的Spring与Java EE

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/07/spring-javaee 在Java社区中,Spring与Java EE之争是个永恒的话题.在这场争论中,来自两个阵营的布道师.架构师与铁杆粉丝都在不遗余力地捍卫着本方的尊严,并试图说服对方加入到自己的阵营当中,但结果却是双方都很难说服对方,每一方都有充分的理由表明自己的选择是正确的.参与到这场争论的有一些架构师,他们负责着平台的选择.那么对于普通开发者来说该如何思考