1.Map集合传值
在web.xml中设置编码进行编码格式 防止乱码
页面中数据值的传递,将后台数据输出到页面中。
@RequestMapping("test3")
public String test3(CollectionVO collectionVO){
System.out.println("====================");
collectionVO.getMaps().forEach((k,v)-> System.out.println(k+"="+v));
return "index";
}
跳转获取数据页面
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试参数接收</title>
</head>
<body>
<h1>测试对象和零散类型参数接收</h1>
<h2>获取request作用于数据:${requestScope.username}</h2>
<h3>获取request作用于数据:${username}</h3>
</body>
</html>
post防止中文乱码解决方式
在web.xml文件中进行配置 springmvc中封装了解决编码方式 只要配置即可
<!--配置post请求方式中文乱码的Filter-->
<filter>
<filter-name>charset</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>
重点:注意springmvc配置文件中包扫描的位置,将包扫描的范围进行配置,
否则将不能进行其他路径下的访问
------------
从对象中获取值的方法
@RequestMapping("user01")
public String test(HttpServletRequest request, HttpServletResponse response){
//收集参数
//调用业务方法
String name = "永乐大帝";
User user = new User(1,"永乐大帝","123456",new Date());
request.setAttribute("user",user);
request.setAttribute("username",name);
return "attr";
}
映射文件
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试参数接收</title>
</head>
<body>
<h1>测试对象和零散类型参数接收</h1>
<h2>获取request作用于数据:${requestScope.username}</h2>
<h3>获取request作用于数据:${username}</h3>
<hr color="red">
<h3>id:${requestScope.id}</h3>
<h3>id:${user.id}</h3>
<h3>id:${user.username}</h3>
<h3>password:${user.password}</h3>
<h3>birthday:${user.birthday}</h3>
</body>
</html>
浏览器进行访问
格式化时间日期方法进行输出
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试参数接收</title>
</head>
<body>
<h1>测试对象和零散类型参数接收</h1>
<h2>获取request作用于数据:${requestScope.username}</h2>
<h3>获取request作用于数据:${username}</h3>
<hr color="red">
<h3>id:${requestScope.id}</h3>
<h3>id:${user.id}</h3>
<h3>id:${user.username}</h3>
<h3>password:${user.password}</h3>
<h3>birthday:${user.birthday}</h3>
<%--格式化日期--%>
<h3>bir:<fmt:formatDate value="${requestScope.user.birthday}" pattern="yyyy-MM-dd"/> </h3>
</body>
</html>
集合方式获取数据
对集合方式进行获取数据
package com.liuboss.filter;
import com.liuboss.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import sun.security.util.Password;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Controller
public class AttrController {
/*使用forward跳转页面数据传递
* 1.传递零散数据类型 2.传递对象 3.传递集合
*
* */
@RequestMapping("user01")
public String test(HttpServletRequest request, HttpServletResponse response){
//收集参数
//调用业务方法
String name = "永乐大帝";
User user = new User(1,"永乐大帝","123456",new Date());
request.setAttribute("user",user);
User user1 = new User(1,"朱棣","123456",new Date());
User user2 = new User(2,"朱元璋","123456",new Date());
User user3 = new User(3,"朱允炆","123456",new Date());
List<User> users = Arrays.asList(user1,user2,user3);
request.setAttribute("users",users);
request.setAttribute("username",name);
return "attr";
}
}
jsp中回去和集合数据的方式
重点 时间日期类进行格式化输出
<h3>bir:<fmt:formatDate value="${requestScope.user.birthday}" pattern="yyyy-MM-dd"/>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试参数接收</title>
</head>
<body>
<h1>测试对象和零散类型参数接收</h1>
<h2>获取request作用于数据:${requestScope.username}</h2>
<h3>获取request作用于数据:${username}</h3>
<hr color="red">
<h3>id:${requestScope.id}</h3>
<h3>id:${user.id}</h3>
<h3>id:${user.username}</h3>
<h3>password:${user.password}</h3>
<h3>birthday:${user.birthday}</h3>
<%--格式化日期--%>
<h3>bir:<fmt:formatDate value="${requestScope.user.birthday}" pattern="yyyy-MM-dd"/> </h3>
<%--遍历集合中的数据--%>
<c:forEach items="${requestScope.users}" var="user">
id:${user.id}=== ${user.username} ==== ${user.password} === <fmt:formatDate value="${requestScope.user.birthday}" /><br>
</c:forEach>
</body>
</html>
-------------------------------------------------------------------
其中request对象和model的用法功能完全相同 用那个都可以
request.setAttribute("username",name);
model.addAttribute("username", name);
package com.liuboss.filter;
import com.liuboss.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import sun.security.util.Password;
import javax.print.attribute.standard.JobOriginatingUserName;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Controller
public class AttrController {
/*使用forward跳转页面数据传递
* 1.传递零散数据类型 2.传递对象 3.传递集合
*
* */
@RequestMapping("user01")
public String test(Model model, HttpServletRequest request, HttpServletResponse response){
//收集参数
//调用业务方法
String name = "永乐大帝";
User user = new User(1,"永乐大帝","123456",new Date());
request.setAttribute("user",user);
User user1 = new User(1,"朱棣","123456",new Date());
User user2 = new User(2,"朱元璋","123456",new Date());
User user3 = new User(3,"朱允炆","123456",new Date());
List<User> users = Arrays.asList(user1,user2,user3);
request.setAttribute("users",users);
request.setAttribute("username",name);
model.addAttribute("username", name);
return "attr";
}
}
---redirect进行值的传递
//request作用域进行值的获取
@RequestMapping("user02")
public String test02() throws UnsupportedEncodingException {
//收集参数
//调用业务方法
String name = "永乐大帝";
//流程跳转
//解决中文乱码
return "redirect:/attr.jsp?name="+ URLEncoder.encode(name,"UTF-8");
}
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试参数接收</title>
</head>
<body>
<h1>测试对象和零散类型参数接收</h1>
<h2>获取request作用于数据:${requestScope.username}</h2>
<h3>获取request作用于数据:${username}</h3>
<hr color="red">
<h3>id:${requestScope.id}</h3>
<h3>id:${user.id}</h3>
<h3>id:${user.username}</h3>
<h3>password:${user.password}</h3>
<h3>birthday:${user.birthday}</h3>
<%--格式化日期--%>
<h3>bir:<fmt:formatDate value="${requestScope.user.birthday}" pattern="yyyy-MM-dd"/> </h3>
<%--遍历集合中的数据--%>
<c:forEach items="${requestScope.users}" var="user">
id:${user.id}=== ${user.username} ==== ${user.password} === <fmt:formatDate value="${requestScope.user.birthday}" /><br>
</c:forEach>
<hr class="red"/>
<h3>获取地址栏中的数据:${param.name}</h3>
</body>
</html>
---上面的方法只适合获取单个数值 当获取对象和多个数值传递时 用session对象进行数据的传递
request对象获取值的方法
@RequestMapping("user02")
public String test02(HttpServletRequest request) throws UnsupportedEncodingException {
//收集参数
//调用业务方法
String name = "永乐大帝";
//流程跳转
//解决中文乱码
User user1 = new User(1,"朱棣","123456",new Date());
request.getSession().setAttribute("user1",user1);
return "redirect:/attr.jsp?name="+ URLEncoder.encode(name,"UTF-8");
}
<h3>id:${user1.id}</h3>
<h3>username:${user1.username}</h3>
<h3>password:${user1.password}</h3>
<h3>birthday:${user1.birthday}</h3>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试参数接收</title>
</head>
<body>
<h1>测试对象和零散类型参数接收</h1>
<h2>获取request作用于数据:${requestScope.username}</h2>
<h3>获取request作用于数据:${username}</h3>
<hr color="red">
<h3>id:${requestScope.id}</h3>
<h3>id:${user.id}</h3>
<h3>id:${user.username}</h3>
<h3>password:${user.password}</h3>
<h3>birthday:${user.birthday}</h3>
<%--格式化日期--%>
<h3>bir:<fmt:formatDate value="${requestScope.user.birthday}" pattern="yyyy-MM-dd"/> </h3>
<%--遍历集合中的数据--%>
<c:forEach items="${requestScope.users}" var="user">
id:${user.id}=== ${user.username} ==== ${user.password} === <fmt:formatDate value="${requestScope.user.birthday}" /><br>
</c:forEach>
<hr class="red"/>
<h3>获取地址栏中的数据:${param.name}</h3>
<h3>id:${user1.id}</h3>
<h3>username:${user1.username}</h3>
<h3>password:${user1.password}</h3>
<h3>birthday:${user1.birthday}</h3>
</body>
</html>
springmvc初级知识完结