servlet001:cookie保存账号密码,用servlet在页面展示数据

本文介绍了Cookie的运作方式,如服务器会发送jsessionid等cookie,可用于保存账号密码。还阐述了JSP四大范围,包括pageContext、request、Session、application等。同时说明了Servlet快速起步的方法,指出JSP是为简化编程出现,Servlet与JSP分工明确,前者处理数据,后者显示数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Cookie.
    当一个客户端浏览器,第一次访问服务器端的web应用时,此时客户端没有带任何cookie给服务器,此时服务器会自动发送一个名字叫”jsessionid”的cookie给客户端,进而保存在客户端的硬盘上! 当浏览器第二次访问同一个web应用时,会自动带着这个cookie去访问服务器的!

Jsessionid这个cookie并没有保存在客户端硬盘上,而是保存在内存中,当浏览器关闭,则这个Jsessionid也就释放了空间。

除了jsessionid这个cookie, 服务器还可以发送其他cookie.
在这里插入图片描述
如果不设置cookie的存活时间,那么cookie就默认在内存里,浏览器关闭,cookie就消失

  • 在IE浏览器中查看缓冲的cookie
    Ie下C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Cookies
  • Cookie的运作方式,我们知道了,有啥用?
    Cookie可以存放客户端的帐号,密码,从而用户下次登录时,不用再次填写帐号密码了!就是保存账号密码。
 <body>
      <%
         Cookie cookie[]=request.getCookies();
         String username=null;
         String password=null;
         if(cookie!=null){
         for(Cookie c:cookie){
           if("username".equals(c.getName())){
           username=c.getValue();
           }else if("password".equals(c.getName())){
           password=c.getValue();
           }
         }
         }
       %>
       <form action="yan.jsp">
       username:<input name="username" value="<%=username==null?"":username%>" /><br>
       password:<input name="password" value="<%=password==null?"":password%>"/><br>
       <input <%=username==null?"":"checked" %> type="checkbox" name="save" value="save">记住账号密码<br>
       <button>登陆</button>
       </form>
       
  </body>

账号密码提交到验证段=端

 <body>
  	<%
   		String username = request.getParameter("username");
   		String password = request.getParameter("password");
   		String save = request.getParameter("save"); 		
   		
   		if(save != null) {
   			Cookie c1 = new Cookie("username", username);
   			Cookie c2 = new Cookie("password", password);
   			c1.setMaxAge(60*60*24*30); //单位是秒
   			c2.setMaxAge(60*60*24*30);
   			response.addCookie(c1);
   			response.addCookie(c2);
   		} else {
   			Cookie c1 = new Cookie("username", username);
   			Cookie c2 = new Cookie("password", password);
   			c1.setMaxAge(0);
   			c2.setMaxAge(0);
   			response.addCookie(c1);
   			response.addCookie(c2);
   		}
   	 %>
	   
	 欢迎<%=username %>登录
  </body>
  • Jsp四大范围
  • 1.pageContext页面范围
    setAttribute 设置属性
    getAttribute 在页面范围获取属性。
    findAttribute() * 重点。从小到大,依次在4个范围中寻找
<%
  		// pageContext.setAttribute("a", "书包");
  		// request.setAttribute("a", "钱包");
  		// session.setAttribute("a", "豆包");
  		application.setAttribute("a", "豆沙包");
  	 %>
  	 <%-- 从小到大,依次在4个范围中寻找! --%>
  	 <%=pageContext.findAttribute("a") %><br /> 

pageContext可以获取其他8个内置对象!

  • request对象:
    setAttribute
    getAttribute 是在请求范围中添加属性。
    如何延长请求范围到下一个jsp页面? 通过转发!
  • Session对象
    setAttribute
    getAttribute是在会话范围中添加属性。
 <body>
  	<%
  		// 会话的起始时间,单位是毫秒,自1970 1 1 0 0 0开始
  		long creationTime = session.getCreationTime();
  		// 上次访问会话时间,单位是毫秒,自1970 1 1 0 0 0开始
  		long last = session.getLastAccessedTime();
  		// 当前系统时间
  		long now = System.currentTimeMillis();
  		// 会话闲置时间
  		long lapse = now - last;
  		// 会话存活时间
  		long live = now - creationTime;
  	 %>
  	会话id: <%=session.getId() %><br />
  	会话是不是新会话: <%=session.isNew() %><br />
  	 会话开始于: <%= new Date(creationTime).toLocaleString() %><br />
  	 上次访问会话:<%= new Date(last).toLocaleString() %><br />
  	 当前系统时间:<%= new Date(now).toLocaleString() %><br />
  	 会话闲置时间:<%= lapse / 1000.0 %>秒<br />
  	 会话存活时间: <%= live / 1000.0 /60 %>分钟<br />	 
  	 销毁会话
  	 <%
  	  session.invalidate(); 
  	 %>
  </body>

我们一般说会话结束了是关闭浏览器让会话结束,但是服务器端依然保留着会话cookie,这样别人可以通过拼接地址栏访问你的页面,所以这样不安全,销毁会话就是销毁服务器端的cookie。也就是我们常说的安全退出

会话追踪的4种方式
转发
Cookie
Session
拼接url地址

  • application.
    setAttribute
    getAttribute是在服务器范围中添加属性。Application中的数据是被所有用户共享的!
  • 在web.xml中配置了 web应用的参数
    在这里插入图片描述
    在web.xml中配置了参数后,要重启服务,然后通过下面方式获取对应的数据
           <%=application.getInitParameter("123") %>
           <%=application.getInitParameter("456") %>
           <%=application.getInitParameter("789") %>
  • Application也能获取web应用在服务器端电脑上的真实路径
 <%String str=request.getRealPath("/");
             String str1=application.getRealPath("/");
             %>
             <%=str %><br>
              <%=str1 %>

Page:
其实就是this,代表当前servlet对象
config:
可以用它,获取servlet的配置信息。

  • Servlet快速起步
    其实jsp就是servlet,写的jsp最终被翻译为java源文件,又被编译为class字节码文件。这个字节码就是servlet.

Jsp的出现,是为了简化编程的难度,最早,是没有jsp的,只有servlet,开发人员发现,用servlet给客户端响应一个页面,太麻烦,太复杂,太不适合了!所以后来就把jsp和servlet分开来,jsp做数据展示,servlet做数据传递

  • 制作一个servlet:
    其实servlet就是一个java类,只不过这个类继承了GenericServlet。
    在这里插入图片描述
    写完这个类之后,还要在web.xml中配置该servlet,配置之后需要重启服务。
 <servlet>
   <servlet-name>ServletDemo</servlet-name>//这个名字随便起
   <servlet-class>com.z.zoo.ServletDemo</servlet-class>//这个类名一定要带包
   </servlet>
    <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>//和上面一样
     <url-pattern>/ServletDemo</url-pattern>//按照这个路径访问
   </servlet-mapping>

访问时,要用url-pattern访问。

http://localhost:8080/Server/ServletDemo

当客户端第一次请求servlet时,servlet诞生,一旦诞生,就立刻调用init完成初始化。
一直驻留在内存中,以供响应其他的请求,每次请求该servlet时,都会调用service方法。
直到卸载web应用时,就会调用servlet的destroy方法。

  • 现在,别在servlet中调用System.out了,而是给请求他的客户端响应html代码!
    在这里插入图片描述
    问题来了,既然servlet响应页面这么麻烦,那么干脆只使用jsp得了,大家都别用servlet了 !

Servlet的地位不可取代,经过长期的发展,人们渐渐发现,servlet适合处理数据,而jsp适合显示数据,由此,分工明确:
1、jsp专门负责收集用户数据(表单),负责显示数据(div+css美化页面)
2、Servlet专门负责处理数据,并把处理好的数据给jsp,让jsp去显示。(通过转发的方式。)

  • 案例:servlet收集数据,jsp处理数据,在页面上显示
    1,先做一个javabean,列出数据
    在这里插入图片描述
    2,写servlet
    在这里插入图片描述
    3,在xml里面配参数
    在这里插入图片描述
    4,写jsp:
    在这里插入图片描述
    5,效果:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值