Session是服務(wù)器端技術(shù),但是許多小伙伴們都對Session不是非常的了解,那么我們現(xiàn)在就去看看servlet中session的簡介和使用,想了解的朋友們就跟隨錯(cuò)新小編一起看看吧。
HttpServletRequest有兩個(gè)重載的getSession()方法,一個(gè)接受一個(gè)boolean的類型的值,另一個(gè)不帶任何參數(shù),getSession()方法和getSession(true)方法功能一樣,就是如果對應(yīng)的客戶端已經(jīng)產(chǎn)生過一個(gè)session,那么就會(huì)返回這個(gè)舊的session,否則,這個(gè)方法將會(huì)產(chǎn)生一個(gè)session ID并且和對應(yīng)的客戶端綁定在一起,而如果getSession(false)表示如果對應(yīng)的客戶端已經(jīng)有對應(yīng)的session,那么返回這個(gè)舊的session,否則不會(huì)產(chǎn)生新的session。可以使用HttpSession對象上的isNow()方法來判定這個(gè)session是否為新建的
HttpSession常用方法
public void setAttribute(String name,Object value)
將value對象以name名稱綁定到會(huì)話
public object getAttribute(String name)
取得name的屬性值,如果屬性不存在則返回null
public void removeAttribute(String name)
從會(huì)話中刪除name屬性,如果不存在不會(huì)執(zhí)行,也不會(huì)拋處錯(cuò)誤.
public Enumeration getAttributeNames()
返回和會(huì)話有關(guān)的枚舉值
public void invalidate()
使會(huì)話失效,同時(shí)刪除屬性對象
public Boolean isNew()
用于檢測當(dāng)前客戶是否為新的會(huì)話
public long getCreationTime()
返回會(huì)話創(chuàng)建時(shí)間
public long getLastAccessedTime()
返回在會(huì)話時(shí)間內(nèi)web容器接收到客戶最后發(fā)出的請求的時(shí)間
public int getMaxInactiveInterval()
返回在會(huì)話期間內(nèi)客戶請求的最長時(shí)間為秒
public void setMaxInactiveInterval(int seconds)
允許客戶客戶請求的最長時(shí)間
ServletContext getServletContext()
返回當(dāng)前會(huì)話的上下文環(huán)境,ServletContext對象可以使Servlet與web容器進(jìn)行通信
public String getId()
返回會(huì)話期間的識別號
一個(gè)保存信息到session的簡單例子
sessionlogin.html
復(fù)制代碼 代碼如下:
?
<meta name="keywords" content="keyword1,keyword2,keyword3" />
<meta name="description" content="this is my page" />
<meta name="content-type" content="text/html; charset=UTF-8" />
?<!--??? <link rel="stylesheet" type="text/css" href="./styles.css">--></pre>
<form action="servlet/saveinfo" method="post">
?用戶名:
?<input type="text" name="username" /> <input type="submit" />
?密碼:
?<input type="password" name="userpasswd" />
?</form>
<pre>
</pre>
</div>
<div>
?
?
復(fù)制代碼 代碼如下:
package chap03;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class saveinfo extends HttpServlet {
/**
?* Constructor of the object.
?*/
?public saveinfo() {
?super();
?}
/**
?* Destruction of the servlet.
?*/
?public void destroy() {
?super.destroy(); // Just puts "destroy" string in log
?// Put your code here
?}
/**
?* The doGet method of the servlet.
?*
?* This method is called when a form has its tag value method equals to get.
?*
?* @param request the request send by the client to the server
?* @param response the response send by the server to the client
?* @throws ServletException if an error occurred
?* @throws IOException if an error occurred
?*/
?public void doGet(HttpServletRequest request, HttpServletResponse response)
?throws ServletException, IOException {
?//如果用戶輸入過了用戶名 則將其放在session中
?if(request.getParameter("username")!=null);
?{
?HttpSession session = request.getSession();
?session.setAttribute("username",request.getParameter("username"));
?}
?response.setContentType("text/html;charset=GBK");
?PrintWriter out = response.getWriter();
?out.println("session已經(jīng)創(chuàng)建");
?out.println("
");
?out.println("跳轉(zhuǎn)到其他<a>頁面</a>");
?}
/**
?* The doPost method of the servlet.
?*
?* This method is called when a form has its tag value method equals to post.
?*
?* @param request the request send by the client to the server
?* @param response the response send by the server to the client
?* @throws ServletException if an error occurred
?* @throws IOException if an error occurred
?*/
?public void doPost(HttpServletRequest request, HttpServletResponse response)
?throws ServletException, IOException {
?doGet(request,response);
?}
/**
?* Initialization of the servlet.
?*
?* @throws ServletException if an error occurs
?*/
?public void init() throws ServletException {
?// Put your code here
?}
}</pre>
</div>
<div>
?
?
復(fù)制代碼 代碼如下:
package chap03;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class getsession extends HttpServlet {
/**
?* Constructor of the object.
?*/
?public getsession() {
?super();
?}
/**
?* Destruction of the servlet.
?*/
?public void destroy() {
?super.destroy(); // Just puts "destroy" string in log
?// Put your code here
?}
/**
?* The doGet method of the servlet.
?*
?* This method is called when a form has its tag value method equals to get.
?*
?* @param request the request send by the client to the server
?* @param response the response send by the server to the client
?* @throws ServletException if an error occurred
?* @throws IOException if an error occurred
?*/
?public void doGet(HttpServletRequest request, HttpServletResponse response)
?throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
?PrintWriter out = response.getWriter();
?String username = "";
?//此處不是創(chuàng)建session 而是去取已經(jīng)創(chuàng)建的session
?HttpSession session = request.getSession();
?//如果已經(jīng)取到,說明已經(jīng)登錄
?if(session!=null)
?{
?username = (String)session.getAttribute("username");
?out.println("獲得創(chuàng)建的Session");
?out.println("
");
?out.println("登錄名:"+username);
?}
?else
?{
?response.sendRedirect("../sessionlogin.html");
?}
?}
/**
?* The doPost method of the servlet.
?*
?* This method is called when a form has its tag value method equals to post.
?*
?* @param request the request send by the client to the server
?* @param response the response send by the server to the client
?* @throws ServletException if an error occurred
?* @throws IOException if an error occurred
?*/
?public void doPost(HttpServletRequest request, HttpServletResponse response)
?throws ServletException, IOException {
?doGet(request,response);
?}
/**
?* Initialization of the servlet.
?*
?* @throws ServletException if an error occurs
?*/
?public void init() throws ServletException {
?// Put your code here
?}
}</pre>
</div>
<div></div>
<div>
以上就是servlet中session的簡介和使用,看完后你都了解了嗎?希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助