初學JavaWeb-利用session登陸以及資料讀取
今天想做這麼一個功能,當用戶A登陸時候,顯示A內容。當用戶B登陸時,顯示B內容。於是又學到了點新知識。
session物件:
session 物件是由伺服器自動建立的與使用者請求相關的物件。伺服器為每個使用者都生成一個session物件,用於儲存該使用者的資訊,跟蹤使用者的操作狀態。session物件內部使用Map類來儲存資料,因此儲存資料的格式為 “Key/value”。
session物件的value可以使複雜的物件型別,而不僅僅侷限於字串型別。
前端程式碼:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <html> <head> <title>mmp</title> <script src="../static/js/jquery-3.3.1.min.js"></script> </head> <body> //利用session進行登陸和登出 <form id="Login_form"> <input placeholder="請輸入使用者名稱" name="user" id="user" type="text"> <input placeholder="請輸入密碼" name="password" id="password" type="password" maxlength="8"> <a id="Login_form_btn" href="javascript:void(0);">login</a> <a id="Login_exit_btn" href="javascript:void(0);">exit</a> </form> //JSTL以及EL表示式 <c:if test="${login eq 1}"> ${username}請看這裡 </c:if> <script> //退出方法 $('#Login_exit_btn').click(function () { $.ajax({ url:'/demo4/demo/exit', success:function (data) { alert("退出成功"); window.location.href="/demo4/demo/index"; } }) }) //登陸方法 $('#Login_form_btn').click(function () { $.ajax({ url:'/demo4/demo/login', data:$('#Login_form').serialize(), success:function (data) { if(data=="success"){ alert("登陸成功"); }else{ alert("登陸失敗"); } window.location.href="/demo4/demo/index"; } }) }) </script> </body> </html>
後端程式碼:
package com.xudan.demo4.controller; import com.xudan.demo4.mapper.UserMapper; import com.xudan.demo4.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.HttpRequestHandlerServlet; import org.springframework.web.servlet.support.RequestContextUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.security.Signature; import java.util.List; import java.util.UUID; @Controller @RequestMapping("/demo") //控制器對映 public class DemoController { @Autowired //自動裝配 private UserMapper userMapper; //重定向指向的方法,用來進行跳轉到INF內的index.jsp @RequestMapping("index") public String index(Model model) { List<User> userList = userMapper.selectAll(new User()); model.addAttribute("userList", userList); return "index"; } @RequestMapping("exit") @ResponseBody public String exit(HttpServletRequest request){ request.getSession().removeAttribute("login"); request.getSession().removeAttribute("username"); return "success"; } @RequestMapping("login") @ResponseBody public String login(User user,HttpServletRequest request){ String username = user.getUser(); String password = user.getPassword(); if(username==null || username.equals("") || password==null || password.equals("")){ return "fail"; } if(userMapper.selectAll(user).size()>0){ request.getSession().setAttribute("login","1"); request.getSession().setAttribute("username",username); return "success"; }else { request.getSession().setAttribute("login","0"); return "fail"; } } }
所學到的幾個新知識:
(一)HttpServletRequest
HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,HTTP請求頭中的所有資訊都封裝在這個物件中,通過這個物件提供的方法,可以獲得客戶端請求的所有資訊。
(二)request.getSession().setAttribute
getSession()是返回當前使用者的會話物件。
而serAttribute就是往session作用域中存值.
setAttribute(key,value.) key代表變數名稱,value代表具體的值
(三)EL表示式
${username}
通過上面的例子我們可以知道,EL表示式的語法非常簡單,它以”${”開頭,以”}”結束,中間為合法的表示式,具體的語法格式為:
${expression}
expression用於指定要輸出的內容,可以使字串,也可以是由EL運算子組成的表示式。
備註:包括之前的查詢,${userList}也是EL表示式 前端中的eq代表== 而ne代表!= 還有具體其它的下次去系統學習一次。
(四)request.getSession().removeAttribute()