1.在HTML的index.html页面中,添加ajax方法,让其进入页面就向后台发送请求,获取session中name
<script type="text/javascript" src="/jquery-3.3.1.min.js"></script> <script type="text/javascript"> //当页面一加载时就向后台发送post请求 $(function(){ $.post("../user/getusername",function(obj){ $("#roleName").html(obj+"欢迎你"); },"text") }); </script> <body> <h1></h1> <h1>hello,springBoot!</h1> <span id="roleName"></span><br> </body> </html>
2在后台使用springboot框架或ssm,使用@ResponseBody标签使其返回值不是转发或者重定向,而是向页面发送字符串,这个字符串可以是json格式或者是普通的text格式,只要和ajax的获取格式相同即可
也可以使用objectMapper.writeValue向前台转发json数据,这样不需要返回值
@RequestMapping("/getusername") @ResponseBody public String getUsername(HttpServletRequest request, HttpServletResponse response)throws Exception{ //先从session中获取到之前存在session中的用户信息,然后通过ObjectMapper输出返回一个json数据给html页面,由页面去解析这个json数据 String name =(String)request.getSession().getAttribute("user"); //1.第一种方法,objectMapper.writeValue自动将数据格式转换为Json然后自动将Jason转发到浏览器,使用ajax进行局部刷新获取name,格式为json // if(name!=null){ // ObjectMapper objectMapper=new ObjectMapper(); // objectMapper.writeValue(response.getOutputStream(),name); // } //2.第二种方法,直接使用@ResponseBody+字符串,将字符串直接转发到浏览器,使用ajax进行局部刷新获取name,格式为text return name; }
3.当然,上述前提都是需要在登录时绑定session
@Autowired UserService sercice; @RequestMapping("/tologin") @ResponseBody public ResponseResult tologin(String name,String password,HttpSession session) { ResponseResult rs = new ResponseResult(); sercice.login(name, password); rs.setState(1); session.setAttribute("user", name); return rs; }