servlet2
线程安全指标
是否共享数据
多线程对共享数据写操作
servlet不要创建成员变量
serlvet 是单实例的 所以成员变量就会扎起多线程共享
如果service()方法中 对成员变量有直接写操作 不安全
serlvet 非特殊情况不要枷锁
域对象是空的map(在程序运行时共享数据使用)
域对象.setAttribute("key",value);
域对象.getAttribute("key")
域的生效时机和失效实际
request
1,当请求到servlet时,服务会自动创建request域
2.响应式 会自动贤惠req域
3.在一次请求见有限 每次请求都会重创建
需要配合使用请求转发 在多个serlvet共享
会话域
可以在多次请求间生效
对不同的浏览器进程 数据分开存储
session域
需要手动创建
session会长期存在
失效条件:关闭浏览器
超过访问周期
3.通过代码失效
4.与用户绑定
seesion读加写
req.getSession()
session.setAttributte("see","ss")
服务器域
servletContext
全局共享 写入之后 所有请求 所有浏览器都可以用、
req.getServletConetxt()
servletContext.getAttribute("sckey")
servletContext常用对象
getContextPath()获取服务器入口路径
getRealPath("/") 获取服务器实际代码路径
gtInitParameter() 通过web.xml读取子当以公共参数
servletConfig
request
//域对象设置简直对
req.setAttribute()
//指定强转类型
req.setCharacterEncodeing("utf-8")
//取参数
req.getparamter("")
//取字符串数组
req.getParamterValues("hobby")
获取参数map获取参数输入流
//tomcat解析参数是,会阿布值对象放入map中,单个参数也会
req.getParamterMap()
tomcat中允许自己读取请求头 可以自己解析数据
获得请求体部分内容2
获取请求头
req.getHeader()
获取请求报文各种路径
//获取报文中路径的数据
//获取协议
req.getscheme()
req.getServlername()
req.getservlerport
//获得根路径
req.getrequesturl
自定义请求头
req.getHeqader
流只能获取一次
url统一资源定位符
http://localhost:8080/day10/reqDemo
req.getRequestURI()
统一资源标识符
response对象
设置返回数据格式
//resp.setContentType("application/json;charset=utf-8");
//resp.setContentType("text/html;charset=utf-8"); //返页面标签
writer.print("这是一个动态页面<br>");
session对象
会话对象 在同一个用户对此访问贡献数据
req.setAttriblut()
req.getattribute()
re.removeAttribute
req.setAttribute(String name, Object value)
方法的作用范围是请求范围(request scope)。这意味着设置的属性仅在当前请求的生命周期内有效。一旦请求处理完成并响应返回给客户端,这些属性将不再存在。
req.getsession()
session.invalidate()
session失效
浏览器关闭
超市
当缓存使用,把一些常用数据存入session服务器需要时使用,共享数据访问控制
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析