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