参考资料
⏹配置文件
server:servlet:context-path: /jmw
⏹form
import lombok.Data;import java.math.BigDecimal;
import java.util.Date;
import java.util.List;@Data
public class Test16Form {private String name;private String sex;private Date birthday;private BigDecimal money;private List tableList;
}
⏹进入页面的url
http://localhost:8080/jmw/test16/init?name=贾飞天&age=18
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;@Controller
@RequestMapping("/test16")
public class Test16Controller {// 注入request对象@Resourceprivate HttpServletRequest request;@GetMapping("/init")public ModelAndView init() {// ⏹获取项目根路径String contextPath = request.getContextPath();System.out.println(contextPath); // /jmw// ⏹将?key1=value1&key2=value2 转换为 mapMap parameterMap = request.getParameterMap();for (Map.Entry entry : parameterMap.entrySet()) {System.out.println(entry.getKey());System.out.println(Arrays.toString(entry.getValue()));}/*name[贾飞天]age[18]*/// ⏹获取name参数所对应的valueString name = request.getParameter("name");System.out.println(name); // 贾飞天// 👉将map存入request的Attribute中HashMap map1 = new HashMap<>();map1.put("address", "地球");map1.put("hobby", "睡觉");request.setAttribute("info", map1);// 👉将entity存入request的Attribute中Test16Form test16Form = new Test16Form();test16Form.setName("贾飞天");test16Form.setSex("男");request.setAttribute("entity", test16Form);// 返回到页面中ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("test16");return modelAndView;}
}
⏹test16.html
Title
当前一共有[[${param.size()}]]个参数分别为: [[${param.name}]] 和 [[${param.age}]]
👉渲染之后
当前一共有2个参数
分别为: 贾飞天 和 18
🧐🧐🧐以下所有的JS代码必须包裹在内联标签中
⏹获取url传参的所有参数
const paramMap = [[${#request.getParameterMap()}]];
console.log(paramMap);
/*{"name": ["贾飞天"],"age": ["18"]}
*/
⏹获取指定的参数
const paramName = [[${#request.getParameter('name')}]];
console.log(paramName); // 贾飞天
⏹param是一个由Thymeleaf
提供的对象,用于存放url传参的所有参数
相当于#request.getParameterMap()
,可以理解为简写形式
const param = [[${param}]];
console.log(param);
/*{"name": ["贾飞天"],"age": ["18"]}
*/
// 👉相当于 #request.getParameter('name')
const name = [[${param.name}]];
console.log(name); // 贾飞天// 👉由于没有hobby,所以渲染完之后为 null,又因为 ?? 表达式,所以最后结果为 吃饭
const hobby = [[${param.hobby}]] ?? '吃饭';
console.log(hobby); // 吃饭
⏹获取设置的项目根路径
const contextPath1 = [[${#request.getContextPath()}]];
console.log(contextPath1); // /jmw// 👉#httpServletRequest和#request等效
const contextPath2 = [[${#httpServletRequest.getContextPath()}]];
console.log(contextPath2); // /jmw
⏹获取请求时,设置的Attribute值
const info = [[${#request.getAttribute('info')}]];
console.log(info);
// {address: "地球", hobby: "睡觉"}const entity = [[${#request.getAttribute('entity')}]];
console.log(entity);
// {name: "贾飞天", sex: "男", birthday: null, money: null, tableList: null}
😵之前的做法,需要将变量先存入页面的隐藏域中,然后使用js获取隐藏域的值
🧐现在可以这么做,直接将后台的数据封装为一个全局参数对象