前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习与应用(4.5)--Cookie、Session、JSP等

java学习与应用(4.5)--Cookie、Session、JSP等

作者头像
嘘、小点声
发布2020-02-23 14:39:10
1.3K0
发布2020-02-23 14:39:10
举报
文章被收录于专栏:嘘、小点声嘘、小点声

Cookie

会话技术:Cookie(客户端),Session(服务端)。一次会话中包含多次请求和响应直到一端断开,在一次会话范围内多次请求间共享数据。 Cookie由服务器发送给客户端使用,供客户端多次使用。服务端:创建Cookie(Cookie对象的构造函数传入Cookie信息)、发送Cookie(response.addCookie方法传入参数),接收Cookie(getCookies)。 idea的Settings-->File and Code Templates-->Web-->Java code templates下可以修改Servlet Annoteated Class自动生成的代码以方便自定义自动生成。 服务器发送cookie保存在,响应头的set-cookie下的参数被客户端获取。当客户端再次请求数据时,请求头中的cookie字段添加了之前获取的cookie。 一次请求可以发送多个cookie键值对(多个Cookie对象通过addCookie方法添加),cookie默认在浏览器关闭时被销毁,可设置持久化存储到硬盘时间(Cookie的setMaxAge方法传入整数秒设定存活时间,0为删除,负数为默认方式) cookie在tomcat8之后支持中文数据(直接使用,但特殊字符仍需编码),在tomcat8之前需要编码(可以使用URLEncoder.encode方法decode解码)。cookie范围,默认情况下tomcat服务器多个项目的cookie不能共享(只能在当前虚拟目录下共享),可以使用setPath方法设置为/则可以共享。 不同的tomcat服务器直接的cookie也可以共享,使用setDomain(String path),设置一级域名,则可以在指定一级域名下共享。 浏览器下的cookie大小有限制(4kb,20个),用于存储少量,不太敏感的数据(不安全)。可以用于网页离线的信息设置和同步(不登录情况下的网页偏好设置)。

JSP

JSP(Java Server Page java服务器端页面),可定义html标签和java代码,用于简化书写。 服务器将jsp文件转换为java文件,将java文件编译为字节码文件,字节码文件用于响应客户端,该字节码文件或说jsp实质上是一个Servlet。 html写入java格式为:<% java代码 %>,在selvlet的service方法中。<%! java代码 %>转换后对应到Servlet的成员变量。<%= 代码 %>,转换后为Servlet的service中的输出方法的参数。 JSP的内置对象:request、response、out(字符输出流对象,相比较response.getWriter字符流比out的方法先输出[tomcat响应数据的机制]。建议out一致) jsp使用<% { %> <% } %>等截断方案,将out语句输出直接写为标签。

JSP指令,用于配置JSP页面,导入资源文件,page配置JSP页面,<%@ page contentType="设置MINE类型,设置页面编码,(低级IDE使用pageEncoding)" language="x" import导包,errorPage转到的错误界面,isErrorPage标记为错误界面用于使用内置exception对象%>。 include引入其他页面,<%@include file="" %> taglib导入资源<%@taglib prefix="前缀" uri="标签库"%>,使用时用前缀开头使用标签库中内容。 注释:html:<!-- -->,jsp注释:<%-- --%>。jsp注释不会在转换后发送给客户端,html注释会发送。 内置对象:pageContext,request,session,application,response,page,out,config,exception。在对应的Servlet中定义

Session

Session服务器端会话技术(HTTPSession对象[使用request.getSession方式获取]),在一次会话的多次请求间共享数据,存放在服务器端。方法如setAttribute,getAttribute,removeAttribute。 Session依赖于cookie。客户端从服务器获取Session,并且没有cookie,则服务器端响应头set-cookie包含JSESSIONID字段为一个id(session对象)。其他次访问客户端携带cookie的sessionid请求服务器,服务器对比session是否一致,确保一次会话获取的多个session是同一个。 客户端请求数据时session的是否相同依赖于cookie的存活状态。服务器端重启后session会重建,需要使用session的钝化,将对象序列化到硬盘,session的活化,服务器启动后将保存session加载到内存中。 tomcat的work目录下存储了session,在关闭时自动钝化操作,启动自动活化。idea中无法自动活化。 session的实效时间:服务器关闭时,invalidate方法,session默认失效时间为30分钟(定义在web.xml中)。 session用于存储一次会话的多次请求数据,存储在服务器端,存储任意类型任意大小。session相对安全。

MVC开发模式

MVC开发模式:java的web开发借鉴mvc开发模式,使得程序的设计更合理(弥补jsp的难以维护)(Model View Controller 模型 视图 控制器),服务器中控制器调用模型,返回的数据交给视图展示数据。 Mode使用JavaBean查询数据库,封装对象,Controller使用Servlet获取用户输入调用模型,数据返回给视图,View使用jsp展示数据(jsp中少写入java代码)。MVC使得项目架构复杂。

数据操作:三层架构,使用控制器Servlet处理,控制器调用XXXService.java数据(JavaBean)操作,该数据操作调用UserDao.java。最后控制器重定向地址。 js中使用kk可以转到指定Servlet处理数据。 设计过程中分析输入和输出有助于更好的分析和实现。

EL、JSTL

EL表达式:Expression Language表达式语言。替换和简化jsp页面的java代码编写,也可以在js中使用。格式如 ${ 表达式 }, page的 isELIgnore全局忽略EL表达式, 或使用\转义符忽略单个。

运算:可以使用的运算符为:使用算数运算符,比较运算符,逻辑运算符,empty(判断字符串集合数组对象是否为null且长度是否为0)。 获取值:从域对象中获取值,使用域名.键名方式获取,获取不到则为空字符串。省略域名,直接使用键名获取,则会依次从小到大范围查找域名的键值。 获取自定义的对象值,使用域名和键名获取对象后,使用其属性(getter,setter去掉get和set,首字母小写)获取值(实质会调用getter和setter)。 List集合对象获取后,获取值直接使用[]即可,Map集合使用[]或""通过键获取值。 empty使用格式如${empty str},判断str是否为空或null。not empty取反。 EL表达式中有11个隐式对象,如pageContext获取jsp其他8个内置对象。获取其它隐式对象如request,可以获取虚拟目录contextPath,

JSTL标签(JavaServer Pages Tag Library JSP标准标签库,由apache提供),用标签简化和替换java代码。导入jstl的jar包后,使用taglib引入标签库 if 选择语句标签。使用test属性接收boolean表达式,以确定是否显示标签体内容。test中可以写入EL表达式。该标签没有else,需要则重新写一个标签逻辑。 choose类似switch语句:使用choose内的使用when标签做数字判断,otherwise做其他情况。 foreach标签:使用begin属性开始值,使用end结束值,使用var临时变量,使用step表示步长,varStatus循环状态index容器中元素索引从1开始和count次数,完成重复操作。 使用items容器对象,var临时变量,varStatus循环状态对象的index和count,获取容器或域对象的内容在var中存在并取出。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cookie
  • JSP
  • Session
  • MVC开发模式
  • EL、JSTL
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档