jsp java session_Session技术 、jsp页面

summarize

session就是专门存服务器的 一个客户端一个区域,Http一共三个域,session能存中文,cookie不能存中文

学习session 主要考虑三个问题 :1 怎样获得 2.怎样存取 session对象(内存区域) 3.session对象生命周期

客户端端不同 JSESSIONID就不同,一个客户端只能存在一个session,清理了缓存后,JSESSIONID会从新导入

创建和访问session的顺序是 先设置 在获取,当关闭客户端后,在访问,就获取不到了,显示空指针

session持久化:跟Cookie一样:从新建一个设置时间的session头 覆盖原来的session

JSP:它本身就是一个Servlet。第一行

51c355bb3608d9a5896e350f70fcbb6b.png

jsp有三大指令:① page(最常用) ② include(一个页面包含另一个页面) ③ taglib 搭配jstl标签使用

language:声明jsp只能嵌套 java语言。contenType:解决response中文乱码,pageEncoding:当前jsp页面的中文乱码。属性session:默认true

原理图

9eb535e855f2395532877b50f4e5a39c.png

1.获得Session对象

HttpSession session = request.getSession();

此方法会获得专属于当前会话的Session对象,如果服务器端没有该会话的Session    对象会创建一个新的Session返回,如果已经有了属于该会话的Session直接将已有的Session返回(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在    session了)

2.向session存取数据(session也是一个域对象)

三个方法:

session.setAttribute(String name,Object obj);

session.getAttribute(String name);

session.removeAttribute(String name);

packagecom.oracle.demo01;//创建Session向里面存数据

importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;public class SessionServlet extendsHttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//获取Session对象

HttpSession session=request.getSession();//向session域中存储数据

session.setAttribute("goods","奶瓶");//获取JSESSIONID

String id=session.getId();//创建Cookie

Cookie cookie=new Cookie("JSESSIONID",id);

cookie.setPath("/WEB08");

cookie.setMaxAge(60);//设置持久化时间//发送Cookie

response.addCookie(cookie);

response.getWriter().write("JSESSIONID:"+id);

}public void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

doGet(request, response);

}

}---------------------------------------------

packagecom.oracle.demo01;//获取Session对象的内容

importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;public class Servlet02 extendsHttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//获取Session对象

HttpSession session=request.getSession();//这里获取的是内存里的session//获取session中的内容 这里getattribute得到obj 需要向下转型(强转)

String goods=(String)session.getAttribute("goods");//解决乱码

response.setContentType("text/html;charset=utf-8");

response.getWriter().write(goods);

}public void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

doGet(request, response);

}

}

获取session内容的原理是,先打开已经设置好的session,然后在获取,当客户端关闭后,session的值就消失,因为

3f18f47d526fb16bb41fc6ee8cb26d47.png 获取的内容已关闭,空指针无法强转  只会显示空指针

3.Session对象的生命周期(面试题/笔试题)

创建:第一次执行request.getSession()时创建

销毁:

1)服务器(非正常)关闭时

2)session过期/失效(默认30分钟)

问题:时间的起算点 从何时开始计算30分钟?

从不操作服务器端的资源开始计时

可以在工程的web.xml中进行配置

30

3)手动销毁session

session.invalidate();

设置登录验证码

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7

会员登录

8

9

10

11

12

13

14

15 body {16 margin-top: 20px;17 margin: 0auto;18 }19

20 .carousel-inner .item img {21 width: 100%;22 height: 300px;23 }24

25 .container .row div {26 /*position:relative;27 float:left;*/

28

29 }30

31 font {32 color: #666;33 font-size: 22px;34 font-weight: normal;35 padding-right: 17px;36 }37

38

39 function change(node){ /*node是 自定义*/

40 node.src="/Shop/CheckImgServlet?time="+newDate().getTime();41 }42

43

44

45

46

47

48

49

50

51 style="width: 100%; height: 460px; background: #FF2C4C url('images/loginbg.jpg') no-repeat;">

52

53

54

55

56

57

58

60 会员登录USER LOGIN61

62

63

64

65 用户名

66

67

68 placeholder="请输入用户名" name="username">

69

70

71

72 密码

73

74

75 placeholder="请输入密码" name="password">

76

77

78

79 验证码

80

81

82 placeholder="请输入验证码" name="checkcode">

83

84

85 CheckImgServlet

86

87

88

89

90

91 自动登录92       记住用户名94

95

96

97

98

99

100

101 style="background: url('./images/login.gif') no-repeat scroll 0 0 rgba(0, 0, 0, 0); height: 35px; width: 100px; color: white;">

102

103

104

105

106

107

108

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值