spring中如何实现参数隐式传递_springmvc之url参数传递

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

@Controller:

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

@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("王坤");

return model;

}

请求:

/web1/urlinfo/getuser.json

输出:

{"userId":100,"userName":"张三"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值