前端传后台
- 在目标方法内添加形参,形参名与前端请求的参数名一直或者使用注解绑定
@Controller
public class Login {
@RequestMapping("/login")
//前端请求中的参数名为userName与psw
public String login(@RequestParam("userName")String uname,String psw){{
System.out.println("------------执行登录操作------------");
System.out.println("uname:"+uname+",密码:"+psw);
return "index";
}
}
- 封装复杂类型的参数,复杂类型中属性名应与前端请求参数名一致
@Controller
public class Login {
@RequestMapping("/login")
//User实体类内包含uname与psw属性
public String login(User user){
System.out.println("------------执行登录操作------------");
System.out.println("uname:"+user.getUname()+",密码:"+user.getPsw());
return "index";
}
}
- 使用原生request接收
@Controller
public class Login {
@RequestMapping("/login")
public String login(HttpServletRequest request){
System.out.println("------------执行登录操作------------");
System.out.println("uname:"+request.getParameter("uname")+",密码:"+request.getParameter("psw"));
return "index";
}
}
如果前端传后台的参数是中文,可能会出现乱码,本人是通过在web.xml中添加过滤器解决
<!-- 解决中文乱码 -->
<filter>
<filter-name>characterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
后台传前端
后台往前端传值需要使用jstl表达式,需要导入相关jar包
- 在后台控制类返回值需要是org.springframework.web.servlet.ModelAndView 类型,即数据加视图,通过赋值为其添加数据
package cn.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cn.entity.User;
@Controller
public class Login {
@RequestMapping("/login")
public ModelAndView login(){
List<User> list = new ArrayList<>();
User u1 = new User("tom","111");
User u2 = new User("jack","222");
User u3 = new User("lilei","333");
list.add(u1);
list.add(u2);
list.add(u3);
//创建ModelAndView 对象
ModelAndView mav = new ModelAndView();
//添加视图名
mav.setViewName("index");
//添加返回数据,可添加多个,在前端使用el表达式获取
mav.addObject("userList", list);
return mav;
}
}
- 通过在目标方法内加入形参map来赋值
@RequestMapping("/getData")
public String getData(User user,Map<String, Object> map){
map.put("user", user);
return "index";
}
- 通过在目标方法内加入形参ModelMap来赋值
@RequestMapping("/getData")
public String getData(User user,ModelMap map){
map.put("user", user);
return "index";
}
- 通过在目标方法内加入形参Model来赋值
@RequestMapping("/getData")
public String getData(User user,Model model){
model.addAttribute("user", user);
return "index";
}
在前端通过el表达式取值
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--引入jstl标签库-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--通过jstl标签循环,通过el表达式取值-->
<c:forEach items="${userList}" var="user">
${user.uname},${user.psw}<br>
</c:forEach>
</body>
</html>