Spring MVC 学习 之 - URL参数传递

 

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

   @Controller:

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

1
2
3
4
5
@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"; }

直接回传JSON

    请求的URL地址一定是以.json结尾,否则异常

Failed to load resource: the server responded with a status of 406 (Not Acceptable) : The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers () 

回传实体:

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class UserInfo { private Integer UserId;
public Integer getUserId() {
return UserId;
}
public void setUserId(Integer userId) {
UserId = userId;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
private String UserName; }

回传 action

@ResponseBody
@RequestMapping("/getuser.json")
public UserInfo GetUser()
{
System.out.println("getuser");
UserInfo model=new UserInfo();
model.setUserId(100);
model.setUserName("aa");
return model;
}

请求:

/web1/urlinfo/getuser.json

输出:

{"userId":100,"userName":"aa"}

Spring MVC URL传参的更多相关文章

  1. Spring Swagger URL传参问题(转)

    代码例子: @ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息") @ApiImplicitPar ...

  2. spring MVC 尝试传参json(应用部分)

    spring 3.1后增加新的注解:@Requestbody,@Responsebody, 暂不论Requestdody, 若想让后端代码直接返回json字符串,可使用@Responsebody, 用 ...

  3. spring mvc 重定向传参

    参考链接如下: http://bbs.csdn.net/topics/391034118?page=1 自己的示例程序: 详细页面提交一个修改动作,修改完成后跳转到检索页面,把检索条件重新赋值给检索页 ...

  4. 解决Spring MVC前台传参中文乱码问题

    在web.xml文件中配置字符编码过滤器: <filter> <filter-name>CharacterEncoding</filter-name> <fi ...

  5. Spring MVC POJO传参方式

    有两POJO类 Address.java package com.proc; public class Address { private String province; private Strin ...

  6. Spring MVC url提交参数和获取参数

    [转载:http://blog.csdn.net/mahoking] 普通URL提交参数         该格式url为:url.do?param1=mahc&param2=8888.00 需 ...

  7. 点击div 跳转并通过URL传参

    点击div前要先给div绑定要传的参数: //给panel绑定自定义属性,方便在跳转时传带参数,键/值对排列 panel.attr("user_age",user_age); pa ...

  8. Spring MVC上传文件

    Spring MVC上传文件 1.Web.xml中加入 <servlet> <servlet-name>springmvc</servlet-name> <s ...

  9. 关于url传参中文乱码问题

    之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/c ...

随机推荐

  1. JAVA接口示例

    总感觉有点虚,但慢慢找到感觉了.将对象放进数组里,这就比较深入了. interface drawTest{ public void draw(); public void doAnyThing(); ...

  2. @Valid springMVC bean校验不起作用及如何统一处理校验

    SpringMVC 使用JSR-303进行校验 @Valid 使用注解 一.准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口: hibernate-vali ...

  3. ISAP

    跑的是比Dinic快辣. 更新:指针版.... #include<iostream> #include<cstdio> #include<cmath> #inclu ...

  4. 【疑难杂症】xmind启动后,自动退出的问题

    xmind安装一段时间后,就会出现一启动,就自动退出的情况.卸载重装也无法解决,在试过网上的各种方法后,发现这个方法最凑效. 打开xmind.ini(安装目录下),删除以下几行,保存配置文件,重启即可 ...

  5. NERDTree这个插件的用法简介

    事情是这样子的,想做做李治军老师班的操作系统实验,但是Linux上的gedit太简陋了(这个简陋程度堪比Windows环境下的"记事本"),被杨世祺大神嘲笑了.我心想既然在linu ...

  6. gcc编译时头文件库文件搜索顺序(转)

    原文: http://blog.csdn.net/silentfly1987/article/details/6119195

  7. java笔记2之算术运算符

    1运算符是什么呢 对常量和变量进行操作的运算符 2运算符分为哪些 算术运算符(+,-,*,/), 赋值运算符 比较运算符 逻辑运算符 位运算符 三目运算符 3运算符 A 算术运算符的注意事项 (1)整 ...

  8. 【转】Eclipse中创建并运行Servlet项目

    最近看了写http协议的学习资料,因此想要实现下andriod平台和服务器通信,那就servlet吧,哎哟,还不错哦!顺便说下,我这个servlet服务是想获得用户名和密码进行校验,然后反给客户端状态 ...

  9. 解决Xcode8 输出一对字符串问题

    在Product->Scheme->Edit Scheme->Run->Environment Variables下添加键:OS_ACTIVITY_MODE, 值:Disabl ...

  10. HTML的表格玩法

    HTML的表格玩法 HTML也是可已展示表格的,大体结构如下 <!DOCTYPE html> <html lang="en"> <head> & ...