Spring MVC 学习 之 - URL参数传递

在学习 Spring Mvc 过程中,有必要来先了解几个关键参数:

   @Controller:

在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对应URL路由映射。

@Controller
public class UserAction
{

}

  @RequestMapping

指定URL映射路径,如果在控制器上配置 RequestMapping  ,具体请求方法也配置路径则映射的路径为两者路径的叠加 常用映射如:RequestMapping("url.html")

配置映射路径:

@Controller
public class UserAction
{
    @RequestMapping(value = "/get_alluser.html")
   public ModelAndView GetAllUser(String Id)
   {
   }
}

以上配置映射

    http://***:8080:web1/get_alluser.html:

如在 @Controller添加 @RequestMapping(value = "/user"),则映射路径变成

http://***:8080:web1/user/get_alluser.html

   @ResponseBody

将注解方法对应的字符串直接返回

   @RequestParam

自动映射URL对应的参数到Action上面的数值,RequestParam 默认为必填参数

   @PathVariable

获取@RequestMapping 配置指定格式的URL映射参数

     /*
      *   直接输出 HTML,或JSON 字符串
      *   请求路径:
      *       /web1/urlinfo/getcontent.html?key=rhythmk
      *      /web1/urlinfo/getcontent.json?key=rhythmk
      * */
    @ResponseBody
    @RequestMapping(value = "/getcontent.**")
    public String GetContent(
            @RequestParam("key") String key,
            @RequestParam(value = "key2", required = false, defaultValue = "defaultValue") String key2) {
        System.out.println("getcontent 被调用");
        String result = "直接返回内容  - key:" + key + ",key2:" + key2;
        System.out.println(result);
        return result;
    }
    /*
     * RequestMapping 支持 Ant 风格的URL配置 :
     *  请求路径:
     *     /urlinfo/geturlant/config.html?key=adddd
     */
    @ResponseBody
    @RequestMapping(value = "/geturlant/**.html")
    public String getUrlAnt(HttpServletRequest request) {
        String result = "?后面的参数为:" + request.getQueryString();
        return result;
    }
    /*
     * 配置指定格式的URL,映射到对应的参数
     *   请求路径:/web1/urlinfo/geturlparam/12_123.html
     *
     * */

    @RequestMapping(value = "/geturlparam/{id}_{menuId}.html")
    public ModelAndView getUrlParam(@PathVariable("id") String id,
            @PathVariable("menuId") String menuId) {
        ModelAndView mode = new ModelAndView(ShowMsg);
        mode.addObject("msg", "获取到的Id:" + id + ",menuId:" + menuId);
        return mode;
    }
    /*
     * 只接收Post 请求
     */
    @ResponseBody
    @RequestMapping(value = "/posturl.html", method = RequestMethod.POST)
    public String UrlMethod(@RequestParam String id) {
        return "只能是Post请求,获取到的Id:" + id;
    }
    /*
     *   写入 cookie
     * */
    @RequestMapping("/writecookies.html")
    public ModelAndView writeCookies(@RequestParam String value,
            HttpServletResponse response) {

        response.addCookie(new Cookie("key", value));
        ModelAndView mode = new ModelAndView(ShowMsg);
        mode.addObject("msg", "cookies 写入成功");
        return  mode ;
    }
      /*
       *  通过 @CookieValue 获取对应的key的值
       * */
    @RequestMapping("/getcookies.html")
    public ModelAndView getCookie(@CookieValue("key") String cookvalue) {
        ModelAndView mode = new ModelAndView(ShowMsg);
        mode.addObject("msg", "cookies=" + cookvalue);
        return mode;
    }
    /*
     * 将 Servlet Api 作为参数传入
     *   可以在action中直接使用  HttpServletResponse,HttpServletRequest
     * */
    @RequestMapping("/servlet.html")
    public String Servlet1(HttpServletResponse response,
            HttpServletRequest request) {

        Boolean result = (request != null && response != null);
        ModelAndView mode = new ModelAndView();
        mode.addObject("msg", "result=" + result.toString());
        return ShowMsg;

    }
    /*
     *   根据URL传入的参数实例化对象
     *
     *   如: http://127.0.0.1:8080/web1/urlinfo/getobject.html?UserId=1&UserName=ad
     * */
    @RequestMapping("getobject.html")
    public ModelAndView getObject(UserInfo user) {
        String result = "用户ID:" + user.getUserId().toString() + ",用户名:"
                + user.getUserName().toString();
        ModelAndView mode = new ModelAndView(ShowMsg);
        mode.addObject("msg", "result=" + result.toString());
        return mode;
    }

实现页面跳转:

    /*
     * 实现页面跳转
     * /web1/urlinfo/redirectpage.html
     * */
    @RequestMapping("/redirectpage.html")
    public String RedirectPage()
    {
        return  "redirect:getcookies.html?r=10"; 

    }
时间: 09-12

Spring MVC 学习 之 - URL参数传递的相关文章

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>

[转]Spring MVC 学习笔记 json格式的输入和输出

Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用 <!-- json --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.8.1</version>

Spring MVC学习之三:处理方法返回值的可选类型

转自:http://www.cnblogs.com/cuizhf/p/3810652.html ———————————————————————————————————————————————————————————— spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAndView @RequestMapping("/show1") publ

[Spring MVC]学习笔记--基础Servlet

Servlet是一个用Java编写的应用程序,在服务器上运行,处理请求的信息并将其发送到客户端. Servlet的客户端提出请求并获得该请求的响应. 对于所有的客户端请求,只需要创建Servlet的实例一次(这是和CGI(Common Gateway Interface)的重要区别,CGI是每个请求创建一个新实例),因此节省了大量的内存. Servlet在初始化后即驻留内存中,因此每次作出请求时无需加载. 下面通过一个例子来介绍如何编写一个简单的Servlet. 准备工作: 1. 下载并启动To

[Spring MVC]学习笔记--@RequestMapping

@RequestMapping是用来将请求的url,映射到整个类,或者里面的方法. @Controller @RequestMapping("/test") public class TestController { private final TestService service; @Autowired public TestController(TestService testService) { this.service = testService; } @RequestMap

[Spring MVC]学习笔记--FreeMarker的使用

还是先贴出该例子存于github上的位置 https://github.com/lemonbar/spring-mvc-freemarker Sping-Framework 的官方文档简单列出了在spring-mvc中如何使用freemarker, 但是相对来说提供的信息和例子太少, 所以在这给出一个详细的例子. 注:我是在maven基础上进行的构建, 很多解释已经在代码中加了, 所以尽量贴代码. FreeMarker Site: http://freemarker.org/ 1. 整个文件夹结

[Spring MVC]学习笔记--DispatcherServlet

在上一篇我们介绍了Servlet,这一篇主要来看一下MVC中用到的DispatcherServlet(继承自HttpServlet). 1. DispatcherServlet在web.xml中被声明. <web-app> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet&l

《Spring MVC学习指南》一书具有很大的欺骗性

2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul Deck著于2014年,林催二人于2015年翻译,2016年第6次印刷.我在淘宝上购买时就询问是哪个版本,店小二确实搞不清.我看了淘宝店此书的编辑推荐.目录.内容推荐,仍然看不出是哪个版本. 书买来,我稍微翻了一下,确认是基于Spring MVC 2.5的.这就问题大了,现在3.1版以后,方法完全不同变化很大,

Spring MVC学习笔记(一)--------准备篇

这一系列笔记将带你一步一步的进入Spring MVC,高手勿喷. 首先你得安装以下的工具: JDK,虽然JDK8已经发布了一段时间了,但是由于我们并不会使用到里面的新特性,所以JDK6以上版本皆可以(需加入到PATH环境变量中): Servlet Container,为了能运行WEB应用程序,因此需要一个Web Container,这里我们建议Tomcat即可: IDE,一个好的IDE不仅能提高你开发的效率,还能降低你学习的成本,我们选择的是IntelliJ: 构建工具,推荐使用Gradle,它