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
