欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解SpringMVC——接收请求参数和页面传参

程序员文章站 2024-03-09 12:13:17
spring接收请求参数: 1,使用httpservletrequest获取 @requestmapping("/login.do") public s...

spring接收请求参数:

1,使用httpservletrequest获取

@requestmapping("/login.do") 
public string login(httpservletrequest request){ 
  string name = request.getparameter("name") 
  string pass = request.getparameter("pass") 
} 

 2,spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和struts2一样

@requestmapping("/login.do") 
public string login(httpservletrequest request, 
                string name, 
 @requestparam("pass")string password) // 表单属性是pass,用变量password接收 
{ 
  syso(name); 
  syso(password) 
} 

3,自动注入bean属性 

<form action="login.do"> 
用户名:<input name="name"/> 
密码:<input name="pass"/> 
<input type="submit" value="登陆"> 
</form> 
 
//封装的user类 
public class user{ 
 private string name; 
 private string pass; 
} 
 @requestmapping("/login.do") 
public string login(user user) 
{ 
  syso(user.getname()); 
  syso(user.getpass()); 
} 

 向页面传值:

当controller组件处理后,向jsp页面传值,

1,使用httpservletrequest 和 session  然后setattribute(),就和servlet中一样

2,使用modelandview对象

3,使用modelmap对象

4,使用@modelattribute注解 

model数据会利用httpservletrequest的attribute传值到success.jsp中

@requestmapping("/login.do") 
public modelandview login(string name,string pass){ 
  user user = userservice.login(name,pwd); 
  map<string,object> data = new hashmap<string,object>(); 
  data.put("user",user); 
  return new modelandview("success",data); 
} 

使用modelmap参数对象示例:

modelmap数据会利用httpservletrequest的attribute传值到success.jsp中

@requestmapping("/login.do") 
public string login(string name,string pass ,modelmap model){ 
  user user = userservice.login(name,pwd); 
  model.addattribute("user",user); 
  model.put("name",name); 
  return "success"; 
} 

 使用@modelattribute示例

在controller方法的参数部分或bean属性方法上使用
@modelattribute数据会利用httpservletrequest的attribute传值到success.jsp中

@requestmapping("/login.do") 
public string login(@modelattribute("user") user user){ 
  //todo 
  return "success"; 
} 
 
@modelattribute("name") 
public string getname(){ 
  return name; 
} 

session存储:

可以利用httpservletreequest的getsession()方法

@requestmapping("/login.do") 
public string login(string name,string pwd 
              modelmap model,httpservletrequest request){ 
   user user = serservice.login(name,pwd); 
   httpsession session = request.getsession(); 
   session.setattribute("user",user); 
   model.addattribute("user",user); 
   return "success"; 
} 

spring mvc 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作

1,使用redirectview

2,使用redirect:前缀

public modelandview login(){ 
  redirectview view = new redirectview("regirst.do"); 
  return new modelandview(view); 
} 

或者用如下方法,工作中常用的方法:

public string login(){ 
  //todo 
  return "redirect:regirst.do"; 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。