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; }