Java Web 学习笔记2 基础

https://www.bilibili.com/video/av31485560/?p=1

HTTP

请求格式:请求头 | 请求行 | 空行 | 请求实体
响应格式:响应头 | 响应行 | 空行 | 响应实体
流程:建立链接 | 发送请求 | 响应 | 关闭链接
方式:GET POST 等

GET请求数据拼接在请求头的请求地址后,不安全,不限制大小(但地址栏有长度限制),适合少量数据
POST请求数据在请求实体中,安全,适合大量数据


Tomcat

目录结构

  • \bin 存放启动和关闭Tomcat的可执行文件
  • \conf 存放Tomcat的配置文件
  • \lib 存放库文件
  • \logs 存放日志文件
  • \temp 存放临时文件
  • \webapps 存放web应用
  • \work 存放JSP转换后的Servlet文件

Servlet

  1. 创建普通的java类并继承HttpServlet
  2. 重写service方法,在service方法中写逻辑代码
  3. 在webRoot/WEB-INF/web.xml中配置Servlet

Servlet的方法:Service, doGet, doPost

service()

  • 优先选择
  • 可处理GET和POST
  • super.service()再次根据请求方式调用doGet和doPost,没找到则报405

doGet()

  • 处理GET

doPost()

  • 处理POST

Request对象

获取请求数据

Response对象

响应数据到浏览器


请求转发

req.getRequestDispatcher(String path).forward(req,resp);

把表单数据转发给另一个Servlet,浏览器地址不改变
可重复提交的数据,可以使用请求转发

重定向

resp.sendRedirect(String uri);

避免表单数据重复提交
将无法处理的请求交给其它Servlet
浏览器地址改变


Cookie

解决发送的不同请求的数据共享问题
存储在浏览器

  1. 创建Cookie
Cookie c = new Cookie(String name,String value);
  1. 可设置有效时间
    默认临时存储,可设置定时存储
c.setMaxAge(int seconds);
  1. 可设置有效路径
    默认所有请求都附带,除非设置有效路径
c.setPath(String uri);
  1. 响应Cookie给客户端
resp.addCookie(c);
  1. 获取Cookie
Cookie[] cks = req.getCookies();
if(cks!=null){
	for(Cookie c:cks){
		String name = c.getName();
		String value = c.getValue();
	}
}

Session

解决一个用户的不同请求数据共享问题
服务器创建,存储在服务器端
依赖Cookie技术,将Session对象的JSSEIONID通过Cookie存储在浏览器

  1. 创建/获取Session对象(如果SessionID失效,创建新的)
HttpSession hs = req.getSession();
  1. 设置Session存储时间
    默认存储时间30分钟
    在指定时间内Session对象没有使用则销毁,如果使用了则重新计时
hs.setMaxInactiveInterval(int seconds);
  1. Session强制失效
hs.invalidate();
  1. 存储数据
    键是String,值是Object,什么都可以存
hs.setAttribute(String name,Object value);
  1. 获取数据
hs.getAttribute(String name);

ServletContext

不同用户数据共享

  1. 获取ServletContext
ServletContext sc = this.getServletContext();
  1. 数据存储
sc.setAttribute(String name,Object value);
  1. 数据获取
sc.getAttribute(String name);
  1. 获取web.xml数据
sc.getInitParameter(String name);

配置方式:

<context-param>
	<param-name>name</param-name>
	<param-value>value</param-value>
</context-param>
  1. 获取项目根目录下资源绝对路径
String path = sc.getRealPath(String path);
  1. 获取项目根目录下资源的流对象
InputStream is = sc.getResourceAsStream(String path);

只能获取项目根目录下的资源流对象,class文件的流对象需要使用类加载器获取


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值