Java servlets HttpSession示例

web.xml:

<web-app>
    <servlet>
        <servlet-name>s1</servlet-name>
        <servlet-class>FirstServ</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>s2</servlet-name>
        <servlet-class>SecondServ</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>s3</servlet-name>
        <servlet-class>FinalServ</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>s1</servlet-name>
        <url-pattern>/test1</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>s2</servlet-name>
        <url-pattern>/test2</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>s3</servlet-name>
        <url-pattern>/test3</url-pattern>
    </servlet-mapping>
</web-app>

personal.html:

<html>
    <title>Complete example</title>
    <body>
    <center>
        <form name="ex" action="./test1" method="post">
            <table border="1">
                <tr>
                    <th align="left">Enter ur name : </th>
                    <td><input type="text" name="ex_name" value=""></td>
                </tr>
                <tr>
                    <th align="left">Enter ur address : </th>
                    <td><textarea name="ex_add" value=""></textarea></td>
                </tr>
                <tr>
                    <th align="left">Enter ur age : </th>
                    <td><input type="text" name="ex_age" value=""></td>
                </tr>
                <tr>
                <table>
                    <tr>
                        <td align="center"><input type="submit" name="ex_continue" value="Continue"></td>
                    </tr>
                </table>
                </tr>
            </table>
        </form>
    </center>
    </body>
</html>

databaseTable(信息):

create table info (
name varchar2 (13),
addr varchar2 (33),
age number (2),
exp number (2),
skills varchar2 (13),
sal number (7,2),
loc varchar2 (17)
);
/

firstserv.java:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FirstServ extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter pw = res.getWriter();
        String name1 = req.getParameter("ex_name");
        String address1 = req.getParameter("ex_add");
        String age1 = req.getParameter("ex_age");
        HttpSession hs = req.getSession(true);
        hs.putValue("namehs", name1); //we can also use setAttribute
        hs.putValue("addresshs", address1); //we can also use setAttribute
        hs.putValue("agehs", age1);
        pw.println("<html><title>First Servlet</title><body bgcolor=\"green\"><center>");
        pw.println("<form name=\"first\" action=\"./test2\" method=\"post\"><table bgcolor=\"lightblue\">");
        pw.println("<tr><th>Enter   ur   experience   :   </th><td><input   type=\"text\"   name=\"first_exp\"value=\"\">");
        pw.println("</td></tr><tr><th>Enter  ur  skills  :  </th><td><input  type=\"text\"  name=\"first_skills\" value=\"\">");
        pw.println("</td></tr><table><tr><td  align=\"center\"><input type=\"submit\" name=\"first_submit\"value=\"Continue\">");
        pw.println("</td></tr></table></table></form></center></body></html>");
    }
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        doGet(req, res);
    }
};

ColeServ.java:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SecondServ extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter pw = res.getWriter();
        String exp1 = req.getParameter("first_exp");
        String skills1 = req.getParameter("first_skills");
        HttpSession hs = req.getSession(false);
        hs.putValue("exphs", exp1); //we can also use setAttribute
        hs.putValue ("skillshs",skills1); //we can also use setAttribute 
        pw.println ("<html><title>Second Servlet</title><body bgcolor=\"green\"><center>");
        pw.println("<form	name=\"second\"	action=\"./test3\"	method=\"post\"><table bgcolor=\"lightblue\">");
        pw.println("<tr><th>Enter  expected  salary  :  </th><td><input  type=\"text\"  name=\"second_sal\"value=\"\">");
        pw.println("</td></tr><tr><th>Enter	preffered	location	:	</th><td><input	type=\"text\"name=\"second_loc\" value=\"\">");
        pw.println("</td></tr><table><tr><td	align=\"center\"><input	type=\"submit\" name=\"second_submit\" value=\"Submit\">");
        pw.println("</td></tr></table></table></form></center></body></html>");
    }
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        doGet(req, res);
    }
};

finalserv.java:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;
public class FinalServ extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter pw = res.getWriter();
        String sal1 = req.getParameter("second_sal");
        float salary = Float.parseFloat(sal1);
        String location = req.getParameter("second_loc");
        HttpSession hs = req.getSession(false);
        String name = (String) hs.getAttribute("namehs");
        String address = (String) hs.getAttribute("addresshs");
        String age1 = (String) hs.getAttribute("agehs");
        int age = Integer.parseInt(age1);
        String exp = (String) hs.getAttribute("exphs");
        int experiance = Integer.parseInt(exp);
        String skills = (String) hs.getAttribute("skillshs");
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Hanuman", "scott", "tiger");
            PreparedStatement ps = con.prepareStatement("insert into info values (?,?,?,?,?,?,?)");
            ps.setString(1, name);
            ps.setString(2, address);
            ps.setInt(3, age);
            ps.setInt(4, experiance);
            ps.setString(5, skills);
            ps.setFloat(6, salary);
            ps.setString(7, location);
            int j = ps.executeUpdate();
            if (j > 0) {
                pw.println("<html><body bgcolor=\"lightblue\"><center><h1><font color=\"red\"> Successfully ");
                pw.println("Inserted</font></h1></center><a  href=\"personal.html\">Home</a></body></html>");
            } else {
                pw.println("<html><body bgcolor=\"cyan\"><center><h1><font color=\"red\">Try Again");
                pw.println("</font></h1></center><a  href=\"personal.html\">Home</a></body></html>");
            }
        } catch (Exception e) {
            pw.println("<html><body bgcolor=\"cyan\"><center><h1><font color=\"red\">Try Again");
            pw.println("</font></h1></center><a href=\"personal.html\">Home</a></body></html>");
        }
    }
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        doGet(req, res);
    }
};

httpsession中的其他方法:

  • public void setmaxinactiveIterval(long sec):在大多数流行的中,客户的身份将保持30分钟的时间。当第一个请求和第二请求之间的时间间隔时,如果对另一个请求的一个请求之间的时间延迟为30分钟,则自动将消除客户端的身份。为了设置自己的会话时间或者最大会话活动时间,我们使用此方法。在此方法中,我们在几秒钟内指定会话活动时间。例如:
hs.setMaxInactiveInterval (60*60);
  • public boolean isNew():当新近创建会话时,此方法返回true否则返回旧会话的false。例如:
boolean b=hs.isNew ();
  • public void removeattribute(string):此方法用于删除一个会话属性名称以及其值。例如:
hs.removeAttribute ("address");
  • publicEnumerationgetAttributeNames():此方法用于获取所有会话变量名称。例如:
Enumeration en=hs.getAttributeNames ();
While (en.hasMoreElements ())
{
    Object kname=en.nextElement (); 
    String key= (String) kname;
    Object val=req.getAttribute (key);
}
  • public void invalidate():此方法用于永久性地使客户端的标识无效,即,将完全删除会话对象的所有值。例如:
hs.invalidate ();
  • publiclonggetlastaccessTime():此方法用于获取上次访问时间。例如:
long t=hs.getLastAccessTime ();
  • public long getId():此方法用于获取由servlet容器创建的客户端的会话ID。例如:
long sid=hs.getId ();
http会话

Httpsession是一个会话管理技术,它在网络上维护客户端的一个身份,以便在网络中进行"n"的要求,以获得"n"响应的响应数。
在会议期间,所有请求和答复都是连续的。

httpsession的优点:

  • 没有限制httpsessepte对象的大小。由于,单个对象可以保持与客户端标识相关的不同类型的值。
  • 网络流量流量非常少。由于,只有会话ID在客户端和服务器之间交换。
  • 客户端既不存在httpsession的对象不存在于服务器上。

开发HTTPSession应用程序的步骤:

  • 获取javax.servlet.http.htpsession接口的对象。为了获取httpsession的对象,我们必须使用httpservletrequest中存在的以下两种方法

例如:

HttpSession hs=req.getSession ();
HttpSession hs=req.getSession (true);

当我们使用方法-II时,布尔值可以是真或者假:
情况1:未创建的会话和布尔值为true。会议将新建创建。例如:

HttpSession hs=req.getSession (true);

情况2:未创建的会话和布尔值为false。会议根本不会创建。例如:

HttpSession hs=req.getSession (false);

情况3:已创建的会话和布尔值为true。现有或者旧会议将继续进行检查。

HttpSession hs=req.getSession (true);

情况4:已创建的会话和布尔值为false。未经任何检查,将继续存在或者旧会议。例如:

HttpSession hs=req.getSession (false);
  • 使用Httpsession中存在的以下方法将值放入Httpsesseapty对象中:

其中字符串表示会话变量名称称为key和对象表示会话值。在httpsession对象中,数据以(键,值)对的形式组织。例如:HS.putValue("名称","Kalyan"); hs.setAttribute("地址",S2);

  • 通过使用httpsession中存在的以下方法获取httpsession对象的值:

例如:

Object obj1=hs.getAttribute ("name"); 
Object obj2=hs.getValue ("address");
日期:2020-04-11 23:04:22 来源:oir作者:oir