HttpSession使用
首先:新建一个Servlet,名为:UserHttpSession.java 内容为:
//使用HttpServletRequest对象从客户端获取数据
String name = request.getParameter("name");
String age = request.getParameter("age");
String phonenum = request.getParameter("phonenum");
String address = request.getParameter("address");
String othermessage = request.getParameter("othermessage");
//获取HttpSession对象
HttpSession session = request.getSession();
//用获取的值设置session属性
session.setAttribute("sesname",name);
session.setAttribute("sesage",age);
session.setAttribute("sesphonenum",phonenum);
session.setAttribute("sesaddress", address);
session.setAttribute("sesothermessage",othermessage);
out.println("<html>");
out.println("<head>");
out.println("<titile>使用HttpSession</title>");
out.println("</head>");
out.println("</head>");
out.println("<body>");
out.println("<h3>已经将数据保存在HttpSession中</h3>");
out.println("<h3>可以在其他页面中访问这些数据</h3>");
out.println("<a href=/"ShowSessionInfo.jsp/">查看会话信息</a>");
out.println("</body>");
out.println("</html>");
其中web.xml内容为:
<servlet>
<servlet-name>UseHttpsession</servlet-name>
<servlet-class>com.netbeans.web.UseHttpSession</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UseHttpsession</servlet-name>
<url-pattern>/UseHttpSession</url-pattern>
</servlet-mapping>
1、 在web中新建一个html页面,是负责输入数据的页面createinfo.html:
<html>
<head>
<title>该页面用来向表单提供数据</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="UseHttpSession" name="myform" method="post">
姓名:<input type="text" name="name"><br>
年龄:<input type="text" name="age"><br>
住址:<input type="text" name="address"><br>
电话号码:<input type="text" name="phonenum"><br>
备注信息:<br>
<textarea name="othermessage" rows="4" cols="30"></textarea>
<input type="submit" value="确定">
</form>
</body>
</html>
2、 在web创建一个jsp文件,用于接收html页面传来的数据,
这个jsp文件名:ShowSessionInfo.jsp
<%@page contentType="text/html" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<h2>以下是从seesion中获取的信息</h2>
<h3><%
//获取sesname属性的值
String name=(String)session.getAttribute("sesname");
//获取sesage属性的值
String age = (String)session.getAttribute("sesage");
//获取sesphonenum属性的值
String phonenum = (String)session.getAttribute("sesphonenum");
//获取sesaddress属性的值
String address = (String)session.getAttribute("sesaddress");
//获取sesothermessage属性的值
String othermessage =(String)session.getAttribute("sesothermessage");
out.println("<br>姓名:"+name);
out.println("<br>年龄:"+age);
out.println("<br>地址"+address);
out.println("<br>电话"+phonenum);
out.println("<br>备注信息"+othermessage);
%>
</h3>
值得说明的是:其实,在html输入的数据是直接传到了Servlet中去(即上面那个java类中),然后,数据被保存在这里面,随时都可以使用,但是,因为Session的特性(会随着页面的关闭而关闭Session,即关闭了传来的数据,所以,当我们html输入数据后传到了Servlet中后,如果关闭了,则在jsp文件中是无法获得刚才的数据的。所以不能关闭,或者是在Servlet中有个连接到这个jsp文件,这样,可以通过连接到这个jsp文件,也就可以获取到数据)
Session随着页面的关闭,数据也就无法再传输了。于cookies的区别,是,
运行结果为:
Html文件的内容:
然后,我们所写的Servlet可以获取这些信息并保存起来,
可以在查看会话信息活的下面的jsp页面信息,也可以,接着在NetBeans中打开jsp页面,且保证不把上述的页面关闭。
附Session与cookie的区别:
session是放在服务器上的,过期与否取决于服务器的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去。
1、cookie数据存放在客户的浏览器上,
session数据放在服务器上
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE
4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
5、300个的限制我没听说
6、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
另外一个小技巧,一般,如果我们在文本框中写了数据后,有时候发现是可以双击文本框,下方会有之前输入的内容,其实,这是对浏览器的设置,在浏览器的菜单—》工具—》IE选项—》选中“内容”—》选择自动完成—》打开后,可以选中表单,这样就可以设置完成