Springmvc页面传值跟作用域的使用
public class User {
private int id;
private String name ;
private String pwd;
private int age;
}
- 1
- 2
- 3
- 4
- 5
- 6
<form action="loginOne.do" method="post">
<input type="text" name="name" >
<input type="password" name="pwd" >
<input type="text" name="age" >
<input type="submit" value="Login" >
</form>
- 1
- 2
- 3
- 4
- 5
- 6
如上所示我们可以用一个实体来获取参数值,这里是注解开发,记住在类名上加入注解@Controller
@RequestMapping("login.do")
public String login(User user){
int age = user.getAge();
String name = user.getName();
String pwd = user.getPwd();
System.out.println(user);
return null;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
注意的是在传递过程中有可能出现乱码问题,要设置字符集编码,我呢配置了一个过滤器,一劳永逸
<!-- 解决中文乱码问题 这解决了post方式提交乱码问题-->
<filter>
<filter-name>filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
2.传递的参数与实体属性名不一致的时候使用的是@RequestParam注解
有三个属性value:前台页面name属性的值
required:是否必须有参数,默认为true
defaultValue:默认的值是什么
代码:
@RequestMapping("loginOne.do")
public String loginOne(
@RequestParam(value="tname",required=true) String name,
@RequestParam(value="tpwd",defaultValue="6666",required=true) String pwd,
@RequestParam(value="tage",required=true) int age
){
System.out.println(name+"\t"+pwd+"\t"+age);
return "login";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
前台页面是、:
<form action="loginOne.do" method="post">
<input type="text" name="tname" >
<input type="password" name="tpwd" >
<input type="text" name="tage" >
<input type="submit" value="Login" >
</form>
- 1
- 2
- 3
- 4
- 5
- 6
3.数组传值
实体类有一个数组属性例如:
public class User {
private int id;
private String name ;
private String pwd;
private int age;
private String[] books;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
使用get方法获取值
@RequestMapping("loginOne.do")
public String loginOne(User user){
System.out.println(user.getBooks());
return "login";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
jsp页面
<form action="loginOne.do" method="post">
<input type="text" name="name" >
<input type="password" name="pwd" >
<input type="text" name="age" >
<input type="text" name="adress.name" >
<input type="checkbox" name="books" value="C#"> C#
<input type="checkbox" name="books" value="PS"> PS
<input type="checkbox" name="books" value="JAVA">JAVA
<input type="checkbox" name="books" value="PHP">PHP
<input type="submit" value="Login" >
</form>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.对象传值
一个类中包含另一个类的属性,我们可以通过方法调用来实现
jsp页面还是上面的jsp,可以看到有一个 name-“adress.name”这样起名字可以直接找到实体的get方法来获取值,在我们开发的时候,起名字是很重要的,名字起对了,我们可以省很多事
@RequestMapping("loginOne.do")
public String loginOne(User user){
System.out.println(user.getAdress());
return "login";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
好的,下面我们说一下作用域传值
1.使用Servlet 四大作用域PageContext,ServletRequest,HttpSession,ServletContext;都可以使用我只示范一个,和我们之前使用的servlet差不多,都是用request获取值,比较返回
/**
* 使用request作用域传值
* @param req
* @param resp
* @return
*/
@RequestMapping("login")
public String req(HttpServletRequest req,HttpServletResponse resp){
String name = req.getParameter("name");
String pwd = req.getParameter("pwd");
System.out.println(name);
System.out.println(pwd);
if("admin".equals(name)){
req.setAttribute("name", name);
return "listAdmin";
}else{
return "false";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
2.使用model对象
/**
* 利用Model对象作用域传值
* 使用model.addAttribute("name",name);
* @param user
* @param model
* @return
*/
@RequestMapping("model")
public String toModel(User user,Model model){
String name = user.getName();
String pwd = user.getPwd();
if("admin".equals(name)){
model.addAttribute("name",name);
return "listAdmin";
}else{
return "false";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
3.使用ModelAndView对象
/**
* 使用ModelAndView对象传值
* @param user
* @return
*/
@RequestMapping("mandv")
public ModelAndView mlv(User user){
ModelAndView mv=new ModelAndView();
String name = user.getName();
String pwd = user.getPwd();
if("admin".equals(name)){
mv.setViewName("listAdmin");
mv.addObject("name",name);
}else{
mv.setViewName("false");
}
return mv;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
4.使用Map传值
/**
* 使用Map传值
* @param user
* @return
*/
@RequestMapping("Map")
public String toMap(User user,Map map,HttpServletRequest req){
String name = user.getName();
map.put("name", name);
if(name!=null){
req.setAttribute("map", map);
return "listAdmin" ;
}else{
return "false" ;
}
}