JavaWeb(二)

Cookie、Session

Cookie和Session都是为了克服HTTP协议无状态的缺陷而诞生的技术,它们主要用于保存用户的状态信息。

  1. Cookie:Cookie是服务器发送到用户浏览器并保存在本地的一小块数据(可以保存多个),下次访问同一站点时,浏览器会将该数据发送回服务器。通过这种方式,服务器能够记住不同用户之间的状态。例如,当你登录一个网站,服务器会将你的用户ID和密码存储在cookie中,下一次打开这个网站时,服务器就能够辨认出你。
  2. Session:Session的工作机制是在服务器端生成一个Session ID,然后保存在本地(默认保存在内存中),访问者的每一次访问,都会将这个Session ID传递到服务器,服务器根据Session ID查找对应的Session,从而知道访问者的身份。可见,Session可以保存更多的数据,并且在关闭浏览器后,Session直到一定时间过后(默认30分钟)才会失效。

Cookie和Session的主要区别是,Cookie保存在客户端,而Session保存在服务器端。所以,如果你想保存大量的数据,并且不特别担心安全问题,那么Session可能是一个较好的选择。如果是保存一些小量的、对安全性要求较高的数据,那么可能Cookie会更好。

Cookie

在这里插入图片描述

Cookie[] cookies = req.getCookies();	//获得cookie
cookie.getName()						//获得cookie中的key	
cookie.getValue()						//获得cookie中的value
Cookie cookie = new Cookie("lastTime",System.currentTimeMillis()+"");	//新建一个cookie
cookie.setMaxAge(60*60);				//设置cookie的有效期
resp.addCookie(cookie);					//响应给客户端一个cookie
  • 一个Cookie只能保存一个信息
  • 一个web站点可以给多个浏览器发送多个cookie,最多存放20个
  • cookie大小限制4kb

删除cookie:

  • 不设置有效期,关闭浏览器,自动失效
  • 设置有效期为0

Session

在这里插入图片描述

HttpSession session = req.getSession();
session.setAttribute("name","吴家昊");
String id = session.getId();
if (session.isNew()) {
    resp.getWriter().write("session创建成功,id:"+id);
}else {
    resp.getWriter().write("session已经在服务器中存在了。id:"+id);
}
//        session创建时做了什么
        Cookie cookie = new Cookie("JSESSIONID",id);
        resp.addCookie(cookie);
<!--  设置session失效时间-->
  <session-config>
    <session-timeout>15</session-timeout>
  </session-config>

JSP

Java Server Pages:Java服务器端页面,和Servlet一样,用于动态Web技术!
在这里插入图片描述

浏览器向服务器发送请求,无论访问什么资源,其实都是在访问Servlet,Jsp也会转化为Java类

JSP本质上就是一个servlet

//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//Jsp服务
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
    throws java.io.IOException, javax.servlet.ServletException {
  1. 判断请求

  2. 内置一些对象

    final javax.servlet.jsp.PageContext pageContext;			//页面上下文
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;				//applicarionContext
    final javax.servlet.ServletConfig config;					//config
    javax.servlet.jsp.JspWriter out = null;						//out
    final java.lang.Object page = this;							//page:当前
    HttpServletRequest request									//请求
    HttpServletResponse response								//响应
    
  3. 输出前增加的代码

    response.setContentType("text/html; charset=UTF-8");		//设置页面响应类型
    pageContext = _jspxFactory.getPageContext(this, request, response,
              null, false, 8192, true);
    _jspx_page_context = pageContext;
    application = pageContext.getServletContext();
    config = pageContext.getServletConfig();
    out = pageContext.getOut();
    _jspx_out = out;
    

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在JSP页面中

    • Java代码原封不动的输出

    • 如果是HTML代码,就会被转换之后再输出

      out.write("<!DOCTYPE html>\r\n");
      out.write("<html lang=\"en\">\r\n");
      out.write("    <head>\r\n");
      

9大内置对象

对象描述
requestHttpServletRequest 接口的实例
responseHttpServletResponse 接口的实例
outJspWriter类的实例,用于把结果输出至网页上
sessionHttpSession类的实例
applicationServletContext类的实例,与应用上下文有关
configServletConfig类的实例
pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page类似于Java类中的this关键字
ExceptionException类的对象,代表发生错误的JSP页面中对应的异常对象
pageContext.setAttribute("name1","小吴");				//保存的数据只在一个页面中有效
session.setAttribute("name2","小吴");					//保存的数据只在一次会话中有效,从打开浏览器到关闭
request.setAttribute("name3","小吴");					//保存的数据只在一次请求中有效,请求转发会携带这个数据
application.setAttribute("name4","小吴");				//保存的数据只在服务器中有效,从打开服务器到关闭服务器

MVC

在这里插入图片描述

  • 24
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值