文章目录
一、获取用户提交的请求参数
1、通过HttpServletRequest获取
- 获取header参数
String token=request.getHeader("token")
- 获取单个参数
String getParameter(String name)
- 获取多选框参数
//checkbox一个name对应对个value
String[] getParameterValues(String name)
- 获取表单所有参数
//考虑到checkbox一个name对应对个value
Map<String,String[]> em = request.getParameterMap()
- 获取请求的URL
StringBuffer request.getRequestURL()
2、将请求参数声明为方法的参数
<form>
<input type="text" name="username">
<input type="text" name="age">
</form>
@PostMapping
public void handleReg(String username,Integer age){
}
3、实体类接收
- 实体类必须存在set、get
- 实体类属性对应表单name
4、Controller的接口不知道接收参数的key时,如何接收参数
//从request中的流来获取参数
public void receive(){
InputStreamReader reader=new InputStreamReader(request.getInputStream(),StandardCharsets.UTF_8);
StringBuilder param=new StringBuilder();
int i;
char c;
while ((i=reader.read())!=-1) {
c=(char)i;
param.append(c);
}
System.err.println(param.toString());
}
二、重定向
- 在处理请求的方法中,返回的字符串使用"redirect:"作为前缀,表示重定向
//相对路径,会添加Controller类上的RequestMapping的url = ip:port/index/index.html
return "redirect:index.html";
//绝对路径 = ip:port/index.html
return "redirect:/index.html";
三、转发
- 默认在处理请求的方法中,返回的字符串(视图名)是转发
//相对路径 return "login"; //绝对路径 return "/login";
-
通过HttpServletRequest转发
public String leg(HttpServletRequest request){ //绑定数据 request.setAttribute("message", msg); return "login"; }
-
使用ModelAndView作为返回值
- 原理:Model数据会利用HttpServletRequest的Attribute传递到JSP页面中
//viewName-视图名;model-转发的数据 //ModelAndView(String viewName, Map<String, ?> model) public ModelAndView leg(User user){ Map map=new HashMap(){{ put("message","用户名"); }} return new ModelAndView("error",map); }
-
使用ModelMap封装转发的数据
- 原理:ModelMap数据会利用HttpServletRequest的Attribute传递到JSP页面中
public String login(ModelMap modelMap){ //绑定单一数据 modelMap.addAttribute("message", msg); //绑定集合 ModelMap addAllAttributes(Collection<?> attributeValues); //绑定Map ModelMap addAllAttributes(Map<String, ?> attributes); return "login"; }
四、 使用HttpSession
- 什么时候需要使用Session?
- HTTP协议是无状态的,所以,request不可以长时间保存数据!需要较长时间却不是永久保存用户的数据
- 什么样的数据使用Session存储?
- 当前来访用户的唯一标识,例如:用户的id
- 使用频率很高的数据,例如:用户名、用户头像
- 不适合使用其它方案暂时存储的数据
public ResponseResult login( HttpSession session){
}