专栏首页嘘、小点声java学习与应用(4.5)--Cookie、Session、JSP等

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

会话技术: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中存在并取出。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Thinkphp5.0快速入门笔记(2)

    https://www.kancloud.cn/thinkphp/thinkphp5_quickstart

    嘘、小点声
  • java学习与应用(4.6)--过滤器、监听器、JQuery、AJAX、JSON等

    Filter过滤器:客户端在请求服务器资源前和返回响应,会通过过滤器,以拦截请求完成特殊功能。登录校验、统一编码校验等一些通用操作放置到过滤器。 定义类实现接口...

    嘘、小点声
  • java学习与应用(3.6.1)--测试、反射、注解

    Junit单元测试:黑盒测试(不关注内部逻辑,只关注输入输出),白盒测试(关注执行流程,需要些代码)。 测试类使用对应定义的测试类(测试用例,类名为XxxTes...

    嘘、小点声
  • 文本分类实战--从TFIDF到深度学习CNN系列效果对比(附代码)

    数据集中主要包含下面几个文件,可见数据集很小也很简单,只需要使用training.csv文件进行训练我们的文本分类模型,使用testing.csv进行预测并提交...

    机器学习AI算法工程
  • 21个令程序员泪流满面的瞬间

    数据派THU
  • JavaWeb网上商城的设计

    不知道从什么时候起,我爱上了写博客,对之前学得的只是进行反思。写了几天课程设计,代码量量8、9千左右。 然后下面文字是我在博客上复制过来的,说得很详细

    用户1208223
  • 《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具

    虚拟机性能监控与故障处理工具 详解 4.1 概述 本文参考的是周志明的 《深入理解Java虚拟机》 第四章 ,为了整理思路,简单记录一下,方便后期查阅。 JDK...

    搜云库
  • 关于Windows服务器默认远程会话数的说明

    2008原生镜像默认“将远程桌面服务用户限制到单独的远程桌面服务会话 ”禁用,所以是2个,第一个连上了,再连一个还可以

    我爱你的一诺
  • 竟有如此沙雕的代码注释!

    我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路......

    Rocky0429
  • 深入理解Spark 2.1 Core (六):资源调度的原理与源码分析

    http://blog.csdn.net/u011239443/article/details/54098376

    用户1621453

扫码关注云+社区

领取腾讯云代金券