JavaWeb_javaweb核心笔记

回顾

  1. 请求和响应时,哪些情况会出现中文乱码,如何解决
    • 发 post 请求时,request.setCharacterEncoding(“编码”)
    • 响应的乱码: response.setContentType(“text/html;charset=编码”);
  2. 如何在请求转发时共享数据
    • request.getRequestDispatcher("/目标资源路径").forward(request, response);
    • A -> B
    • A: request.setAttribute(“名”, 数据);
    • B: request.getAttribute(“名”)
  3. 请求转发和请求包含的区别
    • forward A -> B 最后由 B 来返回响应结果
    • include A -> B 最后是由 A+B 返回响应的结果
  4. 请求转发和重定向的区别
    • response.sendRedirect("/虚拟目录/目标资源路径");
    • 转发是1次请求,重定向是2次请求
    • 转发地址栏不变,重定向地址栏改变
    • 请求转发可以使用 request 域共享数据,但重定向不能
    • 转发只能是本项目的资源,而重定向可以是任意资源
  5. 常见状态码的作用,304 是什么?Expires 头是什么(过期时间)
    • 200
    • 302 - 重定向
    • 304 - 缓存
    • 400 - 请求参数不正确
    • 404 - 找不到
    • 405 - 方法不支持
    • 500 - 服务器异常 web.xml error-page
  6. 如何返回 html 格式的响应
    • response.getWriter().print("")
  7. 如何返回二进制格式的响应(图片),如何下载
    • response.getOutputStream()
    • 两个响应头
    • Content-Type: application/octet-stream
    • Content-Disposition: attachement;filename=文件名

今日内容

默认情况下,两个http请求之间是没有联系的,无状态

1. cookie (小甜点)

把多个请求间要共享的信息,存储在客户端

response.addCookie(new Cookie(name, value)) - 将 cookie 存入客户端浏览器

request.getCookies[] => Cookie[] - 从浏览器获取上次存储的 cookie(多个)

maxAge - 最大寿命

  • cookie.setMaxAge(-1) 默认值是 -1 ,当浏览器关闭,cookie 被销毁

  • cookie.setMaxAge(3600) 单位是秒, 当1小时后,cookie 被销毁

  • cookie.setMaxAge(0) 表示立刻删除此 cookie

个数限制

  • 每个cookie 大小 4k

cookie 中文解决方法

// 编码
new Cookie(, URLEncoder.encode("中文", "utf-8")); 
// 解码
URLDecoder.decode(cookie.getValue(), "utf-8");

2. session

把多个请求间要共享的信息,存储在服务器端

  • HttpServletRequest 请求域 - 共享数据仅存在一次请求中
  • HttpSession 会话域 - 同一个浏览器与服务器之间多次通信,是一个会话(可以配合重定向用)
  • ServletContext 应用域 - 多个浏览器之间想共享数据,可以使用它来共享数据
request.getSession();   // 查看session有没有,有则直接获取,没有就会创建(相当于 boolean 变量是 true)

request.getSession(false);   // 查看session有没有,有则直接获取, 没有返回null 不会创建session

session.invalidate() 销毁session

session 生命周期(补充)

  • 当第一次调用 request.getSession() 方法时会创建 session

  • 销毁session

    • 主动销毁 session.invalidate() 会删除所有的共享数据,并回收session 占用的内存

    • 被动销毁 当浏览器有一段时间(30分钟)没有发请求了,那么服务器会销毁此session

      • 当用户量较大时,建议缩短过期时间

      • <session-config>
            <session-timeout>20</session-timeout>
        </session-config>
        

    注销 /logout ==> servlet ==> session.invalidate()

3. jsp

java server page 协助 servlet 来生成 html 页面

  • servlet 只负责处理请求,写 java 代码逻辑,生成数据
  • 域 request
  • jsp 页面只负责展示数据

本质是一个 servlet

语法

注释

<%-- 注释内容  --%>

java 代码块

<%  java 代码  %>

表达式

<%= 表达式 %>

声明

<%!  
  成员变量;
  成员方法;
%>

指令

<%@ page contentType="" import="" %>

<%@ include file="页面地址" %>

<%@ taglig %>

9 个隐式对象(以下四个必须掌握)

pageContext 当前页面有效
request 同一个请求就有效
session 同一个会话(多个请求),同一个浏览器有效
application   (ServletContext) 整个程序有效
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值