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 ();
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