可以从 HTTPServletRequest,简单类型参数,pojo 类型参数,包装类,集合类型的参数中获取请求中的参数,当然,还可以通过 json 格式的字符串来获取,这里先不做讨论。
可以从 HttpServletRequest、HttpServletResponse、HttpSession 中获取请求中的参数。
测试类如下:
package com.lyu.qjl.interview.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 类名称:用于测试的控制器
* 全限定性类名: com.lyu.qjl.interview.controller.TestController
* @author 曲健磊
* @date 2018年5月24日下午10:55:54
* @version V1.0
*/
@Controller
public class TestController {
// 通过 HttpServletRequest 和 HttpServletResponse 以及 HTTPSession 来获取请求中的参数
@RequestMapping("/testByParam")
public void getParamByReq(HttpServletRequest request, HttpServletResponse response) {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
}
}
例如:int,string,double,float,etc 这些简单的数据类型参数来获取请求中的参数。
代码如下:
package com.lyu.qjl.interview.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 类名称:用于测试的控制器
* 全限定性类名: com.lyu.qjl.interview.controller.TestController
* @author 曲健磊
* @date 2018年5月24日下午10:55:54
* @version V1.0
*/
@Controller
public class TestController {
// 通过简单的数据类型来获取请求中的参数
@RequestMapping("/testBySimple")
public void getParamBySimple(String username, String password) {
System.out.println(username);
System.out.println(password);
}
}
也可以通过简单的 pojo 类型来接收参数,代码如下:
package com.lyu.qjl.interview.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.lyu.qjl.interview.entity.User;
/**
* 类名称:用于测试的控制器
* 全限定性类名: com.lyu.qjl.interview.controller.TestController
* @author 曲健磊
* @date 2018年5月24日下午10:55:54
* @version V1.0
*/
@Controller
public class TestController {
@RequestMapping("/testByPojo")
public void getParamByPojo(User user) {
System.out.println(user.getUsername());
System.out.println(user.getPassword());
}
}
注意:这里其实是 SpringMVC 通过反射调用的 User 的无参的构造方法 new 的对象,然后调用两个 setter 方法来进行的参数注入,如果 User 类没有无参构造或者没有响应的 setter 方法结果就为空。
包装类代码如下:
package com.lyu.qjl.interview.vo;
import java.util.List;
import com.lyu.qjl.interview.entity.User;
/**
* 类名称:用户包装类
* 全限定性类名: com.lyu.qjl.interview.vo.UserVO
* @author 曲健磊
* @date 2018年5月25日下午9:27:42
* @version V1.0
*/
public class UserVO {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "UserVO [user=" + user.toString() + "]";
}
}
Controller 代码如下:
package com.lyu.qjl.interview.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 com.lyu.qjl.interview.entity.User;
import com.lyu.qjl.interview.vo.UserVO;
/**
* 类名称:处理用户请求的handler
* 全限定性类名: com.lyu.qjl.interview.controller.UserController
* @author 曲健磊
* @date 2018年5月21日下午7:24:07
* @version V1.0
*/
@Controller
public class UserController{
// 通过包装类来获取页面信息
@RequestMapping("/saveUserVO")
public String saveUserVO(UserVO userVO) {
System.out.println(userVO.toString());
return "userEdit";
}
}
页面代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
%>
用户列表
用户新增/修改页面,通过包装类来获取提交的参数
注:name 属性值前要加上外层的对象名。
如果前台传过来的是一组数据该怎么接受呢?(不用 json 格式的字符串)
针对单个属性的话,可以使用数组。(针对批量删除)
针对多个属性的话,仍需要使用包装类。(针对批量修改)
前台页面代码:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
%>
用户列表
批量删除
批量修改
Controller 代码:
package com.lyu.qjl.interview.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 com.lyu.qjl.interview.entity.User;
import com.lyu.qjl.interview.vo.UserVO;
/**
* 类名称:处理用户请求的handler
* 全限定性类名: com.lyu.qjl.interview.controller.UserController
* @author 曲健磊
* @date 2018年5月21日下午7:24:07
* @version V1.0
*/
@Controller
public class UserController{
// 根据用户id数组批量删除用户
@RequestMapping("/batchDelUser")
public String batchDelUser(Integer[] userId) {
for (int i = 0; i < userId.length; i++) {
System.out.println(userId[i]);
}
return "userList";
}
// 根据用户id数组批量修改用户
@RequestMapping("/batchUpdateUser")
public String batchUpdateUser(UserVO userVO) {
System.out.println("得到的用户数:" + userVO.getUserList().size());
for (int i = 0; i < userVO.getUserList().size(); i++) {
System.out.println(userVO.getUserList().get(i));
}
return "userList";
}
}